/usr/share/axiom-20170501/src/algebra/BFUNCT.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | )abbrev domain BFUNCT BasicFunctions
++ Author: Brian Dupee
++ Date Created: August 1994
++ Date Last Updated: April 1996
++ Description:
++ A Domain which implements a table containing details of
++ points at which particular functions have evaluation problems.
BasicFunctions() : SIG == CODE where
DF ==> DoubleFloat
SDF ==> Stream DoubleFloat
RS ==> Record(zeros: SDF, ones: SDF, singularities: SDF)
SIG ==> SetCategory with
bfKeys : () -> List Symbol
++ bfKeys() returns the names of each function in the
++ \axiomType{BasicFunctions} table
bfEntry : Symbol -> RS
++ bfEntry(k) returns the entry in the \axiomType{BasicFunctions} table
++ corresponding to \spad{k}
finiteAggregate
CODE ==> add
Rep := Table(Symbol,RS)
import Rep, SDF
f(x:DF):DF ==
positive?(x) => -x
-x+1
bf():$ ==
import RS
dpi := pi()$DF
ndpi:SDF := map(x1+->x1*dpi,(z := generate(f,0))) -- [n pi for n in Z]
n1dpi:SDF := map(x1+->-(2*(x1)-1)*dpi/2,z) -- [(n+1) pi /2]
n2dpi:SDF := map(x1+->2*x1*dpi,z) -- [2 n pi for n in Z]
n3dpi:SDF := map(x1+->-(4*(x1)-1)*dpi/4,z)
n4dpi:SDF := map(x1+->-(4*(x1)-1)*dpi/2,z)
sinEntry:RS := [ndpi, n4dpi, empty()$SDF]
cosEntry:RS := [n1dpi, n2dpi, esdf := empty()$SDF]
tanEntry:RS := [ndpi, n3dpi, n1dpi]
asinEntry:RS := [construct([0$DF])$SDF,
construct([float(8414709848078965,-16,10)$DF]), esdf]
acosEntry:RS := [construct([1$DF])$SDF,
construct([float(54030230586813977,-17,10)$DF]), esdf]
atanEntry:RS := [construct([0$DF])$SDF,
construct([float(15574077246549023,-16,10)$DF]), esdf]
secEntry:RS := [esdf, n2dpi, n1dpi]
cscEntry:RS := [esdf, n4dpi, ndpi]
cotEntry:RS := [n1dpi, n3dpi, ndpi]
logEntry:RS := [construct([1$DF])$SDF,esdf, construct([0$DF])$SDF]
entryList:List(Record(key:Symbol,entry:RS)) :=
[[sin@Symbol, sinEntry], [cos@Symbol, cosEntry],
[tan@Symbol, tanEntry], [sec@Symbol, secEntry],
[csc@Symbol, cscEntry], [cot@Symbol, cotEntry],
[asin@Symbol, asinEntry], [acos@Symbol, acosEntry],
[atan@Symbol, atanEntry], [log@Symbol, logEntry]]
construct(entryList)$Rep
bfKeys():List Symbol == keys(bf())$Rep
bfEntry(k:Symbol):RS == qelt(bf(),k)$Rep
|