Function datafusion_physical_expr::intervals::cp_solver::propagate_arithmetic
source · pub fn propagate_arithmetic(
op: &Operator,
parent: &Interval,
left_child: &Interval,
right_child: &Interval
) -> Result<(Option<Interval>, Option<Interval>)>
Expand description
This function refines intervals left_child
and right_child
by applying
constraint propagation through parent
via operation. The main idea is
that we can shrink ranges of variables x and y using parent interval p.
Assuming that x,y and p has ranges [xL, xU], [yL, yU], and [pL, pU], we apply the following operations:
- For plus operation, specifically, we would first do
- [xL, xU] <- ([pL, pU] - [yL, yU]) ∩ [xL, xU], and then
- [yL, yU] <- ([pL, pU] - [xL, xU]) ∩ [yL, yU].
- For minus operation, specifically, we would first do
- [xL, xU] <- ([yL, yU] + [pL, pU]) ∩ [xL, xU], and then
- [yL, yU] <- ([xL, xU] - [pL, pU]) ∩ [yL, yU].