|
This should be evaluated before using any of the following operations.
|
|
|
:: ufb | this parameter is not used except for type checking
| -> ra | | -> (b, b) | | Convert from the associated 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 associated interval type.
(The types are determined by the given example function.)
|
|
|
|
A linear ordering on basic functions, which can be syntactic and rather arbitrary.
|
|
|
:: Int | number of decimal digits to show
| -> Bool | whether to show granularity
| -> Bool | whether to show internal structure
| -> ufb | | -> String | |
|
|
|
Check internal consistency of the basic function, typically absence of NaN.
|
|
|
:: String | indentification of caller location for easier debugging
| -> ufb | | -> ufb | | Check internal consistency of the basic function and report problem if any.
|
|
|
|
Get the granularity of the coefficients inside this basic function.
|
|
|
|
|
|
|
Get the degree of this basic function.
If the function is a polynomial, this function should
return its degree.
|
|
|
Decrease the degree of a basic function, rounding pointwise upwards.
|
|
|
Get the term size of this basic function.
If the function is a polynomial, this function should
return the number of terms in the polynomial.
|
|
|
Decrease the size of this basic function, rounding pointwise upwards.
|
|
getVariables :: ufb -> [varid] | Source |
|
Get a list of all variables featured in this basic function.
|
|
|
Construct a constant basic function.
|
|
constEncl :: (b, b) -> (ufb, ufb) | Source |
|
Construct a constant basic enclosure (negated lower bound, upper bound).
|
|
|
:: b | value at 0
| -> Map varid b | ascent of each base vector
| -> ufb | | Construct an affine basic function.
|
|
|
|
Find an upper bound of a basic function over [-1,1]^n.
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> ufb | f1 | -> ufb | f2 | -> ufb | | Approximate the function max(f1,f2) from above.
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> ufb | f1 | -> ufb | f2 | -> ufb | | Approximate the function min(f1,f2) from above.
|
|
|
|
Pointwise exact negation of a basic function
|
|
scaleUp :: b -> ufb -> ufb | Source |
|
Multiply a basic function by a scalar, rounding upwards.
|
|
|
:: Int | maximum polynomial degree
| -> Int | maximum term count
| -> ra | | -> ufb | | -> ufb | | Multiply a basic function by an approximation of a scalar,
rounding upwards.
|
|
|
(+^) :: ufb -> ufb -> ufb | Source |
|
Pointwise upwards rounded addition
|
|
(-^) :: ufb -> ufb -> ufb | Source |
|
Pointwise upwards rounded subtraction
|
|
(*^) :: ufb -> ufb -> ufb | Source |
|
Pointwise upwards rounded multiplication
|
|
|
:: Int | maximum polynomial degree
| -> Int | maximum term count
| -> (ufb, ufb) | | -> (ufb, ufb) | | -> (ufb, ufb) | | Enclosure multiplication
IMPORTANT: enclosure = (negated lower bound, upper bound)
|
|
|
|
Approximate the function 1/f from above, assuming
f does not hit zero in the unit domain.
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> EffortIndex | | -> (ufb, ufb) | enclosure of f
| -> (ufb, ufb) | | Approximate the reciprocal of an enclosure, assuming
f does not hit zero in the unit domain.
IMPORTANT: enclosure = (negated lower bound, upper bound)
|
|
|
evalUp :: boxb -> ufb -> b | Source |
|
Evaluate a basic function at a point rounding upwards
using a basic number for both the point and the result.
|
|
evalApprox :: boxra -> ufb -> ra | Source |
|
Safely evaluate a basic function at a point using a real number approximation
for both the point and the result.
|
|
partialEvalApproxUp :: boxra -> ufb -> ufb | Source |
|
Partially evaluate a basic function at a lower-dimensional point
given using a real number approximation.
Approximate the resulting function from above.
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> ufb | function f
| -> varid | variable v to substitute in f
| -> ufb | function f_v to substitute for v
that maps [-1,1] into [-1,1]
| -> ufb | pointwise upper bound of f[v |-> f_v]
| Compose two basic functions, rounding downwards and upwards,
assuming f_v ranges within the domain [-1,1].
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> ufb | function f
| -> varid | variable v to substitute in f
| -> (ufb, ufb) | enclosure of a function f_v to substitute for v
that maps [-1,1] into [-1,1]
| -> (ufb, ufb) | enclosure of f[v |-> f_v]
| Compose two basic functions, rounding downwards and upwards,
assuming f_v ranges within the domain [-1,1].
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size 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 | pointwise upper bound of f[v |-> f_v]
| Substitute several variables in a basic function with other basic functions,
rounding downwards and upwards, assuming each f_v ranges
within the domain [-1,1].
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> ufb | function f
| -> Map varid (ufb, ufb) | variables to substitute and for each variable v,
enclosure of a function f_v to substitute for v
that maps [-1,1] into [-1,1]
| -> (ufb, ufb) | enclosure of f[v |-> f_v]
| Substitute several variables in a basic function with other basic functions,
rounding downwards and upwards, assuming each f_v ranges
within the domain [-1,1].
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> EffortIndex | how hard to try when approximating exp as a polynomial
| -> (ufb, ufb) | f | -> (ufb, ufb) | | Approximate sqrt(f) for enclosures.
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> EffortIndex | how hard to try when approximating exp as a polynomial
| -> (ufb, ufb) | f | -> (ufb, ufb) | | Approximate exp(f) for enclosures.
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> EffortIndex | how hard to try when approximating log as a polynomial
| -> (ufb, ufb) | f | -> (ufb, ufb) | | Approximate log(f) for enclosures.
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> EffortIndex | how hard to try when approximating sin as a polynomial
| -> (ufb, ufb) | f | -> (ufb, ufb) | | Approximate sin(f) for enclosures,
assuming the range of f is within [-pi2,pi2].
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> EffortIndex | how hard to try when approximating cos as a polynomial
| -> (ufb, ufb) | f | -> (ufb, ufb) | | Approximate cos(f) for enclosures,
assuming the range of f is within [-pi2,pi2].
|
|
|
|
:: Int | max degree for result
| -> Int | max approx size for result
| -> EffortIndex | how hard to try when approximating cos as a polynomial
| -> (ufb, ufb) | f | -> (ufb, ufb) | | Approximate atan(f) for enclosures.
|
|
|
|
:: varid | variable to integrate by
| -> ufb | f | -> (ufb, ufb) | | Approximate the primitive function of f from below and from above.
|
|
|
|
:: [varid] | dimensions to include in the measuring domain;
have to include all those present in f
| -> ufb | f | -> b | | Measure the volume between a function
and the zero hyperplane on the domain [-1,1]^n.
|
|