
:: String  indentification of caller location for easier debugging
 > ufb   > ufb   Check internal consistency of the function and report problem if any.










Construct a constant function.



:: b  value at 0
 > Map varid b  ascent of each base vector
 > ufb   Construct an affine function.



scale :: b > ufb > (ufb, ufb)  Source 

Multiply a function by a scalar,
rounding downwards and upwards.


scaleApprox :: ra > ufb > (ufb, ufb)  Source 

Multiply a function by an approximation of a scalar,
rounding downwards and upwards.


scaleApproxDown :: ra > ufb > ufb  Source 

Multiply a function by an approximation of a scalar,
rounding downwards.


scaleApproxUp :: ra > ufb > ufb  Source 

Multiply a function by an approximation of a scalar,
rounding upwards.



Get the degree of this particular function.
If the function is a polynomial, this function should
return its degree.


reduceDegree :: Int > ufb > (ufb, ufb)  Source 

Decrease the degree of function approximation,
rounding pointwise downwards and upwards.



Decrease the degree of function approximation, rounding pointwise downwards.



Decrease the degree of function approximation, rounding pointwise upwards.



:: varid  variable to integrate by
 > ufb  p(x)
 > (ufb, ufb)   Approximate the integral of p (with 0 at 0) from below and from above.




:: varid  variable to integrate by
 > ufb  p(x)
 > ufb   Approximate the integral of p (with 0 at 0) from below.




:: varid  variable to integrate by
 > ufb  p(x)
 > ufb   Approximate the integral of p (with 0 at 0) from above.




:: [varid]  axes to include in the measuring domain
 > ufb   > (b, b)   Measure the volume between a function
and the zero hyperplane on the domain [1,1]^n.




Find an upper bound of the function over [1,1]^n.



Find a lower bound of the function over [1,1]^n.



:: Int  max degree for result
 > ufb  p(x)
 > (ufb, ufb)   Approximate the function max(0,p(x)) from below and from above.




:: Int  max degree for result
 > EffortIndex   > ufb  p(x)
 > (ufb, ufb)   Approximate the function 1/p(x) from below and from above.




Approximate the function 1/p(x) from below.



Approximate the function 1/p(x) from above.



:: Int  max degree for result
 > ufb  p_1(x)
 > ufb  p_2(x)
 > (ufb, ufb)   Approximate the function max(p_1(x),p_2(x)) from below and from above.




:: Int  max degree for result
 > ufb  p_1(x)
 > ufb  p_2(x)
 > ufb   Approximate the function max(p_1(x),p_2(x)) from below.




:: Int  max degree for result
 > ufb  p_1(x)
 > ufb  p_2(x)
 > ufb   Approximate the function max(p_1(x),p_2(x)) from above.




:: Int  max degree for result
 > ufb  p_1(x)
 > ufb  p_2(x)
 > (ufb, ufb)   Approximate the function min(p_1(x),p_2(x)) from below and from above.




:: Int  max degree for result
 > ufb  p_1(x)
 > ufb  p_2(x)
 > ufb   Approximate the function min(p_1(x),p_2(x)) from below.




:: Int  max degree for result
 > ufb  p_1(x)
 > ufb  p_2(x)
 > ufb   Approximate the function min(p_1(x),p_2(x)) from above.




:: Int  max degree for result
 > EffortIndex  how hard to try when approximating exp as a polynomial
 > ufb  p(x)
 > (ufb, ufb)   Approximate sqrt(p(x)) from below and from above.




:: Int  max degree for result
 > EffortIndex  how hard to try when approximating exp as a polynomial
 > ufb  p(x)
 > (ufb, ufb)   Approximate exp(p(x)) from below and from above.




:: Int  max degree for result
 > EffortIndex  how hard to try when approximating log as a polynomial
 > ufb  p(x)
 > (ufb, ufb)   Approximate log(p(x)) from below and from above.




:: Int  max degree for result
 > EffortIndex  how hard to try when approximating sin as a polynomial
 > ufb  p(x)
 > (ufb, ufb)   Approximate sin(p(x)) from below and from above,
assuming the range of p is within [pi2,pi2].




:: Int  max degree for result
 > EffortIndex  how hard to try when approximating cos as a polynomial
 > ufb  p(x)
 > (ufb, ufb)   Approximate cos(p(x)) from below and from above,
assuming the range of p is within [pi2,pi2].




:: Int  max degree for result
 > EffortIndex  how hard to try when approximating cos as a polynomial
 > ufb  p(x)
 > (ufb, ufb)   Approximate atan(p(x)) from below and from above.



eval :: boxb > ufb > (b, b)  Source 

Evaluate at a point, rounding upwards and downwards.


evalDown :: boxb > ufb > b  Source 

Evaluate at a point, rounding downwards.


evalUp :: boxb > ufb > b  Source 

Evaluate at a point, rounding downwards.


evalApprox :: boxra > ufb > ra  Source 

Safely evaluate at a point using a real number approximation
for both the point and the result.


partialEvalApprox :: boxra > ufb > (ufb, ufb)  Source 

Partially evaluate at a lowerdimensional point
given using a real number approximation.
Approximate the resulting function from below and from above.


partialEvalApproxDown :: boxra > ufb > ufb  Source 

Partially evaluate at a lowerdimensional point
given using a real number approximation.
Approximate the resulting function from below.


partialEvalApproxUp :: boxra > ufb > ufb  Source 

Partially evaluate at a lowerdimensional point
given using a real number approximation.
Approximate the resulting function from above.



:: Int  max degree for result
 > ufb  function f
 > Map varid ufb  variables to substitute and for each variable v,
function f_v to substitute for v
that maps [1,1] into [1,1]
 > (ufb, ufb)  upper and lower bounds of f[v > f_v]
 Compose two functions, rounding upwards and downwards
provided each f_v ranges within the domain [1,1].




:: Int  max degree for result
 > ufb  function f1
 > Map varid ufb  variables to substitute and for each variable v,
function f_v to substitute for v
that maps [1,1] into [1,1]
 > ufb  a lower bound of f1.f2
 Compose two functions, rounding downwards
provided each f_v ranges within the domain [1,1].




:: Int  max degree for result
 > ufb  function f1
 > Map varid ufb  variables to substitute and for each variable v,
function f_v to substitute for v
that maps [1,1] into [1,1]
 > ufb  an upper bound of f1.f2
 Compose two functions, rounding upwards
provided each f_v ranges within the domain [1,1].




:: ufb  this parameter is not used except for type checking
 > ra   > (b, b)   Convert from the interval type to the base type.
(The types are determined by the given example function.)




:: ufb  this parameter is not used except for type checking
 > (b, b)   > ra   Convert from the base type to the interval type.
(The types are determined by the given example function.)

