Returns an integer with the same sign as this expression.
Returns an integer with the same sign as this expression.
Returns an asbolute approximation to this expression as a BigDecimal that is accurate up to +/- 10^-digits.
Returns an asbolute approximation to this expression as a BigDecimal that is accurate up to +/- 10^-digits.
Returns an upper bound on the absolute value of this expression as a bit bound.
Returns an upper bound on the absolute value of this expression as a bit bound.
Returns the BFMSS separation bound.
Returns the BFMSS separation bound.
Returns a list of the children of this expression.
Returns a list of the children of this expression. A child is a
sub-expression required by this expression. For instance, Add
has 2
children, the left-hand and right-hand side sub-expressions. A numeric
literal expression, such as ConstantDouble
or ConstantRational
has
no children.
Returns a bound on the degree of this expression.
Returns a bound on the degree of this expression.
A set of flags we can quickly compute for an Algebraic expression.
Returns the bound for zbf
, using a cached value if it is available.
Returns the bound for zbf
, using a cached value if it is available.
Returns the Li & Yap separation bound.
Returns the Li & Yap separation bound.
Returns a lower bound on the absolute value of this expression as a bit bound.
Returns a lower bound on the absolute value of this expression as a bit bound.
TODO: We could do better here wrt to addition (need a fastSignum: Option[Int])
Returns a separation bound for this expression as a bit bound.
Returns a separation bound for this expression as a bit bound. A separation bound is a lower-bound on the value of this expression that is only valid if this expression is not 0. This bound can thus be used to determine if this value is actually 0 and, if not, the sign, by simply approximating the expression with enough accuracy that it falls on one side or the other of the separation bound.
Unary expressions contain only a single child expression.