Great! Thanks a lot. - precision is clear - name convention was not known to me. Do we have a list of such interpreter rules somewhere?
Mit freundlichen Grüßen Johannes Grabmeier Prof. Dr. Johannes Grabmeier Köckstraße 1, D-94469 Deggendorf Tel. +49-(0)-991-2979584, Tel. +49-(0)-151-681-70756 Tel. +49-(0)-991-3615-141 (d), Fax: +49-(0)-3224-192688 Am 05.10.2014 um 02:52 schrieb Waldek Hebisch: > Prof. Dr. Johannes Grabmeier wrote: >> >> here it is: >> >> )abbrev package MPFL MappingPackageFloat >> >> ++ Author: Johannes Grabmeier >> ++ Date Created: 29.09.2014 >> ++ Date Last Updated: >> ++ Description: >> ++ Tools for domain and range modification for the various >> ++ floating point types. >> >> MappingPackageFloat() : with >> coerce : (Float -> Float) -> (DoubleFloat -> DoubleFloat) >> coerce : (DoubleFloat -> DoubleFloat) -> (Float -> Float) >> ++ >> == add >> coerce(f: Float -> Float): (DoubleFloat -> DoubleFloat) == >> (x : DoubleFloat) : DoubleFloat +-> >> convert(f(convert(x)@Float))@DoubleFloat >> coerce(g: DoubleFloat -> DoubleFloat): (Float -> Float) == >> (y : Float) : Float +-> convert(g(convert(y)@DoubleFloat))@Float >> >> however, the internal mechanisms from EXP INT to DoubleFloat -> DoubleFloa >> , seem to allow the interpreter to use this coercion, I guess this package >> has to be used somewhere in the code for Liouvillian functions directly > > There are two problems with the above. First, before using Float > version one should set appropriate precision. Second, interpreter > will automatically find the new functions only if package name > starts with 'DoubleFloat' (of course, we could stash them in > 'DoubleFloat' but 'DoubleFloat' is getting big). > > Below is package that seem to work: > > )abbrev package DFSFUN2 DoubleFloatSpecialFunctions2 > DoubleFloatSpecialFunctions2() : with > erf : DoubleFloat -> DoubleFloat > erfi : DoubleFloat -> DoubleFloat > fresnelC : DoubleFloat -> DoubleFloat > fresnelS : DoubleFloat -> DoubleFloat > Ei : DoubleFloat -> DoubleFloat > li : DoubleFloat -> DoubleFloat > Ci : DoubleFloat -> DoubleFloat > Si : DoubleFloat -> DoubleFloat > Chi : DoubleFloat -> DoubleFloat > Shi : DoubleFloat -> DoubleFloat > > == add > > import FloatLiouvilianFunctions > > to_sf(x) ==> > obits := bits()$Float > try > bits(68) > convert(x)@DoubleFloat > finally > bits(obits) > > bfx ==> convert(x)@Float > > erf(x : DoubleFloat) == > to_sf(erf(bfx)) > > erfi(x : DoubleFloat) == > to_sf(erfi(bfx)) > > fresnelC(x : DoubleFloat) == > to_sf(fresnelC(bfx)) > > fresnelS(x : DoubleFloat) == > to_sf(fresnelS(bfx)) > > Ei(x : DoubleFloat) == > to_sf(Ei(bfx)) > > li(x : DoubleFloat) == > to_sf(li(bfx)) > > Ci(x : DoubleFloat) == > to_sf(Ci(bfx)) > > Si(x : DoubleFloat) == > to_sf(Si(bfx)) > > Chi(x : DoubleFloat) == > to_sf(Chi(bfx)) > > Shi(x : DoubleFloat) == > to_sf(Shi(bfx)) > > -- > Waldek Hebisch > [email protected] > > -- > You received this message because you are subscribed to the Google Groups > "FriCAS - computer algebra system" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/fricas-devel. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/fricas-devel. For more options, visit https://groups.google.com/d/optout.
