/usr/share/axiom-20170501/src/algebra/ELFUTS.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 | )abbrev package ELFUTS EllipticFunctionsUnivariateTaylorSeries
++ Author: Bill Burge, Clifton J. Williamson
++ Date Created: 1986
++ Date Last Updated: 17 February 1992
++ Description:
++ The elliptic functions sn, sc and dn are expanded as Taylor series.
EllipticFunctionsUnivariateTaylorSeries(Coef,UTS) : SIG == CODE where
Coef : Field
UTS : UnivariateTaylorSeriesCategory Coef
L ==> List
I ==> Integer
RN ==> Fraction Integer
ST ==> Stream Coef
STT ==> StreamTaylorSeriesOperations Coef
YS ==> Y$ParadoxicalCombinatorsForStreams(Coef)
SIG ==> with
sn : (UTS,Coef) -> UTS
++\spad{sn(x,k)} expands the elliptic function sn as a Taylor
++ series.
cn : (UTS,Coef) -> UTS
++\spad{cn(x,k)} expands the elliptic function cn as a Taylor
++ series.
dn : (UTS,Coef) -> UTS
++\spad{dn(x,k)} expands the elliptic function dn as a Taylor
++ series.
sncndn : (ST,Coef) -> L ST
++\spad{sncndn(s,c)} is used internally.
CODE ==> add
import StreamTaylorSeriesOperations Coef
UPS==> StreamTaylorSeriesOperations Coef
integrate ==> lazyIntegrate
sncndnre:(Coef,L ST,ST,Coef) -> L ST
sncndnre(k,scd,dx,sign) ==
[integrate(0, scd.2*$UPS scd.3*$UPS dx), _
integrate(1, sign*scd.1*$UPS scd.3*$UPS dx), _
integrate(1,sign*k**2*$UPS scd.1*$UPS scd.2*$UPS dx)]
sncndn(z,k) ==
empty? z => [0 :: ST,1 :: ST,1::ST]
frst z = 0 => YS(x +-> sncndnre(k,x,deriv z,-1),3)
error "ELFUTS:sncndn: constant coefficient should be 0"
sn(x,k) == series sncndn.(coefficients x,k).1
cn(x,k) == series sncndn.(coefficients x,k).2
dn(x,k) == series sncndn.(coefficients x,k).3
|