ElementaryFunctionStructurePackage(R, F)¶
efstruc.spad line 78 [edit on github]
R: Join(IntegralDomain, Comparable, RetractableTo Integer, LinearlyExplicitOver Integer)
F: Join(AlgebraicallyClosedField, TranscendentalFunctionCategory, FunctionSpace R)
ElementaryFunctionStructurePackage provides functions to test the algebraic independence of various elementary functions, using the Risch structure theorem (real and complex versions). It also provides transformations on elementary functions which are not considered simplifications.
- irootDep: Kernel F -> Union(vec: Vector Fraction Integer, func: F, fail: Boolean)
irootDep(k)
is a local function with a conditional implementation.
- normalize: (F, Symbol) -> F
normalize(f, x)
is normalize([f
], [x
])
- normalize: (List F, List Symbol) -> List F
normalize([f1, ..., fn], lx)
rewritesf1, ..., fn
using the least possible number of real algebraically independent kernels. Additionally, it tries to ensure that any expression in resulting kernels which syntactically depends on a variablex
fromlx
has nonzero derivative with respect tox
.
- normalize: F -> F
normalize(f)
rewritesf
using the least possible number of real algebraically independent kernels.
- realElementary: (F, Symbol) -> F
realElementary(f, x)
rewrites the kernels off
involvingx
in terms of the 4 fundamental real transcendental elementary functions:log, exp, tan, atan
.
- realElementary: F -> F
realElementary(f)
rewritesf
in terms of the 4 fundamental real transcendental elementary functions:log, exp, tan, atan
.
- realLiouvillian: (F, Symbol) -> F
realLiouvillian(f, x)
rewritesf
elementary kernels off
in terms 4 fundamental real elementary functions:log, exp, tan, atan
. Additionally, it rewrites Liouvillian functions ofx
as indefinite integrals to support better normalization.
- realLiouvillian: F -> F
realLiouvillian(f)
rewritesf
elementary kernels off
in terms 4 fundamental real elementary functions:log, exp, tan, atan
. Additionally, it rewrites Liouvillian functions as indefinite integrals to support better normalization.
- rischNormalize: (F, List Symbol) -> Record(func: F, kers: List Kernel F, vals: List F)
rischNormalize(f, lx)
is rischNormalize([f
],lx
)
- rischNormalize: (F, Symbol) -> Record(func: F, kers: List Kernel F, vals: List F)
rischNormalize(f, x)
is rischNormalize([f
], [x
]) rischNormalize(f
,x
) returns[g, [k1, ..., kn], [h1, ..., hn]]
such thatg = normalize(f, x)
and eachki
was rewritten ashi
during the normalization.
- rischNormalize: (List F, List Symbol) -> Record(funcs: List F, kers: List Kernel F, vals: List F)
rischNormalize(lf, lx)
returns[lg, [k1, ..., kn], [h1, ..., hn]]
such thatlg = normalize(lf, lx)
and eachki
was rewritten ashi
during the normalization.
- rmap: (Kernel F -> F, F) -> F
rmap(f, e)
rewritese
replacing each kernelk
ine
byf
(k
)
- rootNormalize: (F, Kernel F) -> F
rootNormalize(f, k)
returnsf
rewriting eitherk
which must be ann
th-root in terms of radicals already inf
, or some radicals inf
in terms ofk
.