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.