/usr/share/axiom-20170501/src/algebra/GSERIES.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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | )abbrev domain GSERIES GeneralUnivariatePowerSeries
++ Author: Clifton J. Williamson
++ Date Created: 22 September 1993
++ Date Last Updated: 23 September 1993
++ Description:
++ This is a category of univariate Puiseux series constructed
++ from univariate Laurent series. A Puiseux series is represented
++ by a pair \spad{[r,f(x)]}, where r is a positive rational number and
++ \spad{f(x)} is a Laurent series. This pair represents the Puiseux
++ series \spad{f(x\^r)}.
GeneralUnivariatePowerSeries(Coef,var,cen) : SIG == CODE where
Coef : Ring
var : Symbol
cen : Coef
I ==> Integer
UTS ==> UnivariateTaylorSeries
ULS ==> UnivariateLaurentSeries
UPXS ==> UnivariatePuiseuxSeries
EFULS ==> ElementaryFunctionsUnivariateLaurentSeries
EFUPXS ==> ElementaryFunctionsUnivariatePuiseuxSeries
FS2UPS ==> FunctionSpaceToUnivariatePowerSeries
SIG ==> UnivariatePuiseuxSeriesCategory Coef with
coerce : Variable(var) -> %
++ coerce(var) converts the series variable \spad{var} into a
++ Puiseux series.
coerce : UPXS(Coef,var,cen) -> %
++ coerce(f) converts a Puiseux series to a general power series.
differentiate : (%,Variable(var)) -> %
++ \spad{differentiate(f(x),x)} returns the derivative of
++ \spad{f(x)} with respect to \spad{x}.
if Coef has Algebra Fraction Integer then
integrate : (%,Variable(var)) -> %
++ \spad{integrate(f(x))} returns an anti-derivative of the power
++ series \spad{f(x)} with constant coefficient 0.
++ We may integrate a series when we can divide coefficients
++ by integers.
CODE ==> UnivariatePuiseuxSeries(Coef,var,cen) add
coerce(upxs:UPXS(Coef,var,cen)) == upxs pretend %
puiseux: % -> UPXS(Coef,var,cen)
puiseux f == f pretend UPXS(Coef,var,cen)
if Coef has Algebra Fraction Integer then
differentiate f ==
str1 : String := "'differentiate' unavailable on this domain; "
str2 : String := "use 'approximate' first"
error concat(str1,str2)
differentiate(f:%,v:Variable(var)) == differentiate f
if Coef has PartialDifferentialRing(Symbol) then
differentiate(f:%,s:Symbol) ==
(s = variable(f)) =>
str1 : String := "'differentiate' unavailable on this domain; "
str2 : String := "use 'approximate' first"
error concat(str1,str2)
dcds := differentiate(center f,s)
deriv := differentiate(puiseux f) :: %
map(x+->differentiate(x,s),f) - dcds * deriv
integrate f ==
str1 : String := "'integrate' unavailable on this domain; "
str2 : String := "use 'approximate' first"
error concat(str1,str2)
integrate(f:%,v:Variable(var)) == integrate f
if Coef has integrate: (Coef,Symbol) -> Coef and _
Coef has variables: Coef -> List Symbol then
integrate(f:%,s:Symbol) ==
(s = variable(f)) =>
str1 : String := "'integrate' unavailable on this domain; "
str2 : String := "use 'approximate' first"
error concat(str1,str2)
not entry?(s,variables center f) => map(x+->integrate(x,s),f)
error "integrate: center is a function of variable of integration"
if Coef has TranscendentalFunctionCategory and _
Coef has PrimitiveFunctionCategory and _
Coef has AlgebraicallyClosedFunctionSpace Integer then
integrateWithOneAnswer: (Coef,Symbol) -> Coef
integrateWithOneAnswer(f,s) ==
res := integrate(f,s)$FunctionSpaceIntegration(Integer,Coef)
res case Coef => res :: Coef
first(res :: List Coef)
integrate(f:%,s:Symbol) ==
(s = variable(f)) =>
str1 : String := "'integrate' unavailable on this domain; "
str2 : String := "use 'approximate' first"
error concat(str1,str2)
not entry?(s,variables center f) =>
map(x+->integrateWithOneAnswer(x,s),f)
error "integrate: center is a function of variable of integration"
|