/usr/share/axiom-20170501/src/algebra/INTRF.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 | )abbrev package INTRF RationalFunctionIntegration
++ Author: Manuel Bronstein
++ Date Created: 1987
++ Date Last Updated: 29 Mar 1990
++ Description:
++ This package provides functions for the integration of rational functions.
RationalFunctionIntegration(F) : SIG == CODE where
F: Join(IntegralDomain, RetractableTo Integer, CharacteristicZero)
SE ==> Symbol
P ==> Polynomial F
Q ==> Fraction P
UP ==> SparseUnivariatePolynomial Q
QF ==> Fraction UP
LGQ ==> List Record(coeff:Q, logand:Q)
UQ ==> Union(Record(ratpart:Q, coeff:Q), "failed")
ULQ ==> Union(Record(mainpart:Q, limitedlogs:LGQ), "failed")
SIG ==> with
internalIntegrate : (Q, SE) -> IntegrationResult Q
++ internalIntegrate(f, x) returns g such that \spad{dg/dx = f}.
infieldIntegrate : (Q, SE) -> Union(Q, "failed")
++ infieldIntegrate(f, x) returns a fraction
++ g such that \spad{dg/dx = f}
++ if g exists, "failed" otherwise.
limitedIntegrate : (Q, SE, List Q) -> ULQ
++ \spad{limitedIntegrate(f, x, [g1,...,gn])} returns fractions
++ \spad{[h, [[ci,gi]]]} such that the gi's are among
++ \spad{[g1,...,gn]},
++ \spad{dci/dx = 0}, and \spad{d(h + sum(ci log(gi)))/dx = f}
++ if possible, "failed" otherwise.
extendedIntegrate : (Q, SE, Q) -> UQ
++ extendedIntegrate(f, x, g) returns fractions \spad{[h, c]} such that
++ \spad{dc/dx = 0} and \spad{dh/dx = f - cg}, if \spad{(h, c)} exist,
++ "failed" otherwise.
CODE ==> add
import RationalIntegration(Q, UP)
import IntegrationResultFunctions2(QF, Q)
import PolynomialCategoryQuotientFunctions(IndexedExponents SE,
SE, F, P, Q)
infieldIntegrate(f, x) ==
map(x1 +-> multivariate(x1, x), infieldint univariate(f, x))
internalIntegrate(f, x) ==
map(x1 +-> multivariate(x1, x), integrate univariate(f, x))
extendedIntegrate(f, x, g) ==
map(x1 +-> multivariate(x1, x),
extendedint(univariate(f, x), univariate(g, x)))
limitedIntegrate(f, x, lu) ==
map(x1 +-> multivariate(x1, x),
limitedint(univariate(f, x), [univariate(u, x) for u in lu]))
|