ib      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG H I J K L M N O P Q R S TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY Z [ \ ] ^ _ ` a )4(internal) polynomial datatype and simple functions portable experimentalmik@konecny.aow.czEA polynomial represented by its coefficients it the Chebyshev basis. 8The polynomials are never to be used outside the domain [-1,1]^n. GAll operations are rounded in such a way that the resulting polynomial  is a point-wise upper or lower bound of the exact result. 4Inspect all terms of the polynomial and return the ' degree of the highest degree term. 4If the polynomial is constant, return the constant,  otherwise return Nothing.  Make a basic x* polynomial for a given variable number.  Construct an affine polynomial. 1Convert a polynomial to a string representation, " using the ordinary x^n basis. "number of decimal digits to show whether to show granularity 8show the polynomial also in its native Chebyshev basis @conversion of polynomials from Chebyshev basis to the X^n basis E(not exact - suffering from rounding in the coefficient conversions) polynomial in Chebyshev basis 7approxition of the equivalent polynomial in X^n basis 2conversion of one Chebyshev term to the X^n basis 7a Chebyshev term represented by the Chebyshev degrees + for each variable in the term 7the polynomial equivalent to the given Chebyshev term * (using integer coefficients) EChebyshev polynomials expressed as associative lists power -> coeff VChebyshev polynomials expressed as lists of integer coefficients for powers 0,1,2... bcdef ghij   0(internal) evaluation of polynomials at a point portable experimentalmik@konecny.aow.czPEvaluate a polynomial at a point, consistently rounding upwards and downwards. 6Evaluate a polynomial at a real number approximation NSubstitute several variables in a polynomial with real number approximations, $ rounding downwards and upwards. :(internal) uniformly roudned polynomial size reductions portable experimentalmik@konecny.aow.czQConvert a polynomial to a lower-order one that is dominated by (resp. dominates) " it closely on the domain [-1,1]. new maximal order ,lower and upper bounds with limited degree klmn9(internal) uniformly roudned pointwise ring operations portable experimentalmik@konecny.aow.cz Negate a polynomial exactly.  AAdd a constant to a polynomial, rounding downwards and upwards. !6Add two polynomials, rounding downwards and upwards. ";Multiply two polynomials, rounding downwards and upwards. Nlower and upper bounds on the product and an upper bound on their difference #CMultiply a polynomial by a scalar rounding downwards and upwards. Nlower and upper bounds on the product and an upper bound on their difference $AMultiply a polynomial by itself, rounding downwards and upwards. o pq!rstu"vw#xy$  !"#$  !"#$'(internal) derivative of polynomials portable experimentalmik@konecny.aow.cz%8Differentiate a polynomial using one of its variables.  variable to differentiate over &8Differentiate a polynomial using one of its variables.  variable to differentiate over %&%&%&5(internal) bounds of single and multiple polynomials portable experimentalmik@konecny.aow.cz '.Find an upper bound on a polynomial over the  unit domain [-1,1]^n. EQuick method that does not converge to exact result with increasing  effort index. how hard to try (-Find a lower bound on a polynomial over the  unit domain [-1,1]^n. EQuick method that does not converge to exact result with increasing  effort index. how hard to try );Find both lower and upper bounds on a polynomial over the  unit domain [-1,1]^n. EQuick method that does not converge to exact result with increasing  effort index. how hard to try *.Find an upper bound on a polynomial over the  unit domain [-1,1]^n. how hard to try +-Find a lower bound on a polynomial over the  unit domain [-1,1]^n. EQuick method that does not converge to exact result with increasing  effort index. how hard to try ,;Find both lower and upper bounds on a polynomial over the  unit domain [-1,1]^n. EQuick method that does not converge to exact result with increasing  effort index. how hard to try -6Find bounds on a polynomial over the unit domain [-1,1]^n. 'Fast but inaccurate method, in essence 6 taking the maximum of the upper affine reduction. how hard to try .3Find a close upper bound of a polynomial over the  unit domain [-1,1]^n. =Approximates all local extrema and computes their maximum. #how hard to try looking for peaks /PApproximate from below and from above the pointwise maximum of two polynomials maximum polynomial degree maximum term count 0PApproximate from below and from above the pointwise minimum of two polynomials maximum polynomial degree maximum term count 1@Approximate the function max(0,p(x)) by a polynomial from below  and from above. maximum polynomial degree maximum term count 2 A version of 1 using a cubic approximation. maximum polynomial degree maximum term count 3FMultiply a polynomial by an enclosure (with non-negated lower bound). '()*+,-./z{|}0~123 '()*+,-./0123 '()*+,-./01235(internal) field operations applied to polynomials portable experimentalmik@konecny.aow.cz 4567maximum polynomial degree maximum term count 8maximum polynomial degree maximum term count 9maximum polynomial degree maximum term count :#Multiply an enclosure by a scalar E assuming the enclosure is non-negative on the whole unit domain. ratio to scale by ;#Multiply an enclosure by a scalar. maximum polynomial degree maximum term count ratio to scale by <maximum polynomial degree maximum term count =DMultiply a polynomial by a scalar interval, returning an enclosure. maximum polynomial degree maximum term count 1lower and upper bounds on the ratio to scale by >5Evaluate the Chebyshev polynomials of the first kind N applied to a given polynomial, yielding a list of polynomial enclosures. max degree for result max approx size for result .bounds of a polynomial enclosure to evaluate ?/Multiply a polynomial by an enclosure using min/max maximum polynomial degree maximum term count 456789:;<=>? 456789:;<=>? 456789:;<=>?N(internal) basic operations for primitive polynomial inner-rounded enclosures portable experimentalmik@konecny.aow.cz@ABCmaximum polynomial degree maximum term count Dmaximum polynomial degree maximum term count Emaximum polynomial degree maximum term count F#Multiply an enclosure by a scalar E assuming the enclosure is non-negative on the whole unit domain. ratio to scale by @ABCDEF@ABCDEF@ABCDEF &(internal) composition of polynomials portable experimentalmik@konecny.aow.czGOCompose a polynomial and an enclosure, producing a correcly rounded enclosure, - assuming the second polynomial maps [-1,1] into [-1,1]. max degree for result max approx size for result  f variable v to substitute in f enclosure of a function f_v to substitute for v  that maps [-1,1] into [-1,1] lower bound and upper bound H*Compose two polynomials, rounding upwards - provided the second polynomial maps [-1,1] into [-1,1]. max degree for result max approx size for result Yvariables to substitute and the enclosures to substitute for each of them respectively 'lower bound (negated) and upper bound GHGHGH ((internal) integration of polynomials portable experimentalmik@konecny.aow.czIDApproximate from below and from above the integral of a polynomial. ;Based on the following formulas for Chebyshev polynomials:   \int T_n(x)dx = . T_{n+1}(x)/2(n+1) - T_{n-1}(x)/2(n-1)   \int T_1(x)dx =  T_2(x)/4 + 1/4  \int T_0(x)dx =  T_1(x) variable to integrate by III #(internal) division of polynomials portable experimentalmik@konecny.aow.czJ6Approximate the pointwise reciprocal of a polynomial 4 by another polynomial from below and from above  using the tau method  as described in [Mason & Handscomb 2003, p 62]. maximum polynomial degree maximum term count minimum approx degree degree of tau expansion JJJ #(internal) division of polynomials portable experimentalmik@konecny.aow.czK?Approximate the pointwise reciprocal of a positive polynomial 4 by another polynomial from below and from above  using the tau method  as described in [Mason & Handscomb 2003, p 62]. maximum polynomial degree maximum term count minimum approx degree degree of tau expansion KKK 9(internal) elementary functions applied to polynomials portable experimentalmik@konecny.aow.czLAApproximate the pointwise square root of a polynomial enclosure. maximum polynomial degree maximum term count !for calls to other ER functions how many times to iterate MAApproximate the pointwise exponential of a polynomial enclosure. maximum polynomial degree maximum term count -used to derive minimum approx Taylor degree N9Approximate the pointwise integer power of an enclosure. maximum polynomial degree maximum term count !lower (negated) and upper bound O>Approximate the pointwise natural logarithm of an enclosure. maximum polynomial degree maximum term count ?? P0Approximate the pointwise sine of an enclosure. %Assuming the polynomial range is [-pi2, pi2]. maximum polynomial degree maximum term count <how hard to try (determines Taylor degree and granularity) Q2Approximate the pointwise cosine of an enclosure. %Assuming the polynomial range is [-pi2, pi2]. maximum polynomial degree maximum term count <how hard to try (determines Taylor degree and granularity) Rmaximum polynomial degree maximum term count  is sine ? $how far to go in the Taylor series *degree of the term now being constructed 3the coefficient of the term now being constructed MBounds for the series result and information about the first discarded term, C from which some bound on the uniform error can be deduced. S:Approximate the pointwise arcus tangens of an enclosure. maximum polynomial degree maximum term count how far to go in the Euler' s series LMNOPQRSLMNOPQRSLMNOPQRS9(internal) elementary functions applied to polynomials portable experimentalmik@konecny.aow.czTmaximum polynomial degree maximum term count !for calls to other ER functions how many times to iterate TTT hierarchical domain partitions portable experimentalmik@konecny.aow.cz UV+value splitter function - parameters are: : depth, domain of value, value, variable to split by, 4 point to split at; returns the two split values WX1 The root of the tree often represents the whole R^n.  Each node splits the parent's space into two using K a specified variable (ie direction) and an optional splitting point. A By default, a split is taken at the point defined by the method  RA.bisect. YZdirection to split in [point that the split is at \%the half towards -Infty in split dir ]%the half towards +Infty in split dir ^_depth of this node `domain avalue estimate bcde variable x to split by point in domain of x to split at domain to lookup x in if tree's domain does not have x f:Apply a function to all values, thus creating a new tree. g:Apply a function to all values, thus creating a new tree. CApply a function to all values, thus creating a list of new trees. hKPerform a given action on all branches of a bisection tree, left to right. 1 (optionally now going below the given depth) iKPerform a given action on all branches of a bisection tree, left to right. 1 (optionally now going below the given depth) jJPerform a given action on all branches of a bisection tree, left to right 3 with the option of further branching the tree. 1 (optionally now going below the given depth) kl9Ensure both trees have equal structure at the top level: = either they are all leaves or they all split at the same - direction with the same splitting point. *Also, unify the domains at the top level. m<Ensure all the trees have equal structure at the top level: = either they are all leaves or they all split at the same - direction with the same splitting point. *Also, unify the domains at the top level. nDCombine two bisection trees using a given value combining function. @ Where necessary, leaves are split so that the resulting tree' s structure I is the union of the two argument tree structures. Such splitting of = values in leaves is performed by the provided functions. $value splitter function for tree 1 $value splitter function for tree 2 )partial function to combine values with oAreturn all values in leafs (except those within some CE subtree) 3 as a list (from the leftmost to the rightmost) pAreturn all values in leafs (except those within some CE subtree) 3 as a list (from the leftmost to the rightmost) q#linear ordering on bisection trees rGlookup all maximal subtrees whose domain intersect the given rectangle #domain to look up within the tree &Update a value on a given sub-domain, . bisecting the tree if necessary to obtain / a better fit for the domain, but not below  a given depth limit. ?With multiple domain dimensions, split the domain according to  .  depth limit domain to update on 6how to update values that intersect the above domain UVWXYZ[\]^_`abcdefghijklmnopqr X^Y_`a_`Z[\]WVUbcklmdefghijnopqrUVWX ^Y_`a_`Z[\]YZ[\]^_`abcdefghijklmnopqr;abstract zipping of domain partitions used for integration portable experimentalmik@konecny.aow.czs;Transform a bunch of bisection trees over the same domain  by  integrating" them in a very abstract sense. F The trees are unified in their splitting patterns in the process. ? By supplying certain parameters, this function can in fact F perform numerical integration of piece-wise polynomial functions. It can be also viewed as a zipping+folding$ operator over bisection trees that \ generates another bunch of bisection trees, synchronously traversing the original trees J from a certain point on a selected axis outwards in both directions,  carrying some data along.  variable x) (ie axis or direction) to integrate in origin in terms of variable x 'support, ie the domain on which to zip H (automatically extended to include origin when projected to x) !what to do outside the support, 2 possibly being passed values from left/right & when leaving the support should a leaf be split? -integrator for a leaf containing the origin ?integrator over a leaf that sees the origin towards -infinity ?integrator over a leaf that sees the origin towards +infinity input functions output functions 4The number of output functions does not have to be 7 the same as the number of input functions. t<Zip a list of bisection trees in synchrony but do something 2 else inside and not inside a given subdomain. GFurther splitting at default points will be done up to the given depth A in an attempt to separate the subdomain as well as possible. BIf the subdomain is not properly isolated by the splitting at the P maximum depth, splits are made at irregular points to ensure full isolation  of the subdomain.  depth limit  subdomain sd what to do with values inside sd what to do with values outside sd but touching it what to do with values outside sd ststst8class abstracting imprecise function arithmetic on [-1,1]^n portable experimentalmik@konecny.aow.czMuv Approximate sqrt(f) for enclosures. max degree for result max approx size for result 8how hard to try when approximating exp as a polynomial  fw Approximate exp(f) for enclosures. max degree for result max approx size for result 8how hard to try when approximating exp as a polynomial  fx Approximate log(f) for enclosures. max degree for result max approx size for result 8how hard to try when approximating log as a polynomial  fy Approximate sin(f) for enclosures,  assuming the range of f is within [-pi2,pi2]. max degree for result max approx size for result 8how hard to try when approximating sin as a polynomial  fz Approximate cos(f) for enclosures,  assuming the range of f is within [-pi2,pi2]. max degree for result max approx size for result 8how hard to try when approximating cos as a polynomial  f{ Approximate atan(f) for enclosures. max degree for result max approx size for result 8how hard to try when approximating cos as a polynomial  f|},Construct a constant basic inner enclosure _ (negated lower bound fn, upper bound fn, is enclosure definitely anticonsistent?) D from bounds given as coeffients (lower bound, upper bound).  An inner enclosure (lnI,hI) is anticonsistent  iff  hI + lnI <= 0-, ie upper bound is never above lower bound. ~Inner enclosure addition. maximum polynomial degree maximum term count  Inner enclosure multiplication. maximum polynomial degree maximum term count ;Approximate the reciprocal of an inner enclosure, assuming  f! is positive in the unit domain. max degree for result max approx size for result >Compose two basic functions, rounding downwards and upwards,  assuming f_v ranges within the domain [-1,1]. max degree for result max approx size for result  function f  variable v to substitute in f  inverse enclosure of a function f_v to substitute for v  that maps [-1,1] into [-1,1] inverse enclosure of  f[v |-> f_v] NSubstitute several variables in a basic function with other basic functions, 6 rounding downwards and upwards, assuming each f_v ranges  within the domain [-1,1]. max degree for result max approx size for result  function f .variables to substitute and for each variable v - inverse enclosure of a function f_v to substitute for v  that maps [-1,1] into [-1,1] inverse enclosure of  f[v |-> f_v]  Approximate sqrt(f) for enclosures. max degree for result max approx size for result 8how hard to try when approximating exp as a polynomial  f Approximate exp(f) for enclosures. max degree for result max approx size for result 8how hard to try when approximating exp as a polynomial  f Approximate log(f) for enclosures. max degree for result max approx size for result 8how hard to try when approximating log as a polynomial  f Approximate sin(f) for enclosures,  assuming the range of f is within [-pi2,pi2]. max degree for result max approx size for result 8how hard to try when approximating sin as a polynomial  f Approximate cos(f) for enclosures,  assuming the range of f is within [-pi2,pi2]. max degree for result max approx size for result 8how hard to try when approximating cos as a polynomial  f Approximate atan(f) for enclosures. max degree for result max approx size for result 8how hard to try when approximating cos as a polynomial  fOConstruct a constant basic enclosure (negated lower bound fn, upper bound fn) E from bounds given as coeffients (lower bound, upper bound). %Enclosure and base constant addition >IMPORTANT: enclosure = (NEGATED lower bound, upper bound) maximum polynomial degree maximum term count %Enclosure scaling by a base constant >IMPORTANT: enclosure = (NEGATED lower bound, upper bound) maximum polynomial degree maximum term count Enclosure addition >IMPORTANT: enclosure = (NEGATED lower bound, upper bound) maximum polynomial degree maximum term count Enclosure multiplication >IMPORTANT: enclosure = (NEGATED lower bound, upper bound) maximum polynomial degree maximum term count 5Approximate the reciprocal of an enclosure, assuming  f' does not hit zero in the unit domain. >IMPORTANT: enclosure = (negated lower bound, upper bound) max degree for result max approx size for result  enclosure of f >Compose two basic functions, rounding downwards and upwards,  assuming f_v ranges within the domain [-1,1]. max degree for result max approx size for result  function f  variable v to substitute in f enclosure of a function f_v to substitute for v  that maps [-1,1] into [-1,1]  enclosure of  f[v |-> f_v] NSubstitute several variables in a basic function with other basic functions, 6 rounding downwards and upwards, assuming each f_v ranges  within the domain [-1,1]. max degree for result max approx size for result  function f .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]  enclosure of  f[v |-> f_v] HThis should be evaluated before using any of the following operations. <Convert from the associated interval type to the base type. B (The types are determined by the given example function.) 5this parameter is not used except for type checking =Convert from the base type to the associated interval type. B (The types are determined by the given example function.) 5this parameter is not used except for type checking TA linear ordering on basic functions, which can be syntactic and rather arbitrary. "number of decimal digits to show whether to show granularity $whether to show internal structure LCheck internal consistency of the basic function, typically absence of NaN. LCheck internal consistency of the basic function and report problem if any. 9indentification of caller location for easier debugging DGet the granularity of the coefficients inside this basic function. 'Get the degree of this basic function. 6If the function is a polynomial, this function should  return its degree. EDecrease the degree of a basic function, rounding pointwise upwards. *Get the term size of this basic function. 6If the function is a polynomial, this function should 7 return the number of terms in the polynomial. FDecrease the size of this basic function, rounding pointwise upwards. =Get a list of all variables featured in this basic function. &Construct a constant basic function. %Construct an affine basic function.  value at 0 ascent of each base vector -Find an upper bound of a basic function over [-1,1]^n. -Find an upper bound of a basic function over [-1,1]^n. -Find an upper bound of a basic function over [-1,1]^n. Approximate the function  max(f1,f2) from above. max degree for result max approx size for result  f1 f2Approximate the function  min(f1,f2) from above. max degree for result max approx size for result  f1 f2Approximate the function  max(f1,f2) from below. max degree for result max approx size for result  f1 f2Approximate the function  min(f1,f2) from below. max degree for result max approx size for result  f1 f2.Pointwise exact negation of a basic function 4Add a scalar to a basic function, rounding upwards. 9Multiply a basic function by a scalar, rounding upwards. <Multiply a basic function by an approximation of a scalar,  rounding upwards. maximum polynomial degree maximum term count $Pointwise upwards rounded addition 'Pointwise upwards rounded subtraction *Pointwise upwards rounded multiplication Approximate the function 1/f from above, assuming  f' does not hit zero in the unit domain. 7Evaluate a basic function at a point rounding upwards @ using a basic number for both the point and the result. 9Evaluate a basic function at a point rounding downwards @ using a basic number for both the point and the result. NSafely evaluate a basic function at a point using a real number approximation + for both the point and the result. BPartially evaluate a basic function at a lower-dimensional point 1 given using a real number approximation. 7 Approximate the resulting function from above. 0Compose two basic functions, rounding upwards,  assuming f_v ranges within the domain [-1,1]. max degree for result max approx size for result  function f  variable v to substitute in f  function f_v to substitute for v  that maps [-1,1] into [-1,1] pointwise upper bound of  f[v |-> f_v] NSubstitute several variables in a basic function with other basic functions, ( rounding upwards, assuming each f_v ranges  within the domain [-1,1]. max degree for result max approx size for result  function f .variables to substitute and for each variable v,  function f_v to substitute for v  that maps [-1,1] into [-1,1] pointwise upper bound of  f[v |-> f_v] 2Compose two basic functions, rounding downwards,  assuming f_v ranges within the domain [-1,1]. max degree for result max approx size for result  function f  variable v to substitute in f  function f_v to substitute for v  that maps [-1,1] into [-1,1] pointwise lower bound of  f[v |-> f_v] NSubstitute several variables in a basic function with other basic functions, * rounding downwards, assuming each f_v ranges  within the domain [-1,1]. max degree for result max approx size for result  function f .variables to substitute and for each variable v,  function f_v to substitute for v  that maps [-1,1] into [-1,1] pointwise lower bound of  f[v |-> f_v] &Approximate the primitive function of f from below and from above. variable to integrate by  fApproximate the derivative of f from below and from above. variable to differentiate by  f'Measure the volume between a function . and the zero hyperplane on the domain [-1,1]^n. 0dimensions to include in the measuring domain; 5 have to include all those present in f  fMuvwxyz{|}~M|}~uvwxyz{Muvwxyz{vwxyz{|}~}~ *!0polynoms in the Chebyshev basis of the 1st kind portable experimentalmik@konecny.aow.cz1(testing) generating basic functions for testing portable experimentalmik@konecny.aow.cz $$+(testing) generating polynomials for tests portable experimentalmik@konecny.aow.czreport file name 5item to identify the random input given to the test report file name 5item to identify the random input given to the test report file name 5item to identify the random input given to the test \this real approx operation has to return an *inner* approximation of the exact result set, X ie each number that the approximation supports is in the maximal extension enclosure of argument 1 enclosure of argument 2 alleged enclosure of result report file name 5item to identify the random input given to the test Zthis real approx operation has to return an inner approximation of the exact result set, X ie each number that the approximation supports is in the maximal extension enclosure of argument alleged enclosure of result report file name 5item to identify the random input given to the test Nthis operation has to return an inner approximation of the exact result set, c ie each number that the approximation supports is a solution in the maximal extension variables to test over alleged enclosure of result ",(testing) properties of bounding operations portable experimentalmik@konecny.aow.cz#.(testing) properties of enclosure composition portable experimentalmik@konecny.aow.cz$6(testing) properties of polynomial enclosure division portable experimentalmik@konecny.aow.cz8(testing) properties of enclosure elementary operations portable experimentalmik@konecny.aow.cz3(testing) properties of basic enclosure operations portable experimentalmik@konecny.aow.cz %((testing) properties of ring operations portable experimentalmik@konecny.aow.cz&-(testing) properties of reduction operations portable experimentalmik@konecny.aow.cz'((testing) properties of ring operations portable experimentalmik@konecny.aow.cz?(testing) running all function enclosure base tests in a batch portable experimentalmik@konecny.aow.cz,classes abstracting function approximations portable experimentalmik@konecny.aow.cz(TA class of types that approximate function enclosures of first-order real functions   R^n -> R^m6 eg using a pair of function enclosures. The domains @ of the functions can be neither specified nor investigated ! by operations in this class. This class extends % so that we could perform point-wise + operations on the function enclosures. This class is associated with: ! a real number type (instance of () for working with parts of the function' s domain U a real number approximation approximation for approximating the function enclosure B range at an individual point or uniformly over many points; 3 a type of boxes indexed by variables (instance of ) for working with + multiple-dimension function domains. This class extends  by: G making the domain of the function enclosure available for inspection; 8 allowing the construction of basic function enclosures , where the domain has to be specified. ;A function enclosure with no information about the function' s values. the domain of the function .how many functions are bundled in this tuple 9Construct a constant enclosure for a tuple of functions. 8Construct the exact enclosure for a projection function  (ie a variable). -Return the domain of the function enclosure. DSplit the domain into two halves, yoelding two function enclosures. variable (axis) to split on /where exactly to split (this has to be exact) 5Merge function enclosures with neighbouring domains. variable (axis) to glue on Safely integrate a  R^n -> R^m function enclosure E with some initial condition (origin and function at origin). how hard to try function to integrate x = variable to integrate by integration range origin in terms of x; this has to be thin! values at origin Safely integrate a R -> R^m function enclosure. how hard to try unary function to integrate integration range origin values at origin Safely integrate a  R^n -> R^m function enclosure ? intersecting it with a prior enclosure for the result. >The prior enclosure could contains one of more initial value. how hard to try function to integrate variable to integrate by integration domain .a sub-domain with relevant new information - C either about initial value(s) or about derivative 5approximation to result, including initial value(s) Eimproved result and measurement of improvement analogous to the one & returned by pointwise  Safely integrate a R -> R^m function enclosure ? intersecting it with a prior enclosure for the result. >The prior enclosure could contains one of more initial value. how hard to try unary function to integrate integration domain .a sub-domain with relevant new information - C either about initial value(s) or about derivative 5approximation to result, including initial value(s) Eimproved result and measurement of improvement analogous to the one & returned by pointwise  =A class of types that approximate first-order real functions   R^n -> R^m3 using some type of graph enclosures. The domains @ of the functions can be neither specified nor investigated ! by operations in this class. This class extends % so that we could perform point-wise ! operations on the functions. This class is associated with: % two real number types (instances of () for working with parts of the function's domain and range; 3 a type of boxes indexed by variables (instance of ) for working with + multiple-dimension function domains. 7Check internal consistency and report problem if any. 9indentification of caller location for easier debugging 5this parameter is not used except for type checking 5this parameter is not used except for type checking @Get the internal degree of quality (usually polynomial degree)  of the approximation. ASet an upper bound on the degree of this function approximation. :This reduces the degree immediately if necessary and also @ affects all operations performed with this value later. AMay also set the maximum size of the approximations to a default A based on the degree and the dimension of this enclosure. 7Get the current uppend bound on the degree associated + with this function approximation.  ,Get the internal size of the approximation / (usually number of polynomial terms).  ?Set an upper bound on the size of this function approximation. 8This reduces the size immediately if necessary and also @ affects all operations performed with this value later.  5Get the current uppend bound on the size associated + with this function approximation.  @List all variables that are actually used in the approximation.  8Give a close upper bound of the precision of the range 6 at the best approximated point in the domain. 6Find some upper and lower bounds of the function over [-1,1]^n. 8Combine several functions with the same domain into one tuple function. 0Reveal how many functions are bundled together. &Modify a tuple of functions in a way : that does not treat the tuple elements uniformly. IFind close upper and lower bounds of the volume of the entire enclosure. N A negative volume means that the enclosure is certainly inconsistent. BMultiply a function approximation by a real number approximation. LIntersect one approximation by another but only on a box within its domain. @the subdomain; defined by clipping the range of some variables Mthe enclosure to be used on the subdomain (but defined on the whole domain) 3function to improve by intersecting its subdomain KIntersect two enclosures and measure the global improvement as one number. (Use  defined in module Data.Number.ER.Real.Approx B to measure the improvement using a function enclosure.) Lenclosure intersection and measurement of improvement analogous to the one & returned by pointwise  *Evaluate the function at the given point. >Fix some variables in the function to the given exact values. 9A simple and limited composition of functions applicable B only when the range-defining function is non-decreasing.  enclosure of f, f is non-decreasing in variable var  variable var to get substituted in f  enclosure of f_var, to be substituted for var  enclosure of f[var |-> f_var] 9BEWARE: Enclosure is probably incorrect where values of  f_v are outside the domain of v in f. 9A simple and limited composition of functions applicable B only when the range-defining function is non-increasing.  enclosure of f, f is non-increasing in variable var  variable var to get substituted in f  enclosure of f_var, to be substituted for var  enclosure of f[var |-> f_var] 9BEWARE: Enclosure is probably incorrect where values of  f_v are outside the domain of v in f. 4Recursively perform a number of bisections and then # glue the bits back together. This way we can ensure that 5 a piece-wise enclosure has a partition that goes " to at least the given depth. required depth of bisection UCheck that a pointwise operation previously performed on function approximations is 3 consistent with the same operation performed on 5 selected points in the domain of these functions. G The selected points are the centres of all faces of all dimensions,  which includes the corners. <The result of this function is the list of points in which > the consistency check failed. The result of the operation = is also included both for the real number version and the # function approximation version.  function G acting on real numbers #approximations of input functions alleged approximation of G9 applied pointwise to the above function approximations 7Check that a function approximation is consistent with ? a real function that is meant to compute the same function. <The result of this function is the list of points in which > the consistency check failed. The result of the operation = is also included both for the real number version and the # function approximation version.  function G# acting on tuples of real numbers alleged approximation of G over a domain box (     (     (           )class abstracting function enclosures on [-1,1]^n portable experimentalmik@konecny.aow.cz This class extends  ERFnApprox by: ? assuming that the domain of the function enclosures is always [-1,1]^n for some n; 8 allowing the construction of basic function enclosures ( where the domain has to be known. ;A function enclosure with no information about the function' s values. 9Construct a constant enclosure for a tuple of functions.  7Construct the exact enclosure of an affine function on [-1,1]^n.  values at 0 ascents of each base vector !/A simple and limited composition of functions. NIt is primarily intended to be used for precomposition with affine functions.  enclosure of f Aspecifies the variables to substitute and for each such variable v,  gives an exact enclosure of a function f_v to substitute for v  enclosure of  f[v |-> f_v] 8BEWARE: Enclosure is probably incorrect where values of f_v are outside the domain of v in f. "IFind close upper and lower bounds of the volume of the entire enclosure. N A negative volume means that the enclosure is certainly inconsistent. JExplicitly specify the variables to identify the dimension of the domain. #KIntersect two enclosures and measure the global improvement as one number. (Use  defined in module Data.Number.ER.Real.Approx B to measure the improvement using a function enclosure.) JExplicitly specify the variables to identify the dimension of the domain. Lenclosure intersection and measurement of improvement analogous to the one * returned by the pointwise  $Safely integrate a [-1,1] ^n -> R^m function enclosure E with some initial condition (origin and function at origin). how hard to try function to integrate x = variable to integrate by origin in terms of x; this has to be exact! values at origin %UCheck that a pointwise operation previously performed on function approximations is 3 consistent with the same operation performed on 5 selected points in the domain of these functions. G The selected points are the centres of all faces of all dimensions,  which includes the corners. <The result of this function is the list of points in which > the consistency check failed. The result of the operation = is also included both for the real number version and the # function approximation version.  function G acting on real numbers #approximations of input functions alleged approximation of G9 applied pointwise to the above function approximations &7Check that a function approximation is consistent with ? a real function that is meant to compute the same function. <The result of this function is the list of points in which > the consistency check failed. The result of the operation = is also included both for the real number version and the # function approximation version.  function G# acting on tuples of real numbers alleged approximation of G over a domain box  !"#$%&  !"#$&%  !"#$ !"#$%&+arbitrary precision function enclosures on [-1,1]^n portable experimentalmik@konecny.aow.cz '()*+,-./01!True iff sine, False iff cosine maximum representation degree maximum approx size 0how hard to try to eliminate truncation errors '()*+,-./0123,0-1./1'()*+23 '()*+()*+,0-1./1-./01 enclosures translated from [-1,1]^n to another domain portable experimentalmik@konecny.aow.cz4The canonical translation of 8 any compact non-empty and non-singleton interval in R " to and from the unit interval [-1,1]. 3This structure holds the two coefficients for both  linear mappings. 56the interval being mapped 789:;%Datatype translating enclosures from [-1,1]^n to any compact  interval in R^n with non-empty interior ; using a bunch of linear maps, one for each dimension. <=> 456789:;<=> ;<=>456789: 456789:56789:;<=><=>2separate approximations per domain-box hyper-edge portable experimentalmik@konecny.aow.cz?=Use some function approximation type and for each domain box E keep a structure of function approximations of this type indexed E by the hyper-edge structure. For each hyper-edge of the domain, 3 the approximation has this edge as its domain. 'E.g. for a 2D square domain there are: ( one approximation for the whole square + four 1D approximations, one for each edge > eight 0D approximations, one for each endpoint of each edge @AB?@AB?@AB?@AB@AB.a list of approximations over the same domain portable experimentalmik@konecny.aow.czC=A tuple of function approximations allowing one to get from  functions R^n->R to a function  R^n -> R^m. DECDECDECDEDE=arbitrary precision piece-wise-something function enclosures portable experimentalmik@konecny.aow.czF*Arbitrary precision piece-wise something 2 (eg linear, polynomial, rational) enclosures  of functions R^n->R^m. 7The type of approximation within segments is specified  by an instance of . 8The piece-wise construction defines another instance of . GFGFGFGG addressing and modifying leaves portable experimentalmik@konecny.aow.cz H3A representation of a binary tree with a hole that  can be efficiently filled. IJKLA path in a binary tree. ) It is used mainly in connection with BisectionTree.BisectionTree. MNOP@Assuming that bisection happens at default points as defined by  * and starts from the given root interval. root interval Q@Lookup a subdomain of a function according to a bisection path. B Return the restrited function as well as a zipper that allows ? an efficient modification of the function on the looked up  subdomain. R3Modify a function in its subdomain as expressed by  the zipper. ;a function on a larger domain and a highlighted subdomain )a function of the highlighted subdomain HIJKLMNOPQR LONMPHKJIQR HKJIIJKLONMMNOPQRarbitrary precision outer/inner function enclosures on [-1,1]^n portable experimentalmik@konecny.aow.czSTUVWXSTUVWXSWTXXUVSWTXXUVTUVWX 3concise names for default function representations non-portable (requires fenv.h) experimentalmik@konecny.aow.cz YZ[\]^_`a YZ[\]^_`a a`_^]\[ZY YZ[\]^_`a('definitions useful for testing in ghci non-portable (requires fenv.h) experimentalmik@konecny.aow.cz-     )overview of AERN-RnToRm non-portable (requires fenv.h) experimentalmik@konecny.aow.cz` !"#$%&'()*+,-./0123456789:;<=>?@ABCD     YZ[\]^_`aE*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno p q r s t u v w x y z { |}~      !"#$%&'()*+,-./01%(./2234566789:;<==>?@ABCCDEFFGHIIJKKLMNOPQRSTUVWWXYZ[ \ ] ^ _ ` a b c defghijklmnopqrstuvwxyz{|}~ !d"""####$$$$%%&&''''(((((((((((((((((((((((((((( ( ( ( ( (((((((((((((( !"#$%&'()*+,-./0123456789:;<=>?@ABCDEAERN-RnToRm-0.59Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Basic8Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Eval:Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Reduce8Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Ring>Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Derivative:Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Bounds=Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.EnclosureBData.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.EnclosureInner;Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Compose?Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.IntegrationData.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.ElementaryCData.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.ElementaryInner#Data.Number.ER.RnToRm.BisectionTree/Data.Number.ER.RnToRm.BisectionTree.Integration"Data.Number.ER.RnToRm.UnitDom.Base1Data.Number.ER.RnToRm.UnitDom.Base.Tests.Generate:Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Common>Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Elementary=Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Enclosure,Data.Number.ER.RnToRm.UnitDom.Base.Tests.RunData.Number.ER.RnToRm.Approx$Data.Number.ER.RnToRm.UnitDom.Approx-Data.Number.ER.RnToRm.UnitDom.Approx.Interval&Data.Number.ER.RnToRm.Approx.DomTransl%Data.Number.ER.RnToRm.Approx.DomEdges"Data.Number.ER.RnToRm.Approx.Tuple&Data.Number.ER.RnToRm.Approx.PieceWise(Data.Number.ER.RnToRm.BisectionTree.Path/Data.Number.ER.RnToRm.UnitDom.Approx.IntervalOI!Data.Number.ER.RnToRm.DefaultRepr3Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom:Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Bounds;Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Compose