login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Add conjugate

fricas
)library BOP BOP1
BasicOperator is now explicitly exposed in frame initial BasicOperator will be automatically loaded when needed from /var/aw/var/LatexWiki/BOP.NRLIB/BOP BasicOperatorFunctions1 is now explicitly exposed in frame initial BasicOperatorFunctions1 will be automatically loaded when needed from /var/aw/var/LatexWiki/BOP1.NRLIB/BOP1

spad
)abbrev category COMBOPC CombinatorialOpsCategory
++ Category for summations and products
++ Author: Manuel Bronstein
++ Date Created: ???
++ Date Last Updated: 22 February 1993 (JHD/BMT)
++ Description:
++   CombinatorialOpsCategory is the category obtaining by adjoining
++   summations and products to the usual combinatorial operations;
CombinatorialOpsCategory() : Category ==
  CombinatorialFunctionCategory with
    factorials : % -> %
      ++ factorials(f) rewrites the permutations and binomials in f
      ++ in terms of factorials;
    factorials : (%, Symbol) -> %
      ++ factorials(f, x) rewrites the permutations and binomials in f
      ++ involving x in terms of factorials;
    summation  : (%, Symbol)            -> %
      ++ summation(f(n), n) returns the formal sum S(n) which verifies
      ++ S(n+1) - S(n) = f(n);
    summation  : (%, SegmentBinding %)  -> %
      ++ summation(f(n), n = a..b) returns f(a) + ... + f(b) as a
      ++ formal sum;
    product    : (%, Symbol)            -> %
      ++ product(f(n), n) returns the formal product P(n) which verifies
      ++ P(n+1)/P(n) = f(n);
    product    : (%, SegmentBinding  %) -> %
      ++ product(f(n), n = a..b) returns f(a) * ... * f(b) as a
      ++ formal product;
)abbrev package COMBF CombinatorialFunction ++ Provides the usual combinatorial functions ++ Author: Manuel Bronstein, Martin Rubey ++ Date Created: 2 Aug 1988 ++ Date Last Updated: 30 October 2005 ++ Description: ++ Provides combinatorial functions over an integral domain. ++ Keywords: combinatorial, function, factorial. ++ Examples: )r COMBF INPUT
CombinatorialFunction(R, F) : Exports == Implementation where R : Join(Comparable, IntegralDomain) F : FunctionSpace R
OP ==> BasicOperator K ==> Kernel F SE ==> Symbol O ==> OutputForm SMP ==> SparseMultivariatePolynomial(R, K) Z ==> Integer
POWER ==> '%power OPEXP ==> 'exp SPECIALDIFF ==> '%specialDiff SPECIALDISP ==> '%specialDisp SPECIALEQUAL ==> '%specialEqual
Exports ==> with belong? : OP -> Boolean ++ belong?(op) is true if op is a combinatorial operator; operator : OP -> OP ++ operator(op) returns a copy of op with the domain-dependent ++ properties appropriate for F; ++ error if op is not a combinatorial operator; "^" : (F, F) -> F ++ a ^ b is the formal exponential a^b; binomial : (F, F) -> F ++ binomial(n, r) returns the number of subsets of r objects ++ taken among n objects, i.e. n!/(r! * (n-r)!); permutation : (F, F) -> F ++ permutation(n, r) returns the number of permutations of ++ n objects taken r at a time, i.e. n!/(n-r)!; factorial : F -> F ++ factorial(n) returns the factorial of n, i.e. n!; factorials : F -> F ++ factorials(f) rewrites the permutations and binomials in f ++ in terms of factorials; factorials : (F, SE) -> F ++ factorials(f, x) rewrites the permutations and binomials in f ++ involving x in terms of factorials; summation : (F, SE) -> F ++ summation(f(n), n) returns the formal sum S(n) which verifies ++ S(n+1) - S(n) = f(n); summation : (F, SegmentBinding F) -> F ++ summation(f(n), n = a..b) returns f(a) + ... + f(b) as a ++ formal sum; product : (F, SE) -> F ++ product(f(n), n) returns the formal product P(n) which verifies ++ P(n+1)/P(n) = f(n); product : (F, SegmentBinding F) -> F ++ product(f(n), n = a..b) returns f(a) * ... * f(b) as a ++ formal product; iifact : F -> F ++ iifact(x) should be local but conditional; iibinom : List F -> F ++ iibinom(l) should be local but conditional; iiperm : List F -> F ++ iiperm(l) should be local but conditional; iipow : List F -> F ++ iipow(l) should be local but conditional; iidsum : List F -> F ++ iidsum(l) should be local but conditional; iidprod : List F -> F ++ iidprod(l) should be local but conditional; ipow : List F -> F ++ ipow(l) should be local but conditional;
Implementation ==> add
COMB := 'comb
ifact : F -> F iiipow : List F -> F iperm : List F -> F ibinom : List F -> F isum : List F -> F idsum : List F -> F iprod : List F -> F idprod : List F -> F dsum : List F -> O ddsum : List F -> O dprod : List F -> O ddprod : List F -> O equalsumprod : (K, K) -> Boolean equaldsumprod : (K, K) -> Boolean fourth : List F -> F dvpow1 : List F -> F dvpow2 : List F -> F summand : List F -> F dvsum : (List F, SE) -> F dvdsum : (List F, SE) -> F dvprod : (List F, SE) -> F dvdprod : (List F, SE) -> F facts : (F, List SE) -> F K2fact : (K, List SE) -> F smpfact : (SMP, List SE) -> F
-- Must be a macro to produce fresh symbol for each use dummy ==> new()$SE :: F
opfact := operator('factorial)$CommonOperators opperm := operator('permutation)$CommonOperators opbinom := operator('binomial)$CommonOperators opsum := operator('summation)$CommonOperators opdsum := operator('%defsum)$CommonOperators opprod := operator('product)$CommonOperators opdprod := operator('%defprod)$CommonOperators oppow := operator(POWER::Symbol)$CommonOperators
factorial x == opfact x binomial(x, y) == opbinom [x, y] permutation(x, y) == opperm [x, y]
import from F import from Kernel F
number?(x : F) : Boolean == if R has RetractableTo(Z) then ground?(x) or ((retractIfCan(x)@Union(Fraction(Z),"failed")) case Fraction(Z)) else ground?(x)
x ^ y == -- Do some basic simplifications is?(x, POWER) => args : List F := argument first kernels x not(#args = 2) => error "Too many arguments to ^" number?(first args) and number?(y) => oppow [first(args)^y, second args] oppow [first args, (second args)* y] -- Generic case exp : Union(Record(val:F,exponent:Z),"failed") := isPower x exp case Record(val : F, exponent : Z) => expr := exp::Record(val : F, exponent : Z) oppow [expr.val, (expr.exponent)*y] oppow [x, y]
belong? op == has?(op, COMB) fourth l == third rest l dvpow1 l == second(l) * first(l) ^ (second l - 1) factorials x == facts(x, variables x) factorials(x, v) == facts(x, [v]) facts(x, l) == smpfact(numer x, l) / smpfact(denom x, l) summand l == eval(first l, retract(second l)@K, third l)
product(x : F, i : SE) == dm := dummy opprod [eval(x, k := kernel(i)$K, dm), dm, k::F]
summation(x : F, i : SE) == dm := dummy opsum [eval(x, k := kernel(i)$K, dm), dm, k::F]
dvsum(l, x) == opsum [differentiate(first l, x), second l, third l]
dvdsum(l, x) == x = retract(y := third l)@SE => 0 if member?(x, variables(h := third rest rest l)) or member?(x, variables(g := third rest l)) then error "a sum cannot be differentiated with respect to a bound" else opdsum [differentiate(first l, x), second l, y, g, h]
dvprod(l, x) == dm := retract(dummy)@SE f := eval(first l, retract(second l)@K, dm::F) p := product(f, dm)
opsum [differentiate(first l, x)/first l * p, second l, third l]
dvdprod(l, x) == x = retract(y := third l)@SE => 0 if member?(x, variables(h := third rest rest l)) or member?(x, variables(g := third rest l)) then error "a product cannot be differentiated with respect to a bound" else opdsum cons(differentiate(first l, x)/first l, rest l) * opdprod l
dprod l == prod(summand(l)::O, third(l)::O)
ddprod l == prod(summand(l)::O, third(l)::O = fourth(l)::O, fourth(rest l)::O)
dsum l == sum(summand(l)::O, third(l)::O)
ddsum l == sum(summand(l)::O, third(l)::O = fourth(l)::O, fourth(rest l)::O)
equalsumprod(s1, s2) == l1 := argument s1 l2 := argument s2
(eval(first l1, retract(second l1)@K, second l2) = first l2)
equaldsumprod(s1, s2) == l1 := argument s1 l2 := argument s2
((third rest l1 = third rest l2) and (third rest rest l1 = third rest rest l2) and (eval(first l1, retract(second l1)@K, second l2) = first l2))
product(x : F, s : SegmentBinding F) == k := kernel(variable s)$K dm := dummy opdprod [eval(x, k, dm), dm, k::F, lo segment s, hi segment s]
summation(x : F, s : SegmentBinding F) == k := kernel(variable s)$K dm := dummy opdsum [eval(x, k, dm), dm, k::F, lo segment s, hi segment s]
smpfact(p, l) == map(x +-> K2fact(x, l), x +-> x::F, p)$PolynomialCategoryLifting( IndexedExponents K, K, R, SMP, F)
K2fact(k, l) == empty? [v for v in variables(kf := k::F) | member?(v, l)] => kf empty?(args : List F := [facts(a, l) for a in argument k]) => kf is?(k, opperm) => factorial(n := first args) / factorial(n - second args) is?(k, opbinom) => n := first args p := second args factorial(n) / (factorial(p) * factorial(n-p)) (operator k) args
operator op == is?(op, 'factorial) => opfact is?(op, 'permutation) => opperm is?(op, 'binomial) => opbinom is?(op, 'summation) => opsum is?(op, '%defsum) => opdsum is?(op, 'product) => opprod is?(op, '%defprod) => opdprod is?(op, POWER) => oppow error "Not a combinatorial operator"
iprod l == zero? first l => 0 -- one? first l => 1 (first l = 1) => 1 kernel(opprod, l)
isum l == zero? first l => 0 kernel(opsum, l)
idprod l == member?(retract(second l)@SE, variables first l) => kernel(opdprod, l) first(l) ^ (fourth rest l - fourth l + 1)
idsum l == member?(retract(second l)@SE, variables first l) => kernel(opdsum, l) first(l) * (fourth rest l - fourth l + 1)
ifact x == -- zero? x or one? x => 1 zero? x or (x = 1) => 1 kernel(opfact, x)
ibinom l == n := first l ((p := second l) = 0) or (p = n) => 1 -- one? p or (p = n - 1) => n (p = 1) or (p = n - 1) => n kernel(opbinom, l)
iperm l == zero? second l => 1 kernel(opperm, l)
if R has RetractableTo Z then iidsum l == (r1 := retractIfCan(fourth l)@Union(Z,"failed")) case "failed" or (r2 := retractIfCan(fourth rest l)@Union(Z,"failed")) case "failed" or (k := retractIfCan(second l)@Union(K,"failed")) case "failed" => idsum l +/[eval(first l, k::K, i::F) for i in r1::Z .. r2::Z]
iidprod l == (r1 := retractIfCan(fourth l)@Union(Z,"failed")) case "failed" or (r2 := retractIfCan(fourth rest l)@Union(Z,"failed")) case "failed" or (k := retractIfCan(second l)@Union(K,"failed")) case "failed" => idprod l */[eval(first l, k::K, i::F) for i in r1::Z .. r2::Z]
iiipow l == (u := isExpt(x := first l, OPEXP)) case "failed" => kernel(oppow, l) rec := u::Record(var : K, exponent : Z) y := first argument(rec.var) (r := retractIfCan(y)@Union(Fraction Z, "failed")) case "failed" => kernel(oppow, l) (operator(rec.var)) (rec.exponent * y * second l)
if F has RadicalCategory then ipow l == (r := retractIfCan(second l)@Union(Fraction Z,"failed")) case "failed" => iiipow l first(l) ^ (r::Fraction(Z)) else ipow l == (r := retractIfCan(second l)@Union(Z, "failed")) case "failed" => iiipow l first(l) ^ (r::Z)
else ipow l == zero?(x := first l) => zero? second l => error "0 ^ 0" 0 -- one? x or zero?(n := second l) => 1 (x = 1) or zero?(n : F := second l) => 1 -- one? n => x (n = 1) => x (u := isExpt(x, OPEXP)) case "failed" => kernel(oppow, l) rec := u::Record(var : K, exponent : Z) -- one?(y := first argument(rec.var)) or y = -1 => ((y := first argument(rec.var))=1) or y = -1 => (operator(rec.var)) (rec.exponent * y * n) kernel(oppow, l)
if R has CombinatorialFunctionCategory then iifact x == (r := retractIfCan(x)@Union(R,"failed")) case "failed" => ifact x factorial(r::R)::F
iiperm l == (r1 := retractIfCan(first l)@Union(R,"failed")) case "failed" or (r2 := retractIfCan(second l)@Union(R,"failed")) case "failed" => iperm l permutation(r1::R, r2::R)::F
if R has RetractableTo(Z) and F has Algebra(Fraction(Z)) then
-- Try to explicitly evaluete binomial coefficient -- We currently simplify binomial coefficients for non-negative -- integral second argument, using the formula -- $$ \binom{n}{k}=\frac{1}{k!}\prod_{i=0..k-1} (n-i), $$ iibinom l == (s := retractIfCan(second l)@Union(R,"failed")) case R and (t := retractIfCan(s)@Union(Z,"failed")) case Z and t>0 => ans := 1::F for i in 0..t-1 repeat ans := ans*(first l - i::R::F) (1/factorial t) * ans (s := retractIfCan(first l-second l)@Union(R,"failed")) case R and (t := retractIfCan(s)@Union(Z,"failed")) case Z and t>0 => ans := 1::F for i in 1..t repeat ans := ans*(second l+i::R::F) (1/factorial t) * ans (r1 := retractIfCan(first l)@Union(R,"failed")) case "failed" or (r2 := retractIfCan(second l)@Union(R,"failed")) case "failed" => ibinom l binomial(r1::R, r2::R)::F else iibinom l == (r1 := retractIfCan(first l)@Union(R,"failed")) case "failed" or (r2 := retractIfCan(second l)@Union(R,"failed")) case "failed" => ibinom l binomial(r1::R, r2::R)::F
else iifact x == ifact x iibinom l == ibinom l iiperm l == iperm l
if R has ElementaryFunctionCategory then iipow l == (r1 := retractIfCan(first l)@Union(R,"failed")) case "failed" or (r2 := retractIfCan(second l)@Union(R,"failed")) case "failed" => ipow l (r1::R ^ r2::R)::F else iipow l == ipow l
if F has ElementaryFunctionCategory then
dvpow2 l == if zero?(first l) then 0 else log(first l) * first(l) ^ second(l)
evaluate(opfact, iifact)$BasicOperatorFunctions1(F) evaluate(oppow, iipow) evaluate(opperm, iiperm) evaluate(opbinom, iibinom) evaluate(opsum, isum) evaluate(opdsum, iidsum) evaluate(opprod, iprod) evaluate(opdprod, iidprod) derivative(oppow, [dvpow1, dvpow2]) setProperty(opsum, SPECIALDIFF, dvsum@((List F, SE) -> F) pretend None) setProperty(opdsum, SPECIALDIFF, dvdsum@((List F, SE)->F) pretend None) setProperty(opprod, SPECIALDIFF, dvprod@((List F, SE)->F) pretend None) setProperty(opdprod, SPECIALDIFF, dvdprod@((List F, SE)->F) pretend None)
setProperty(opsum, SPECIALDISP, dsum@(List F -> O) pretend None) setProperty(opdsum, SPECIALDISP, ddsum@(List F -> O) pretend None) setProperty(opprod, SPECIALDISP, dprod@(List F -> O) pretend None) setProperty(opdprod, SPECIALDISP, ddprod@(List F -> O) pretend None) setProperty(opsum, SPECIALEQUAL, equalsumprod@((K, K) -> Boolean) pretend None) setProperty(opdsum, SPECIALEQUAL, equaldsumprod@((K, K) -> Boolean) pretend None) setProperty(opprod, SPECIALEQUAL, equalsumprod@((K, K) -> Boolean) pretend None) setProperty(opdprod, SPECIALEQUAL, equaldsumprod@((K, K) -> Boolean) pretend None)
)abbrev package FSPECF FunctionalSpecialFunction )boot $tryRecompileArguments := nil ++ Provides the special functions ++ Author: Manuel Bronstein ++ Date Created: 18 Apr 1989 ++ Description: Provides some special functions over an integral domain. ++ Keywords: special, function. ++ Date Last Updated: 2 October 2014 ++ Added: 'conjugate' ++ Modied: 'abs' FunctionalSpecialFunction(R, F) : Exports == Implementation where R : Join(Comparable, IntegralDomain) F : FunctionSpace R
OP ==> BasicOperator K ==> Kernel F SE ==> Symbol SPECIALDIFF ==> '%specialDiff
Exports ==> with belong? : OP -> Boolean ++ belong?(op) is true if op is a special function operator; operator : OP -> OP ++ operator(op) returns a copy of op with the domain-dependent ++ properties appropriate for F; ++ error if op is not a special function operator abs : F -> F ++ abs(f) returns the absolute value operator applied to f conjugate: F -> F ++ conjugate(f) returns the conjugate operator applied to f Gamma : F -> F ++ Gamma(f) returns the formal Gamma function applied to f Gamma : (F, F) -> F ++ Gamma(a, x) returns the incomplete Gamma function applied to a and x Beta : (F, F) -> F ++ Beta(x, y) returns the beta function applied to x and y digamma : F->F ++ digamma(x) returns the digamma function applied to x polygamma : (F, F) ->F ++ polygamma(x, y) returns the polygamma function applied to x and y besselJ : (F, F) -> F ++ besselJ(x, y) returns the besselj function applied to x and y besselY : (F, F) -> F ++ besselY(x, y) returns the bessely function applied to x and y besselI : (F, F) -> F ++ besselI(x, y) returns the besseli function applied to x and y besselK : (F, F) -> F ++ besselK(x, y) returns the besselk function applied to x and y airyAi : F -> F ++ airyAi(x) returns the Airy Ai function applied to x airyAiPrime : F -> F ++ airyAiPrime(x) returns the derivative of Airy Ai function applied to x airyBi : F -> F ++ airyBi(x) returns the Airy Bi function applied to x airyBiPrime : F -> F ++ airyBiPrime(x) returns the derivative of Airy Bi function applied to x lambertW : F -> F ++ lambertW(x) is the Lambert W function at x polylog : (F, F) -> F ++ polylog(s, x) is the polylogarithm of order s at x weierstrassP : (F, F, F) -> F ++ weierstrassP(g2, g3, x) weierstrassPPrime : (F, F, F) -> F ++ weierstrassPPrime(g2, g3, x) weierstrassSigma : (F, F, F) -> F ++ weierstrassSigma(g2, g3, x) weierstrassZeta : (F, F, F) -> F ++ weierstrassZeta(g2, g3, x) -- weierstrassPInverse : (F, F, F) -> F -- ++ weierstrassPInverse(g2, g3, z) is the inverse of Weierstrass -- ++ P function, defined by the formula -- ++ \spad{weierstrassP(g2, g3, weierstrassPInverse(g2, g3, z)) = z} whittakerM : (F, F, F) -> F ++ whittakerM(k, m, z) is the Whittaker M function whittakerW : (F, F, F) -> F ++ whittakerW(k, m, z) is the Whittaker W function angerJ : (F, F) -> F ++ angerJ(v, z) is the Anger J function weberE : (F, F) -> F ++ weberE(v, z) is the Weber E function struveH : (F, F) -> F ++ struveH(v, z) is the Struve H function struveL : (F, F) -> F ++ struveL(v, z) is the Struve L function defined by the formula ++ \spad{struveL(v, z) = -%i^exp(-v*%pi*%i/2)*struveH(v, %i*z)} hankelH1 : (F, F) -> F ++ hankelH1(v, z) is first Hankel function (Bessel function of ++ the third kind) hankelH2 : (F, F) -> F ++ hankelH2(v, z) is the second Hankel function (Bessel function of ++ the third kind) lommelS1 : (F, F, F) -> F ++ lommelS1(mu, nu, z) is the Lommel s function lommelS2 : (F, F, F) -> F ++ lommelS2(mu, nu, z) is the Lommel S function kummerM : (F, F, F) -> F ++ kummerM(a, b, z) is the Kummer M function kummerU : (F, F, F) -> F ++ kummerU(a, b, z) is the Kummer U function legendreP : (F, F, F) -> F ++ legendreP(nu, mu, z) is the Legendre P function legendreQ : (F, F, F) -> F ++ legendreQ(nu, mu, z) is the Legendre Q function kelvinBei : (F, F) -> F ++ kelvinBei(v, z) is the Kelvin bei function defined by equality ++ \spad{kelvinBei(v, z) = imag(besselJ(v, exp(3*%pi*%i/4)*z))} ++ for z and v real kelvinBer : (F, F) -> F ++ kelvinBer(v, z) is the Kelvin ber function defined by equality ++ \spad{kelvinBer(v, z) = real(besselJ(v, exp(3*%pi*%i/4)*z))} ++ for z and v real kelvinKei : (F, F) -> F ++ kelvinKei(v, z) is the Kelvin kei function defined by equality ++ \spad{kelvinKei(v, z) = ++ imag(exp(-v*%pi*%i/2)*besselK(v, exp(%pi*%i/4)*z))} ++ for z and v real kelvinKer : (F, F) -> F ++ kelvinKer(v, z) is the Kelvin kei function defined by equality ++ \spad{kelvinKer(v, z) = ++ real(exp(-v*%pi*%i/2)*besselK(v, exp(%pi*%i/4)*z))} ++ for z and v real ellipticK : F -> F ++ ellipticK(m) is the complete elliptic integral of the ++ first kind: \spad{ellipticK(m) = ++ integrate(1/sqrt((1-t^2)*(1-m*t^2)), t = 0..1)} ellipticE : F -> F ++ ellipticE(m) is the complete elliptic integral of the ++ second kind: \spad{ellipticE(m) = ++ integrate(sqrt(1-m*t^2)/sqrt(1-t^2), t = 0..1)} ellipticE : (F, F) -> F ++ ellipticE(z, m) is the incomplete elliptic integral of the ++ second kind: \spad{ellipticE(z, m) = ++ integrate(sqrt(1-m*t^2)/sqrt(1-t^2), t = 0..z)} ellipticF : (F, F) -> F ++ ellipticF(z, m) is the incomplete elliptic integral of the ++ first kind : \spad{ellipticF(z, m) = ++ integrate(1/sqrt((1-t^2)*(1-m*t^2)), t = 0..z)} ellipticPi : (F, F, F) -> F ++ ellipticPi(z, n, m) is the incomplete elliptic integral of ++ the third kind: \spad{ellipticPi(z, n, m) = ++ integrate(1/((1-n*t^2)*sqrt((1-t^2)*(1-m*t^2))), t = 0..z)} jacobiSn : (F, F) -> F ++ jacobiSn(z, m) is the Jacobi elliptic sn function, defined ++ by the formula \spad{jacobiSn(ellipticF(z, m), m) = z} jacobiCn : (F, F) -> F ++ jacobiCn(z, m) is the Jacobi elliptic cn function, defined ++ by \spad{jacobiCn(z, m)^2 + jacobiSn(z, m)^2 = 1} and ++ \spad{jacobiCn(0, m) = 1} jacobiDn : (F, F) -> F ++ jacobiDn(z, m) is the Jacobi elliptic dn function, defined ++ by \spad{jacobiDn(z, m)^2 + m*jacobiSn(z, m)^2 = 1} and ++ \spad{jacobiDn(0, m) = 1} jacobiZeta : (F, F) -> F ++ jacobiZeta(z, m) is the Jacobi elliptic zeta function, defined ++ by \spad{D(jacobiZeta(z, m), z) = ++ jacobiDn(z, m)^2 - ellipticE(m)/ellipticK(m)} and ++ \spad{jacobiZeta(0, m) = 0}. jacobiTheta : (F, F) -> F ++ jacobiTheta(q, z) is the third Jacobi Theta function lerchPhi : (F, F, F) -> F ++ lerchPhi(z, s, a) is the Lerch Phi function riemannZeta : F -> F ++ riemannZeta(z) is the Riemann Zeta function charlierC : (F, F, F) -> F ++ charlierC(n, a, z) is the Charlier polynomial hermiteH : (F, F) -> F ++ hermiteH(n, z) is the Hermite polynomial jacobiP : (F, F, F, F) -> F ++ jacobiP(n, a, b, z) is the Jacobi polynomial laguerreL: (F, F, F) -> F ++ laguerreL(n, a, z) is the Laguerre polynomial meixnerM : (F, F, F, F) -> F ++ meixnerM(n, b, c, z) is the Meixner polynomial if F has RetractableTo(Integer) then hypergeometricF : (List F, List F, F) -> F ++ hypergeometricF(la, lb, z) is the generalized hypergeometric ++ function meijerG : (List F, List F, List F, List F, F) -> F ++ meijerG(la, lb, lc, ld, z) is the meijerG function -- Functions below should be local but conditional iiGamma : F -> F ++ iiGamma(x) should be local but conditional; iiabs : F -> F ++ iiabs(x) should be local but conditional; iiconjugate: F -> F ++ iiconjugate(x) should be local but conditional; iiBeta : List F -> F ++ iiBeta(x) should be local but conditional; iidigamma : F -> F ++ iidigamma(x) should be local but conditional; iipolygamma : List F -> F ++ iipolygamma(x) should be local but conditional; iiBesselJ : List F -> F ++ iiBesselJ(x) should be local but conditional; iiBesselY : List F -> F ++ iiBesselY(x) should be local but conditional; iiBesselI : List F -> F ++ iiBesselI(x) should be local but conditional; iiBesselK : List F -> F ++ iiBesselK(x) should be local but conditional; iiAiryAi : F -> F ++ iiAiryAi(x) should be local but conditional; iiAiryAiPrime : F -> F ++ iiAiryAiPrime(x) should be local but conditional; iiAiryBi : F -> F ++ iiAiryBi(x) should be local but conditional; iiAiryBiPrime : F -> F ++ iiAiryBiPrime(x) should be local but conditional; iAiryAi : F -> F ++ iAiryAi(x) should be local but conditional; iAiryAiPrime : F -> F ++ iAiryAiPrime(x) should be local but conditional; iAiryBi : F -> F ++ iAiryBi(x) should be local but conditional; iAiryBiPrime : F -> F ++ iAiryBiPrime(x) should be local but conditional; iiHypergeometricF : List F -> F ++ iiHypergeometricF(l) should be local but conditional; iiPolylog : (F, F) -> F ++ iiPolylog(x, s) should be local but conditional; iLambertW : F -> F ++ iLambertW(x) should be local but conditional;
Implementation ==> add
SPECIAL := 'special
INP ==> InputForm
SPECIALINPUT ==> '%specialInput
iabs : F -> F iGamma : F -> F iBeta : (F, F) -> F idigamma : F -> F iiipolygamma : (F, F) -> F iiiBesselJ : (F, F) -> F iiiBesselY : (F, F) -> F iiiBesselI : (F, F) -> F iiiBesselK : (F, F) -> F iPolylog : List F -> F
iWeierstrassP : (F, F, F) -> F iWeierstrassPPrime : (F, F, F) -> F iWeierstrassSigma : (F, F, F) -> F iWeierstrassZeta : (F, F, F) -> F
iiWeierstrassP : List F -> F iiWeierstrassPPrime : List F -> F iiWeierstrassSigma : List F -> F iiWeierstrassZeta : List F -> F iiMeijerG : List F -> F
opabs := operator('abs)$CommonOperators opconjugate := operator('conjugate)$CommonOperators opsqrt := operator('sqrt)$CommonOperators opGamma := operator('Gamma)$CommonOperators opGamma2 := operator('Gamma2)$CommonOperators opBeta := operator('Beta)$CommonOperators opdigamma := operator('digamma)$CommonOperators oppolygamma := operator('polygamma)$CommonOperators opBesselJ := operator('besselJ)$CommonOperators opBesselY := operator('besselY)$CommonOperators opBesselI := operator('besselI)$CommonOperators opBesselK := operator('besselK)$CommonOperators opAiryAi := operator('airyAi)$CommonOperators opAiryAiPrime := operator('airyAiPrime)$CommonOperators opAiryBi := operator('airyBi)$CommonOperators opAiryBiPrime := operator('airyBiPrime)$CommonOperators opLambertW := operator('lambertW)$CommonOperators opPolylog := operator('polylog)$CommonOperators opWeierstrassP := operator('weierstrassP)$CommonOperators opWeierstrassPPrime := operator('weierstrassPPrime)$CommonOperators opWeierstrassSigma := operator('weierstrassSigma)$CommonOperators opWeierstrassZeta := operator('weierstrassZeta)$CommonOperators opHypergeometricF := operator('hypergeometricF)$CommonOperators opMeijerG := operator('meijerG)$CommonOperators opCharlierC := operator('charlierC)$CommonOperators opHermiteH := operator('hermiteH)$CommonOperators opJacobiP := operator('jacobiP)$CommonOperators opLaguerreL := operator('laguerreL)$CommonOperators opMeixnerM := operator('meixnerM)$CommonOperators op_log_gamma := operator('%logGamma)$CommonOperators op_eis := operator('%eis)$CommonOperators op_erfs := operator('%erfs)$CommonOperators op_erfis := operator('%erfis)$CommonOperators
abs x == opabs x conjugate x == opconjugate x Gamma(x) == opGamma(x) Gamma(a, x) == opGamma2(a, x) Beta(x, y) == opBeta(x, y) digamma x == opdigamma(x) polygamma(k, x)== oppolygamma(k, x) besselJ(a, x) == opBesselJ(a, x) besselY(a, x) == opBesselY(a, x) besselI(a, x) == opBesselI(a, x) besselK(a, x) == opBesselK(a, x) airyAi(x) == opAiryAi(x) airyAiPrime(x) == opAiryAiPrime(x) airyBi(x) == opAiryBi(x) airyBiPrime(x) == opAiryBiPrime(x) lambertW(x) == opLambertW(x) polylog(s, x) == opPolylog(s, x) weierstrassP(g2, g3, x) == opWeierstrassP(g2, g3, x) weierstrassPPrime(g2, g3, x) == opWeierstrassPPrime(g2, g3, x) weierstrassSigma(g2, g3, x) == opWeierstrassSigma(g2, g3, x) weierstrassZeta(g2, g3, x) == opWeierstrassZeta(g2, g3, x) if F has RetractableTo(Integer) then hypergeometricF(a, b, z) == nai := #a nbi := #b z = 0 and nai <= nbi + 1 => 1 p := (#a)::F q := (#b)::F opHypergeometricF concat(concat(a, concat(b, [z])), [p, q])
meijerG(a, b, c, d, z) == n1 := (#a)::F n2 := (#b)::F m1 := (#c)::F m2 := (#d)::F opMeijerG concat(concat(a, concat(b, concat(c, concat(d, [z])))), [n1, n2, m1, m2])
import from List Kernel(F) opdiff := operator(operator('%diff)$CommonOperators)$F dummy ==> new()$SE :: F
ahalf : F := recip(2::F)::F athird : F := recip(3::F)::F afourth : F := recip(4::F)::F asixth : F := recip(6::F)::F twothirds : F := 2*athird threehalfs : F := 3*ahalf
-- Helpers for partially defined derivatives
grad2(l : List F, t : SE, op : OP, d2 : (F, F) -> F ) : F == x1 := l(1) x2 := l(2) dm := dummy differentiate(x1, t)*kernel(opdiff, [op [dm, x2], dm, x1]) + differentiate(x2, t)*d2(x1, x2)
grad3(l : List F, t : SE, op : OP, d3 : (F, F, F) -> F ) : F == x1 := l(1) x2 := l(2) x3 := l(3) dm1 := dummy dm2 := dummy differentiate(x1, t)*kernel(opdiff, [op [dm1, x2, x3], dm1, x1]) + differentiate(x2, t)*kernel(opdiff, [op [x1, dm2, x3], dm2, x2]) + differentiate(x3, t)*d3(x1, x2, x3)
grad4(l : List F, t : SE, op : OP, d4 : (F, F, F, F) -> F ) : F == x1 := l(1) x2 := l(2) x3 := l(3) x4 := l(4) dm1 := dummy dm2 := dummy dm3 := dummy kd1 := kernel(opdiff, [op [dm1, x2, x3, x4], dm1, x1]) kd2 := kernel(opdiff, [op [x1, dm2, x3, x4], dm2, x2]) kd3 := kernel(opdiff, [op [x1, x2, dm3, x4], dm3, x3]) differentiate(x1, t)*kd1 + differentiate(x2, t)*kd2 + differentiate(x3, t)*kd3 + differentiate(x4, t)*d4(x1, x2, x3, x4)
-- handle WeierstrassPInverse
)if false
opWeierstrassPInverse := operator('weierstrassPInverse)$CommonOperators
weierstrassPInverse(g2, g3, z) == opWeierstrassPInverse(g2, g3, z)
eWeierstrassPInverse(g2 : F, g3 : F, z : F) : F == kernel(opWeierstrassPInverse, [g2, g3, z])
elWeierstrassPInverse(l : List F) : F == eWeierstrassPInverse(l(1), l(2), l(3)) evaluate(opWeierstrassPInverse, elWeierstrassPInverse)$BasicOperatorFunctions1(F)
if F has RadicalCategory then
eWeierstrassPInverseGrad_g2(l : List F) : F == g2 := l(1) g3 := l(2) z := l(3) error "unimplemented"
eWeierstrassPInverseGrad_g3(l : List F) : F == g2 := l(1) g3 := l(2) z := l(3) error "unimplemented"
eWeierstrassPInverseGrad_z(l : List F) : F == g2 := l(1) g3 := l(2) z := l(3) 1/sqrt(4*z^3 - g2*z - g3)
derivative(opWeierstrassPInverse, [eWeierstrassPInverseGrad_g2, eWeierstrassPInverseGrad_g3, eWeierstrassPInverseGrad_z])
)endif
-- handle WhittakerM
opWhittakerM := operator('whittakerM)$CommonOperators
whittakerM(k, m, z) == opWhittakerM(k, m, z)
eWhittakerM(k : F, m : F, z : F) : F == kernel(opWhittakerM, [k, m, z])
elWhittakerM(l : List F) : F == eWhittakerM(l(1), l(2), l(3)) evaluate(opWhittakerM, elWhittakerM)$BasicOperatorFunctions1(F)
eWhittakerMGrad_z(k : F, m : F, z : F) : F == (ahalf - k/z)*whittakerM(k, m, z) + (ahalf + k + m)*whittakerM(k + 1, m, z)/z
dWhittakerM(l : List F, t : SE) : F == grad3(l, t, opWhittakerM, eWhittakerMGrad_z)
setProperty(opWhittakerM, SPECIALDIFF, dWhittakerM@((List F, SE)->F) pretend None)
-- handle WhittakerW
opWhittakerW := operator('whittakerW)$CommonOperators
whittakerW(k, m, z) == opWhittakerW(k, m, z)
eWhittakerW(k : F, m : F, z : F) : F == kernel(opWhittakerW, [k, m, z])
elWhittakerW(l : List F) : F == eWhittakerW(l(1), l(2), l(3)) evaluate(opWhittakerW, elWhittakerW)$BasicOperatorFunctions1(F)
eWhittakerWGrad_z(k : F, m : F, z : F) : F == (ahalf - k/z)*whittakerW(k, m, z) - whittakerW(k + 1, m, z)/z
dWhittakerW(l : List F, t : SE) : F == grad3(l, t, opWhittakerW, eWhittakerWGrad_z)
setProperty(opWhittakerW, SPECIALDIFF, dWhittakerW@((List F, SE)->F) pretend None)
-- handle AngerJ
opAngerJ := operator('angerJ)$CommonOperators
angerJ(v, z) == opAngerJ(v, z)
if F has TranscendentalFunctionCategory then
eAngerJ(v : F, z : F) : F == z = 0 => sin(v*pi())/(v*pi()) kernel(opAngerJ, [v, z])
elAngerJ(l : List F) : F == eAngerJ(l(1), l(2)) evaluate(opAngerJ, elAngerJ)$BasicOperatorFunctions1(F)
eAngerJGrad_z(v : F, z : F) : F == -angerJ(v + 1, z) + v*angerJ(v, z)/z - sin(v*pi())/(pi()*z)
dAngerJ(l : List F, t : SE) : F == grad2(l, t, opAngerJ, eAngerJGrad_z)
setProperty(opAngerJ, SPECIALDIFF, dAngerJ@((List F, SE)->F) pretend None)
else
eeAngerJ(l : List F) : F == kernel(opAngerJ, l) evaluate(opAngerJ, eeAngerJ)$BasicOperatorFunctions1(F)
-- handle WeberE
opWeberE := operator('weberE)$CommonOperators
weberE(v, z) == opWeberE(v, z)
if F has TranscendentalFunctionCategory then
eWeberE(v : F, z : F) : F == z = 0 => 2*sin(ahalf*v*pi())^2/(v*pi()) kernel(opWeberE, [v, z])
elWeberE(l : List F) : F == eWeberE(l(1), l(2)) evaluate(opWeberE, elWeberE)$BasicOperatorFunctions1(F)
eWeberEGrad_z(v : F, z : F) : F == -weberE(v + 1, z) + v*weberE(v, z)/z - (1 - cos(v*pi()))/(pi()*z)
dWeberE(l : List F, t : SE) : F == grad2(l, t, opWeberE, eWeberEGrad_z)
setProperty(opWeberE, SPECIALDIFF, dWeberE@((List F, SE)->F) pretend None)
else
eeWeberE(l : List F) : F == kernel(opWeberE, l) evaluate(opWeberE, eeWeberE)$BasicOperatorFunctions1(F)
-- handle StruveH
opStruveH := operator('struveH)$CommonOperators
struveH(v, z) == opStruveH(v, z)
eStruveH(v : F, z : F) : F == kernel(opStruveH, [v, z])
elStruveH(l : List F) : F == eStruveH(l(1), l(2)) evaluate(opStruveH, elStruveH)$BasicOperatorFunctions1(F)
if F has TranscendentalFunctionCategory and F has RadicalCategory then
eStruveHGrad_z(v : F, z : F) : F == -struveH(v + 1, z) + v*struveH(v, z)/z + (ahalf*z)^v/(sqrt(pi())*Gamma(v + threehalfs))
dStruveH(l : List F, t : SE) : F == grad2(l, t, opStruveH, eStruveHGrad_z)
setProperty(opStruveH, SPECIALDIFF, dStruveH@((List F, SE)->F) pretend None)
-- handle StruveL
opStruveL := operator('struveL)$CommonOperators
struveL(v, z) == opStruveL(v, z)
eStruveL(v : F, z : F) : F == kernel(opStruveL, [v, z])
elStruveL(l : List F) : F == eStruveL(l(1), l(2)) evaluate(opStruveL, elStruveL)$BasicOperatorFunctions1(F)
if F has TranscendentalFunctionCategory and F has RadicalCategory then
eStruveLGrad_z(v : F, z : F) : F == struveL(v + 1, z) + v*struveL(v, z)/z + (ahalf*z)^v/(sqrt(pi())*Gamma(v + threehalfs))
dStruveL(l : List F, t : SE) : F == grad2(l, t, opStruveL, eStruveLGrad_z)
setProperty(opStruveL, SPECIALDIFF, dStruveL@((List F, SE)->F) pretend None)
-- handle HankelH1
opHankelH1 := operator('hankelH1)$CommonOperators
hankelH1(v, z) == opHankelH1(v, z)
eHankelH1(v : F, z : F) : F == kernel(opHankelH1, [v, z])
elHankelH1(l : List F) : F == eHankelH1(l(1), l(2)) evaluate(opHankelH1, elHankelH1)$BasicOperatorFunctions1(F)
eHankelH1Grad_z(v : F, z : F) : F == -hankelH1(v + 1, z) + v*hankelH1(v, z)/z
dHankelH1(l : List F, t : SE) : F == grad2(l, t, opHankelH1, eHankelH1Grad_z)
setProperty(opHankelH1, SPECIALDIFF, dHankelH1@((List F, SE)->F) pretend None)
-- handle HankelH2
opHankelH2 := operator('hankelH2)$CommonOperators
hankelH2(v, z) == opHankelH2(v, z)
eHankelH2(v : F, z : F) : F == kernel(opHankelH2, [v, z])
elHankelH2(l : List F) : F == eHankelH2(l(1), l(2)) evaluate(opHankelH2, elHankelH2)$BasicOperatorFunctions1(F)
eHankelH2Grad_z(v : F, z : F) : F == -hankelH2(v + 1, z) + v*hankelH2(v, z)/z
dHankelH2(l : List F, t : SE) : F == grad2(l, t, opHankelH2, eHankelH2Grad_z)
setProperty(opHankelH2, SPECIALDIFF, dHankelH2@((List F, SE)->F) pretend None)
-- handle LommelS1
opLommelS1 := operator('lommelS1)$CommonOperators
lommelS1(m, v, z) == opLommelS1(m, v, z)
eLommelS1(m : F, v : F, z : F) : F == kernel(opLommelS1, [m, v, z])
elLommelS1(l : List F) : F == eLommelS1(l(1), l(2), l(3)) evaluate(opLommelS1, elLommelS1)$BasicOperatorFunctions1(F)
eLommelS1Grad_z(m : F, v : F, z : F) : F == -v*lommelS1(m, v, z)/z + (m + v - 1)*lommelS1(m - 1, v - 1, z)
dLommelS1(l : List F, t : SE) : F == grad3(l, t, opLommelS1, eLommelS1Grad_z)
setProperty(opLommelS1, SPECIALDIFF, dLommelS1@((List F, SE)->F) pretend None)
-- handle LommelS2
opLommelS2 := operator('lommelS2)$CommonOperators
lommelS2(mu, nu, z) == opLommelS2(mu, nu, z)
eLommelS2(mu : F, nu : F, z : F) : F == kernel(opLommelS2, [mu, nu, z])
elLommelS2(l : List F) : F == eLommelS2(l(1), l(2), l(3)) evaluate(opLommelS2, elLommelS2)$BasicOperatorFunctions1(F)
eLommelS2Grad_z(m : F, v : F, z : F) : F == -v*lommelS2(m, v, z)/z + (m + v - 1)*lommelS2(m - 1, v - 1, z)
dLommelS2(l : List F, t : SE) : F == grad3(l, t, opLommelS2, eLommelS2Grad_z)
setProperty(opLommelS2, SPECIALDIFF, dLommelS2@((List F, SE)->F) pretend None)
-- handle KummerM
opKummerM := operator('kummerM)$CommonOperators
kummerM(mu, nu, z) == opKummerM(mu, nu, z)
eKummerM(a : F, b : F, z : F) : F == z = 0 => 1 kernel(opKummerM, [a, b, z])
elKummerM(l : List F) : F == eKummerM(l(1), l(2), l(3)) evaluate(opKummerM, elKummerM)$BasicOperatorFunctions1(F)
eKummerMGrad_z(a : F, b : F, z : F) : F == ((z + a - b)*kummerM(a, b, z)+(b - a)*kummerM(a - 1, b, z))/z
dKummerM(l : List F, t : SE) : F == grad3(l, t, opKummerM, eKummerMGrad_z)
setProperty(opKummerM, SPECIALDIFF, dKummerM@((List F, SE)->F) pretend None)
-- handle KummerU
opKummerU := operator('kummerU)$CommonOperators
kummerU(a, b, z) == opKummerU(a, b, z)
eKummerU(a : F, b : F, z : F) : F == kernel(opKummerU, [a, b, z])
elKummerU(l : List F) : F == eKummerU(l(1), l(2), l(3)) evaluate(opKummerU, elKummerU)$BasicOperatorFunctions1(F)
eKummerUGrad_z(a : F, b : F, z : F) : F == ((z + a - b)*kummerU(a, b, z) - kummerU(a - 1, b, z))/z
dKummerU(l : List F, t : SE) : F == grad3(l, t, opKummerU, eKummerUGrad_z)
setProperty(opKummerU, SPECIALDIFF, dKummerU@((List F, SE)->F) pretend None)
-- handle LegendreP
opLegendreP := operator('legendreP)$CommonOperators
legendreP(nu, mu, z) == opLegendreP(nu, mu, z)
eLegendreP(nu : F, mu : F, z : F) : F == kernel(opLegendreP, [nu, mu, z])
elLegendreP(l : List F) : F == eLegendreP(l(1), l(2), l(3)) evaluate(opLegendreP, elLegendreP)$BasicOperatorFunctions1(F)
eLegendrePGrad_z(nu : F, mu : F, z : F) : F == (nu - mu + 1)*legendreP(nu + 1, mu, z) - (nu + 1)*z*legendreP(nu, mu, z)
dLegendreP(l : List F, t : SE) : F == grad3(l, t, opLegendreP, eLegendrePGrad_z)
setProperty(opLegendreP, SPECIALDIFF, dLegendreP@((List F, SE)->F) pretend None)
-- handle LegendreQ
opLegendreQ := operator('legendreQ)$CommonOperators
legendreQ(nu, mu, z) == opLegendreQ(nu, mu, z)
eLegendreQ(nu : F, mu : F, z : F) : F == kernel(opLegendreQ, [nu, mu, z])
elLegendreQ(l : List F) : F == eLegendreQ(l(1), l(2), l(3)) evaluate(opLegendreQ, elLegendreQ)$BasicOperatorFunctions1(F)
eLegendreQGrad_z(nu : F, mu : F, z : F) : F == (nu - mu + 1)*legendreQ(nu + 1, mu, z) - (nu + 1)*z*legendreQ(nu, mu, z)
dLegendreQ(l : List F, t : SE) : F == grad3(l, t, opLegendreQ, eLegendreQGrad_z)
setProperty(opLegendreQ, SPECIALDIFF, dLegendreQ@((List F, SE)->F) pretend None)
-- handle KelvinBei
opKelvinBei := operator('kelvinBei)$CommonOperators
kelvinBei(v, z) == opKelvinBei(v, z)
eKelvinBei(v : F, z : F) : F == kernel(opKelvinBei, [v, z])
elKelvinBei(l : List F) : F == eKelvinBei(l(1), l(2)) evaluate(opKelvinBei, elKelvinBei)$BasicOperatorFunctions1(F)
if F has RadicalCategory then
eKelvinBeiGrad_z(v : F, z : F) : F == ahalf*sqrt(2::F)*(kelvinBei(v + 1, z) - kelvinBer(v + 1, z)) + v*kelvinBei(v, z)/z
dKelvinBei(l : List F, t : SE) : F == grad2(l, t, opKelvinBei, eKelvinBeiGrad_z)
setProperty(opKelvinBei, SPECIALDIFF, dKelvinBei@((List F, SE)->F) pretend None)
-- handle KelvinBer
opKelvinBer := operator('kelvinBer)$CommonOperators
kelvinBer(v, z) == opKelvinBer(v, z)
eKelvinBer(v : F, z : F) : F == kernel(opKelvinBer, [v, z])
elKelvinBer(l : List F) : F == eKelvinBer(l(1), l(2)) evaluate(opKelvinBer, elKelvinBer)$BasicOperatorFunctions1(F)
if F has RadicalCategory then
eKelvinBerGrad_z(v : F, z : F) : F == ahalf*sqrt(2::F)*(kelvinBer(v + 1, z) + kelvinBei(v + 1, z)) + v*kelvinBer(v, z)/z
dKelvinBer(l : List F, t : SE) : F == grad2(l, t, opKelvinBer, eKelvinBerGrad_z)
setProperty(opKelvinBer, SPECIALDIFF, dKelvinBer@((List F, SE)->F) pretend None)
-- handle KelvinKei
opKelvinKei := operator('kelvinKei)$CommonOperators
kelvinKei(v, z) == opKelvinKei(v, z)
eKelvinKei(v : F, z : F) : F == kernel(opKelvinKei, [v, z])
elKelvinKei(l : List F) : F == eKelvinKei(l(1), l(2)) evaluate(opKelvinKei, elKelvinKei)$BasicOperatorFunctions1(F)
if F has RadicalCategory then
eKelvinKeiGrad_z(v : F, z : F) : F == ahalf*sqrt(2::F)*(kelvinKei(v + 1, z) - kelvinKer(v + 1, z)) + v*kelvinKei(v, z)/z
dKelvinKei(l : List F, t : SE) : F == grad2(l, t, opKelvinKei, eKelvinKeiGrad_z)
setProperty(opKelvinKei, SPECIALDIFF, dKelvinKei@((List F, SE)->F) pretend None)
-- handle KelvinKer
opKelvinKer := operator('kelvinKer)$CommonOperators
kelvinKer(v, z) == opKelvinKer(v, z)
eKelvinKer(v : F, z : F) : F == kernel(opKelvinKer, [v, z])
elKelvinKer(l : List F) : F == eKelvinKer(l(1), l(2)) evaluate(opKelvinKer, elKelvinKer)$BasicOperatorFunctions1(F)
if F has RadicalCategory then
eKelvinKerGrad_z(v : F, z : F) : F == ahalf*sqrt(2::F)*(kelvinKer(v + 1, z) + kelvinKei(v + 1, z)) + v*kelvinKer(v, z)/z
dKelvinKer(l : List F, t : SE) : F == grad2(l, t, opKelvinKer, eKelvinKerGrad_z)
setProperty(opKelvinKer, SPECIALDIFF, dKelvinKer@((List F, SE)->F) pretend None)
-- handle EllipticK
opEllipticK := operator('ellipticK)$CommonOperators
ellipticK(m) == opEllipticK(m)
eEllipticK(m : F) : F == kernel(opEllipticK, [m])
elEllipticK(l : List F) : F == eEllipticK(l(1)) evaluate(opEllipticK, elEllipticK)$BasicOperatorFunctions1(F)
dEllipticK(m : F) : F == ahalf*(ellipticE(m) - (1 - m)*ellipticK(m))/(m*(1 - m))
derivative(opEllipticK, dEllipticK)
-- handle one argument EllipticE
opEllipticE := operator('ellipticE)$CommonOperators
ellipticE(m) == opEllipticE(m)
eEllipticE(m : F) : F == kernel(opEllipticE, [m])
elEllipticE(l : List F) : F == eEllipticE(l(1)) evaluate(opEllipticE, elEllipticE)$BasicOperatorFunctions1(F)
dEllipticE(m : F) : F == ahalf*(ellipticE(m) - ellipticK(m))/m
derivative(opEllipticE, dEllipticE)
-- handle two argument EllipticE
opEllipticE2 := operator('ellipticE2)$CommonOperators
ellipticE(z, m) == opEllipticE2(z, m)
eEllipticE2(z : F, m : F) : F == z = 0 => 0 z = 1 => eEllipticE(m) kernel(opEllipticE2, [z, m])
elEllipticE2(l : List F) : F == eEllipticE2(l(1), l(2)) evaluate(opEllipticE2, elEllipticE2)$BasicOperatorFunctions1(F)
if F has RadicalCategory then
eEllipticE2Grad_z(l : List F) : F == z := l(1) m := l(2) sqrt(1 - m*z^2)/sqrt(1 - z^2)
eEllipticE2Grad_m(l : List F) : F == z := l(1) m := l(2) ahalf*(ellipticE(z, m) - ellipticF(z, m))/m
derivative(opEllipticE2, [eEllipticE2Grad_z, eEllipticE2Grad_m])
inEllipticE2(li : List INP) : INP == convert cons(convert('ellipticE), li)
input(opEllipticE2, inEllipticE2@((List INP) -> INP))
-- handle EllipticF
opEllipticF := operator('ellipticF)$CommonOperators
ellipticF(z, m) == opEllipticF(z, m)
eEllipticF(z : F, m : F) : F == z = 0 => 0 z = 1 => ellipticK(m) kernel(opEllipticF, [z, m])
elEllipticF(l : List F) : F == eEllipticF(l(1), l(2)) evaluate(opEllipticF, elEllipticF)$BasicOperatorFunctions1(F)
if F has RadicalCategory then
eEllipticFGrad_z(l : List F) : F == z := l(1) m := l(2) 1/(sqrt(1 - m*z^2)*sqrt(1 - z^2))
eEllipticFGrad_m(l : List F) : F == z := l(1) m := l(2) ahalf*((ellipticE(z, m) - (1 - m)*ellipticF(z, m))/m - z*sqrt(1 - z^2)/sqrt(1 - m*z^2))/(1 - m)
derivative(opEllipticF, [eEllipticFGrad_z, eEllipticFGrad_m])
-- handle EllipticPi
opEllipticPi := operator('ellipticPi)$CommonOperators
ellipticPi(z, n, m) == opEllipticPi(z, n, m)
eEllipticPi(z : F, n : F, m : F) : F == z = 0 => 0 kernel(opEllipticPi, [z, n, m])
elEllipticPi(l : List F) : F == eEllipticPi(l(1), l(2), l(3)) evaluate(opEllipticPi, elEllipticPi)$BasicOperatorFunctions1(F)
if F has RadicalCategory then
eEllipticPiGrad_z(l : List F) : F == z := l(1) n := l(2) m := l(3) 1/((1 - n*z^2)*sqrt(1 - m*z^2)*sqrt(1 - z^2))
eEllipticPiGrad_n(l : List F) : F == z := l(1) n := l(2) m := l(3) t1 := -(n^2 - m)*ellipticPi(z, n, m)/((n - 1)*(n - m)*n) t2 := ellipticF(z, m)/((n - 1)*n) t3 := -ellipticE(z, m)/((n - 1)*(n - m)) t4 := n*z*sqrt(1 - m*z^2)*sqrt(1 - z^2)/ ((1 - n*z^2)*(n - 1)*(n - m)) ahalf*(t1 + t2 + t3 + t4)
eEllipticPiGrad_m(l : List F) : F == z := l(1) n := l(2) m := l(3) t1 := m*z*sqrt(1 - z^2)/sqrt(1 - m*z^2) t2 := (-ellipticE(z, m) + t1)/(1 - m) ahalf*(ellipticPi(z, n, m) + t2)/(n - m)
derivative(opEllipticPi, [eEllipticPiGrad_z, eEllipticPiGrad_n, eEllipticPiGrad_m])
-- handle JacobiSn
opJacobiSn := operator('jacobiSn)$CommonOperators
jacobiSn(z, m) == opJacobiSn(z, m)
eJacobiSn(z : F, m : F) : F == z = 0 => 0 if is?(z, opEllipticF) then args := argument(retract(z)@K) m = args(2) => return args(1) kernel(opJacobiSn, [z, m])
elJacobiSn : List F -> F elJacobiSn(l : List F) : F == eJacobiSn(l(1), l(2)) evaluate(opJacobiSn, elJacobiSn)$BasicOperatorFunctions1(F)
jacobiGradHelper(z : F, m : F) : F == (z - ellipticE(jacobiSn(z, m), m)/(1 - m))/m
eJacobiSnGrad_z(l : List F) : F == z := l(1) m := l(2) jacobiCn(z, m)*jacobiDn(z, m)
eJacobiSnGrad_m(l : List F) : F == z := l(1) m := l(2) ahalf*(eJacobiSnGrad_z(l)*jacobiGradHelper(z, m) + jacobiSn(z, m)*jacobiCn(z, m)^2/(1 - m))
derivative(opJacobiSn, [eJacobiSnGrad_z, eJacobiSnGrad_m])
-- handle JacobiCn
opJacobiCn := operator('jacobiCn)$CommonOperators
jacobiCn(z, m) == opJacobiCn(z, m)
eJacobiCn(z : F, m : F) : F == z = 0 => 1 kernel(opJacobiCn, [z, m])
elJacobiCn(l : List F) : F == eJacobiCn(l(1), l(2)) evaluate(opJacobiCn, elJacobiCn)$BasicOperatorFunctions1(F)
eJacobiCnGrad_z(l : List F) : F == z := l(1) m := l(2) -jacobiSn(z, m)*jacobiDn(z, m)
eJacobiCnGrad_m(l : List F) : F == z := l(1) m := l(2) ahalf*(eJacobiCnGrad_z(l)*jacobiGradHelper(z, m) - jacobiSn(z, m)^2*jacobiCn(z, m)/(1 - m))
derivative(opJacobiCn, [eJacobiCnGrad_z, eJacobiCnGrad_m])
-- handle JacobiDn
opJacobiDn := operator('jacobiDn)$CommonOperators
jacobiDn(z, m) == opJacobiDn(z, m)
eJacobiDn(z : F, m : F) : F == z = 0 => 1 kernel(opJacobiDn, [z, m])
elJacobiDn(l : List F) : F == eJacobiDn(l(1), l(2)) evaluate(opJacobiDn, elJacobiDn)$BasicOperatorFunctions1(F)
eJacobiDnGrad_z(l : List F) : F == z := l(1) m := l(2) -m*jacobiSn(z, m)*jacobiCn(z, m)
eJacobiDnGrad_m(l : List F) : F == z := l(1) m := l(2) ahalf*(eJacobiDnGrad_z(l)*jacobiGradHelper(z, m) - jacobiSn(z, m)^2*jacobiDn(z, m)/(1 - m))
derivative(opJacobiDn, [eJacobiDnGrad_z, eJacobiDnGrad_m])
-- handle JacobiZeta
opJacobiZeta := operator('jacobiZeta)$CommonOperators
jacobiZeta(z, m) == opJacobiZeta(z, m)
eJacobiZeta(z : F, m : F) : F == z = 0 => 0 kernel(opJacobiZeta, [z, m])
elJacobiZeta(l : List F) : F == eJacobiZeta(l(1), l(2)) evaluate(opJacobiZeta, elJacobiZeta)$BasicOperatorFunctions1(F)
eJacobiZetaGrad_z(l : List F) : F == z := l(1) m := l(2) dn := jacobiDn(z, m) dn*dn - ellipticE(m)/ellipticK(m)
eJacobiZetaGrad_m(l : List F) : F == z := l(1) m := l(2) ek := ellipticK(m) ee := ellipticE(m) er := ee/ek dn := jacobiDn(z, m) res1 := (dn*dn + m - 1)*jacobiZeta(z, m) res2 := res1 + (m - 1)*z*dn*dn res3 := res2 - m*jacobiCn(z, m)*jacobiDn(z, m)*jacobiSn(z, m) res4 := res3 + z*(1 - m + dn*dn)*er ahalf*(res4 - z*er*er)/(m*m - m)
derivative(opJacobiZeta, [eJacobiZetaGrad_z, eJacobiZetaGrad_m])
-- handle JacobiTheta
opJacobiTheta := operator('jacobiTheta)$CommonOperators
jacobiTheta(q, z) == opJacobiTheta(q, z)
eJacobiTheta(q : F, z : F) : F == kernel(opJacobiTheta, [q, z])
elJacobiTheta(l : List F) : F == eJacobiTheta(l(1), l(2)) evaluate(opJacobiTheta, elJacobiTheta)$BasicOperatorFunctions1(F)
-- handle LerchPhi
opLerchPhi := operator('lerchPhi)$CommonOperators
lerchPhi(z, s, a) == opLerchPhi(z, s, a)
eLerchPhi(z : F, s : F, a : F) : F == -- z = 0 => 1/a^s a = 1 => polylog(s, z)/z kernel(opLerchPhi, [z, s, a])
elLerchPhi(l : List F) : F == eLerchPhi(l(1), l(2), l(3)) evaluate(opLerchPhi, elLerchPhi)$BasicOperatorFunctions1(F)
dLerchPhi(l : List F, t : SE) : F == z := l(1) s := l(2) a := l(3) dz := differentiate(z, t)*(lerchPhi(z, s - 1, a) - a*lerchPhi(z, s, a))/z da := -differentiate(a, t)*s*lerchPhi(z, s + 1, a) dm := dummy differentiate(s, t)*kernel(opdiff, [opLerchPhi [z, dm, a], dm, s]) + dz + da
setProperty(opLerchPhi, SPECIALDIFF, dLerchPhi@((List F, SE)->F) pretend None)
-- handle RiemannZeta
opRiemannZeta := operator('riemannZeta)$CommonOperators
riemannZeta(z) == opRiemannZeta(z)
eRiemannZeta(z : F) : F == kernel(opRiemannZeta, [z])
elRiemannZeta(l : List F) : F == eRiemannZeta(l(1)) evaluate(opRiemannZeta, elRiemannZeta)$BasicOperatorFunctions1(F)
-- orthogonal polynomials
charlierC(n : F, a : F, z : F) : F == opCharlierC(n, a, z)
eCharlierC(n : F, a : F, z : F) : F == n = 0 => 1 n = 1 => (z - a)/a kernel(opCharlierC, [n, a, z])
elCharlierC(l : List F) : F == eCharlierC(l(1), l(2), l(3))
evaluate(opCharlierC, elCharlierC)$BasicOperatorFunctions1(F)
hermiteH(n : F, z: F) : F == opHermiteH(n, z)
eHermiteH(n : F, z: F) : F == n = -1 => 0 n = 0 => 1 n = 1 => (2::F)*z kernel(opHermiteH, [n, z])
elHermiteH(l : List F) : F == eHermiteH(l(1), l(2))
evaluate(opHermiteH, elHermiteH)$BasicOperatorFunctions1(F)
eHermiteHGrad_z(n : F, z : F) : F == (2::F)*n*hermiteH(n - 1, z)
dHermiteH(l : List F, t : SE) : F == grad2(l, t, opHermiteH, eHermiteHGrad_z)
setProperty(opHermiteH, SPECIALDIFF, dHermiteH@((List F, SE)->F) pretend None)
jacobiP(n : F, a : F, b : F, z : F) : F == opJacobiP(n, a, b, z)
eJacobiP(n : F, a : F, b : F, z : F) : F == n = -1 => 0 n = 0 => 1 n = 1 => ahalf*(a - b) + (1 + ahalf*(a + b))*z kernel(opJacobiP, [n, a, b, z])
elJacobiP(l : List F) : F == eJacobiP(l(1), l(2), l(3), l(4))
evaluate(opJacobiP, elJacobiP)$BasicOperatorFunctions1(F)
eJacobiPGrad_z(n : F, a : F, b : F, z : F) : F == ahalf*(a + b + n + 1)*jacobiP(n - 1, a + 1, b + 1, z)
dJacobiP(l : List F, t : SE) : F == grad4(l, t, opJacobiP, eJacobiPGrad_z)
setProperty(opJacobiP, SPECIALDIFF, dJacobiP@((List F, SE)->F) pretend None)
laguerreL(n : F, a : F, z : F) : F == opLaguerreL(n, a, z)
eLaguerreL(n : F, a : F, z : F) : F == n = -1 => 0 n = 0 => 1 n = 1 => (1 + a - z) kernel(opLaguerreL, [n, a, z])
elLaguerreL(l : List F) : F == eLaguerreL(l(1), l(2), l(3))
evaluate(opLaguerreL, elLaguerreL)$BasicOperatorFunctions1(F)
eLaguerreLGrad_z(n : F, a : F, z : F) : F == laguerreL(n - 1, a + 1, z)
dLaguerreL(l : List F, t : SE) : F == grad3(l, t, opLaguerreL, eLaguerreLGrad_z)
setProperty(opLaguerreL, SPECIALDIFF, dLaguerreL@((List F, SE)->F) pretend None)
meixnerM(n : F, b : F, c : F, z : F) : F == opMeixnerM(n, b, c, z)
eMeixnerM(n : F, b : F, c : F, z : F) : F == n = 0 => 1 n = 1 => (c - 1)*z/(c*b) + 1 kernel(opMeixnerM, [n, b, c, z])
elMeixnerM(l : List F) : F == eMeixnerM(l(1), l(2), l(3), l(4))
evaluate(opMeixnerM, elMeixnerM)$BasicOperatorFunctions1(F)
-- belong? op == has?(op, SPECIAL)
operator op == is?(op, 'abs) => opabs is?(op, 'conjugate)=> opconjugate is?(op, 'Gamma) => opGamma is?(op, 'Gamma2) => opGamma2 is?(op, 'Beta) => opBeta is?(op, 'digamma) => opdigamma is?(op, 'polygamma)=> oppolygamma is?(op, 'besselJ) => opBesselJ is?(op, 'besselY) => opBesselY is?(op, 'besselI) => opBesselI is?(op, 'besselK) => opBesselK is?(op, 'airyAi) => opAiryAi is?(op, 'airyAiPrime) => opAiryAiPrime is?(op, 'airyBi) => opAiryBi is?(op, 'airyBiPrime) => opAiryBiPrime is?(op, 'lambertW) => opLambertW is?(op, 'polylog) => opPolylog is?(op, 'weierstrassP) => opWeierstrassP is?(op, 'weierstrassPPrime) => opWeierstrassPPrime is?(op, 'weierstrassSigma) => opWeierstrassSigma is?(op, 'weierstrassZeta) => opWeierstrassZeta is?(op, 'hypergeometricF) => opHypergeometricF is?(op, 'meijerG) => opMeijerG -- is?(op, 'weierstrassPInverse) => opWeierstrassPInverse is?(op, 'whittakerM) => opWhittakerM is?(op, 'whittakerW) => opWhittakerW is?(op, 'angerJ) => opAngerJ is?(op, 'weberE) => opWeberE is?(op, 'struveH) => opStruveH is?(op, 'struveL) => opStruveL is?(op, 'hankelH1) => opHankelH1 is?(op, 'hankelH2) => opHankelH2 is?(op, 'lommelS1) => opLommelS1 is?(op, 'lommelS2) => opLommelS2 is?(op, 'kummerM) => opKummerM is?(op, 'kummerU) => opKummerU is?(op, 'legendreP) => opLegendreP is?(op, 'legendreQ) => opLegendreQ is?(op, 'kelvinBei) => opKelvinBei is?(op, 'kelvinBer) => opKelvinBer is?(op, 'kelvinKei) => opKelvinKei is?(op, 'kelvinKer) => opKelvinKer is?(op, 'ellipticK) => opEllipticK is?(op, 'ellipticE) => opEllipticE is?(op, 'ellipticE2) => opEllipticE2 is?(op, 'ellipticF) => opEllipticF is?(op, 'ellipticPi) => opEllipticPi is?(op, 'jacobiSn) => opJacobiSn is?(op, 'jacobiCn) => opJacobiCn is?(op, 'jacobiDn) => opJacobiDn is?(op, 'jacobiZeta) => opJacobiZeta is?(op, 'jacobiTheta) => opJacobiTheta is?(op, 'lerchPhi) => opLerchPhi is?(op, 'riemannZeta) => opRiemannZeta is?(op, 'charlierC) => opCharlierC is?(op, 'hermiteH) => opHermiteH is?(op, 'jacobiP) => opJacobiP is?(op, 'laguerreL) => opLaguerreL is?(op, 'meixnerM) => opMeixnerM is?(op, '%logGamma) => op_log_gamma is?(op, '%eis) => op_eis is?(op, '%erfs) => op_erfs is?(op, '%erfis) => op_erfis
error "Not a special operator"
-- Could put more unconditional special rules for other functions here iGamma x == -- one? x => x (x = 1) => x kernel(opGamma, x)
iabs x == zero? x => 0 one? x => 1 is?(x, opabs) => x is?(x, opconjugate) => kernel(opabs, argument(retract(x)@K)(1)) smaller?(x, 0) => kernel(opabs, -x) kernel(opabs, x)
if R has abs : R -> R then import from Polynomial R iiabs x == (r := retractIfCan(x)@Union(Fraction Polynomial R, "failed")) case "failed" => iabs x f := r::Fraction Polynomial R (a := retractIfCan(numer f)@Union(R, "failed")) case "failed" or (b := retractIfCan(denom f)@Union(R,"failed")) case "failed" => iabs x abs(a::R)::F / abs(b::R)::F else if F has RadicalCategory and R has conjugate : R -> R then iiabs x == (r := retractIfCan(x)@Union(R, "failed")) case "failed" => iabs x sqrt( (r::R*conjugate(r::R))::F) else iiabs x == iabs x
iconjugate(k:K):F == --output("in: ",k::OutputForm)$OutputPackage if symbolIfCan(k) case Symbol then x:=kernel(opconjugate, k::F) else op:=operator(operator(name(k))$CommonOperators)$Expression(R) --output("op: ",properties(op)::OutputForm)$OutputPackage --output("conj op: ",properties(conjugate op)::OutputForm)$OutputPackage x := conjugate(op) argument(k) --output("out: ",x::OutputForm)$OutputPackage return x
iiconjugate(x:F):F == --output("iin: ",x::OutputForm)$OutputPackage if (s:=isPlus(x)) case List F then --output("isPlus: ",s::OutputForm)$OutputPackage x := reduce(_+$F,map(iiconjugate,s)) else if (s:=isTimes(x)) case List F then --output("isTimes: ",s::OutputForm)$OutputPackage x:= reduce(_*$F,map(iiconjugate,s)) else if #(ks:List K:=kernels(x))>0 then --output("kernels: ",ks::OutputForm)$OutputPackage x := eval(x,ks, _ map((k:Kernel F):F +-> (height(k)=0 =>k::F;iconjugate k), _ ks)$ListFunctions2(Kernel F,F)) else if R has conjugate:R->R and F has RetractableTo(R) then if (r:=retractIfCan(x)@Union(R,"failed")) case R then x:=conjugate(r::R)::F --output("iout: ",x::OutputForm)$OutputPackage return x
iBeta(x, y) == kernel(opBeta, [x, y]) idigamma x == kernel(opdigamma, x) iiipolygamma(n, x) == kernel(oppolygamma, [n, x]) iiiBesselJ(x, y) == kernel(opBesselJ, [x, y]) iiiBesselY(x, y) == kernel(opBesselY, [x, y]) iiiBesselI(x, y) == kernel(opBesselI, [x, y]) iiiBesselK(x, y) == kernel(opBesselK, [x, y])
import from Fraction(Integer)
if F has ElementaryFunctionCategory then iAiryAi x == zero?(x) => 1::F/((3::F)^twothirds*Gamma(twothirds)) kernel(opAiryAi, x) iAiryAiPrime x == zero?(x) => -1::F/((3::F)^athird*Gamma(athird)) kernel(opAiryAiPrime, x) iAiryBi x == zero?(x) => 1::F/((3::F)^asixth*Gamma(twothirds)) kernel(opAiryBi, x) iAiryBiPrime x == zero?(x) => (3::F)^asixth/Gamma(athird) kernel(opAiryBiPrime, x) else iAiryAi x == kernel(opAiryAi, x) iAiryAiPrime x == kernel(opAiryAiPrime, x) iAiryBi x == kernel(opAiryBi, x) iAiryBiPrime x == kernel(opAiryBiPrime, x)
if F has ElementaryFunctionCategory then iLambertW(x) == zero?(x) => 0 x = exp(1$F) => 1$F x = -exp(-1$F) => -1$F kernel(opLambertW, x) else iLambertW(x) == zero?(x) => 0 kernel(opLambertW, x)
if F has ElementaryFunctionCategory then if F has LiouvillianFunctionCategory then iiPolylog(s, x) == s = 1 => -log(1 - x) s = 2::F => dilog(1 - x) kernel(opPolylog, [s, x]) else iiPolylog(s, x) == s = 1 => -log(1 - x) kernel(opPolylog, [s, x]) else iiPolylog(s, x) == kernel(opPolylog, [s, x])
iPolylog(l) == iiPolylog(first l, second l)
iWeierstrassP(g2, g3, x) == kernel(opWeierstrassP, [g2, g3, x]) iWeierstrassPPrime(g2, g3, x) == kernel(opWeierstrassPPrime, [g2, g3, x])
iWeierstrassSigma(g2, g3, x) == x = 0 => 0 kernel(opWeierstrassSigma, [g2, g3, x])
iWeierstrassZeta(g2, g3, x) == kernel(opWeierstrassZeta, [g2, g3, x])
-- Could put more conditional special rules for other functions here
if R has SpecialFunctionCategory then iiGamma x == (r := retractIfCan(x)@Union(R,"failed")) case "failed" => iGamma x Gamma(r::R)::F
iiBeta l == (r := retractIfCan(first l)@Union(R,"failed")) case "failed" or _ (s := retractIfCan(second l)@Union(R,"failed")) case "failed" _ => iBeta(first l, second l) Beta(r::R, s::R)::F
iidigamma x == (r := retractIfCan(x)@Union(R,"failed")) case "failed" => idigamma x digamma(r::R)::F
iipolygamma l == (s := retractIfCan(first l)@Union(R,"failed")) case "failed" or _ (r := retractIfCan(second l)@Union(R,"failed")) case "failed" _ => iiipolygamma(first l, second l) polygamma(s::R, r::R)::F
iiBesselJ l == (r := retractIfCan(first l)@Union(R,"failed")) case "failed" or _ (s := retractIfCan(second l)@Union(R,"failed")) case "failed" _ => iiiBesselJ(first l, second l) besselJ(r::R, s::R)::F
iiBesselY l == (r := retractIfCan(first l)@Union(R,"failed")) case "failed" or _ (s := retractIfCan(second l)@Union(R,"failed")) case "failed" _ => iiiBesselY(first l, second l) besselY(r::R, s::R)::F
iiBesselI l == (r := retractIfCan(first l)@Union(R,"failed")) case "failed" or _ (s := retractIfCan(second l)@Union(R,"failed")) case "failed" _ => iiiBesselI(first l, second l) besselI(r::R, s::R)::F
iiBesselK l == (r := retractIfCan(first l)@Union(R,"failed")) case "failed" or _ (s := retractIfCan(second l)@Union(R,"failed")) case "failed" _ => iiiBesselK(first l, second l) besselK(r::R, s::R)::F
iiAiryAi x == (r := retractIfCan(x)@Union(R,"failed")) case "failed" => iAiryAi x airyAi(r::R)::F
iiAiryAiPrime x == (r := retractIfCan(x)@Union(R,"failed")) case "failed" => iAiryAiPrime x airyAiPrime(r::R)::F
iiAiryBi x == (r := retractIfCan(x)@Union(R,"failed")) case "failed" => iAiryBi x airyBi(r::R)::F
iiAiryBi x == (r := retractIfCan(x)@Union(R,"failed")) case "failed" => iAiryBiPrime x airyBiPrime(r::R)::F
else if R has RetractableTo Integer then iiGamma x == (r := retractIfCan(x)@Union(Integer, "failed")) case Integer and (r::Integer >= 1) => factorial(r::Integer - 1)::F iGamma x else iiGamma x == iGamma x
iiBeta l == iBeta(first l, second l) iidigamma x == idigamma x iipolygamma l == iiipolygamma(first l, second l) iiBesselJ l == iiiBesselJ(first l, second l) iiBesselY l == iiiBesselY(first l, second l) iiBesselI l == iiiBesselI(first l, second l) iiBesselK l == iiiBesselK(first l, second l) iiAiryAi x == iAiryAi x iiAiryAiPrime x == iAiryAiPrime x iiAiryBi x == iAiryBi x iiAiryBiPrime x == iAiryBiPrime x
iiWeierstrassP l == iWeierstrassP(first l, second l, third l) iiWeierstrassPPrime l == iWeierstrassPPrime(first l, second l, third l) iiWeierstrassSigma l == iWeierstrassSigma(first l, second l, third l) iiWeierstrassZeta l == iWeierstrassZeta(first l, second l, third l)
-- Default behaviour is to build a kernel evaluate(opGamma, iiGamma)$BasicOperatorFunctions1(F) evaluate(opabs, iiabs)$BasicOperatorFunctions1(F) evaluate(conjugate(opabs), (x:F):F +-> iiabs(x))$BasicOperatorFunctions1(F) evaluate(opconjugate, iiconjugate)$BasicOperatorFunctions1(F) evaluate(conjugate(opconjugate), (x:F):F +-> x)$BasicOperatorFunctions1(F) -- evaluate(opGamma2 , iiGamma2 )$BasicOperatorFunctions1(F) evaluate(opBeta , iiBeta )$BasicOperatorFunctions1(F) evaluate(opdigamma , iidigamma )$BasicOperatorFunctions1(F) evaluate(oppolygamma , iipolygamma)$BasicOperatorFunctions1(F) evaluate(opBesselJ , iiBesselJ )$BasicOperatorFunctions1(F) evaluate(opBesselY , iiBesselY )$BasicOperatorFunctions1(F) evaluate(opBesselI , iiBesselI )$BasicOperatorFunctions1(F) evaluate(opBesselK , iiBesselK )$BasicOperatorFunctions1(F) evaluate(opAiryAi , iiAiryAi )$BasicOperatorFunctions1(F) evaluate(opAiryAiPrime, iiAiryAiPrime)$BasicOperatorFunctions1(F) evaluate(opAiryBi , iiAiryBi )$BasicOperatorFunctions1(F) evaluate(opAiryBiPrime, iiAiryBiPrime)$BasicOperatorFunctions1(F) evaluate(opLambertW, iLambertW)$BasicOperatorFunctions1(F) evaluate(opPolylog, iPolylog)$BasicOperatorFunctions1(F) evaluate(opWeierstrassP, iiWeierstrassP)$BasicOperatorFunctions1(F) evaluate(opWeierstrassPPrime, iiWeierstrassPPrime)$BasicOperatorFunctions1(F) evaluate(opWeierstrassSigma, iiWeierstrassSigma)$BasicOperatorFunctions1(F) evaluate(opWeierstrassZeta, iiWeierstrassZeta)$BasicOperatorFunctions1(F) evaluate(opHypergeometricF, iiHypergeometricF)$BasicOperatorFunctions1(F) evaluate(opMeijerG, iiMeijerG)$BasicOperatorFunctions1(F)
diff1(op : OP, n : F, x : F) : F == dm := dummy kernel(opdiff, [op [dm, x], dm, n])
iBesselJ(l : List F, t : SE) : F == n := first l; x := second l differentiate(n, t)*diff1(opBesselJ, n, x) + differentiate(x, t) * ahalf * (besselJ (n-1, x) - besselJ (n+1, x))
iBesselY(l : List F, t : SE) : F == n := first l; x := second l differentiate(n, t)*diff1(opBesselY, n, x) + differentiate(x, t) * ahalf * (besselY (n-1, x) - besselY (n+1, x))
iBesselI(l : List F, t : SE) : F == n := first l; x := second l differentiate(n, t)*diff1(opBesselI, n, x) + differentiate(x, t)* ahalf * (besselI (n-1, x) + besselI (n+1, x))
iBesselK(l : List F, t : SE) : F == n := first l; x := second l differentiate(n, t)*diff1(opBesselK, n, x) - differentiate(x, t)* ahalf * (besselK (n-1, x) + besselK (n+1, x))
dPolylog(l : List F, t : SE) : F == s := first l; x := second l differentiate(s, t)*diff1(opPolylog, s, x) + differentiate(x, t)*polylog(s-1, x)/x
ipolygamma(l : List F, x : SE) : F == import from List(Symbol) member?(x, variables first l) => error "cannot differentiate polygamma with respect to the first argument" n := first l; y := second l differentiate(y, x)*polygamma(n+1, y) iBetaGrad1(l : List F) : F == x := first l; y := second l Beta(x, y)*(digamma x - digamma(x+y)) iBetaGrad2(l : List F) : F == x := first l; y := second l Beta(x, y)*(digamma y - digamma(x+y))
if F has ElementaryFunctionCategory then iGamma2(l : List F, t : SE) : F == a := first l; x := second l differentiate(a, t)*diff1(opGamma2, a, x) - differentiate(x, t)* x ^ (a - 1) * exp(-x) setProperty(opGamma2, SPECIALDIFF, iGamma2@((List F, SE)->F) pretend None)
inGamma2(li : List INP) : INP == convert cons(convert('Gamma), li)
input(opGamma2, inGamma2@((List INP) -> INP))
dLambertW(x : F) : F == lw := lambertW(x) lw/(x*(1+lw))
iWeierstrassPGrad1(l : List F) : F == g2 := first l g3 := second l x := third l delta := g2^3 - 27*g3^2 wp := weierstrassP(g2, g3, x) (weierstrassPPrime(g2, g3, x)*(-9*ahalf*g3 *weierstrassZeta(g2, g3, x) + afourth*g2^2*x) - 9*g3*wp^2 + ahalf*g2^2*wp + 3*ahalf*g2*g3)/delta
iWeierstrassPGrad2(l : List F) : F == g2 := first l g3 := second l x := third l delta := g2^3 - 27*g3^2 wp := weierstrassP(g2, g3, x) (weierstrassPPrime(g2, g3, x)*(3*g2*weierstrassZeta(g2, g3, x) - 9*ahalf*g3*x) + 6*g2*wp^2 - 9*g3*wp-g2^2)/delta
iWeierstrassPGrad3(l : List F) : F == weierstrassPPrime(first l, second l, third l)
iWeierstrassPPrimeGrad1(l : List F) : F == g2 := first l g3 := second l x := third l delta := g2^3 - 27*g3^2 wp := weierstrassP(g2, g3, x) wpp := weierstrassPPrime(g2, g3, x) wpp2 := 6*wp^2 - ahalf*g2 (wpp2*(-9*ahalf*g3*weierstrassZeta(g2, g3, x) + afourth*g2^2*x) + wpp*(9*ahalf*g3*wp + afourth*g2^2) - 18*g3*wp*wpp + ahalf*g2^2*wpp)/delta
iWeierstrassPPrimeGrad2(l : List F) : F == g2 := first l g3 := second l x := third l delta := g2^3 - 27*g3^2 wp := weierstrassP(g2, g3, x) wpp := weierstrassPPrime(g2, g3, x) wpp2 := 6*wp^2 - ahalf*g2 (wpp2*(3*g2*weierstrassZeta(g2, g3, x) - 9*ahalf*g3*x) + wpp*(-3*g2*wp - 9*ahalf*g3) + 12*g2*wp*wpp - 9*g3*wpp)/delta
iWeierstrassPPrimeGrad3(l : List F) : F == g2 := first l 6*weierstrassP(g2, second l, third l)^2 - ahalf*g2
iWeierstrassSigmaGrad1(l : List F) : F == g2 := first l g3 := second l x := third l delta := g2^3 - 27*g3^2 ws := weierstrassSigma(g2, g3, x) wz := weierstrassZeta(g2, g3, x) wsp := wz*ws wsp2 := - weierstrassP(g2, g3, x)*ws + wz^2*ws afourth*(-9*g3*wsp2 - g2^2*ws - 3*afourth*g2*g3*x^2*ws + g2^2*x*wsp)/delta
iWeierstrassSigmaGrad2(l : List F) : F == g2 := first l g3 := second l x := third l delta := g2^3 - 27*g3^2 ws := weierstrassSigma(g2, g3, x) wz := weierstrassZeta(g2, g3, x) wsp := wz*ws wsp2 := - weierstrassP(g2, g3, x)*ws + wz^2*ws ahalf*(3*g2*wsp2 + 9*g3*ws + afourth*g2^2*x^2*ws - 9*g3*x*wsp)/delta
iWeierstrassSigmaGrad3(l : List F) : F == g2 := first l g3 := second l x := third l weierstrassZeta(g2, g3, x)*weierstrassSigma(g2, g3, x)
iWeierstrassZetaGrad1(l : List F) : F == g2 := first l g3 := second l x := third l delta := g2^3 - 27*g3^2 wp := weierstrassP(g2, g3, x) (ahalf*weierstrassZeta(g2, g3, x)*(9*g3*wp + ahalf*g2^2) - ahalf*g2*x*(ahalf*g2*wp+3*afourth*g3) + 9*afourth*g3*weierstrassPPrime(g2, g3, x))/delta
iWeierstrassZetaGrad2(l : List F) : F == g2 := first l g3 := second l x := third l delta := g2^3 - 27*g3^2 wp := weierstrassP(g2, g3, x) (-3*weierstrassZeta(g2, g3, x)*(g2*wp + 3*ahalf*g3) + ahalf*x*(9*g3*wp + ahalf*g2^2) - 3*ahalf*g2*weierstrassPPrime(g2, g3, x))/delta
iWeierstrassZetaGrad3(l : List F) : F == -weierstrassP(first l, second l, third l)
OF ==> OutputForm SEX ==> SExpression NNI ==> NonNegativeInteger
dconjugate(lo : List OF) : OF == overbar lo.1 display(opconjugate,dconjugate)
if F has RetractableTo(Integer) then get_int_listf : List F -> List Integer get_int_listo : (Integer, List OF) -> List Integer get_int_listi : (Integer, List INP) -> List Integer
get_int_listf(lf : List F) : List Integer == map(z +-> retract(z)@Integer, lf)$ListFunctions2(F, Integer)
replace_i(lp : List F, v : F, i : NNI) : List F == concat(first(lp, (i - 1)::NNI), cons(v, rest(lp, i)))
iiHypergeometricF(l) == n := #l z := l(n-2) if z = 0 then nn := (n - 2)::NNI pq := rest(l, nn) pqi := get_int_listf(pq) p := first(pqi) q := first(rest(pqi)) p <= q + 1 => return 1 kernel(opHypergeometricF, l)
idvsum(op : BasicOperator, n : Integer, l : List F, x : Symbol) : F == res : F := 0 for i in 1..n for a in l repeat dm := dummy nl := replace_i(l, dm, i) res := res + differentiate(a, x)*kernel(opdiff, [op nl, dm, a]) res
dvhypergeom(l : List F, x : Symbol) : F == n := #l nn := (n - 2)::NNI pq := rest(l, nn) pqi := get_int_listf(pq) ol := l l := first(l, nn) l1 := reverse(l) z := first(l1) p := first(pqi) q := first(rest(pqi)) aprod := 1@F nl := []@(List F) for i in 1..p repeat a := first(l) nl := cons(a + 1, nl) aprod := aprod * a l := rest(l) bprod := 1@F for i in 1..q repeat b := first(l) nl := cons(b + 1, nl) bprod := bprod * b l := rest(l) nl0 := reverse!(nl) nl1 := cons(z, pq) nl := concat(nl0, nl1) aprod := aprod/bprod idvsum(opHypergeometricF, nn - 1, ol, x) + differentiate(z, x)*aprod*opHypergeometricF(nl)
add_pairs_to_list(lp : List List F, l : List F) : List F == for p in lp repeat #p ~= 2 => error "not a list of pairs" l := cons(p(2), cons(p(1), l)) l
dvmeijer(l : List F, x : Symbol) : F == n := #l nn := (n - 4)::NNI l0 := l nl := rest(l, nn) nli := get_int_listf(nl) l := first(l, nn) l1 := reverse(l) z := first(l1) n1 := first(nli) n2 := nli(2) a := first l sign : F := 1 if n1 > 0 or n2 > 0 then na := a - 1 if n1 = 0 then sign := -1 l2 := cons(na, rest l) else na := a if nli(3) > 0 then sign := -1 l2 := cons(a + 1, rest l) nm : F := opMeijerG(concat(l2, nl)) om : F := opMeijerG(l0) idvsum(opMeijerG, nn - 1, l0, x) + differentiate(z, x)*(sign*nm + na*om)/z
get_if_list(n : Integer, lf : List INP) : List List INP == a := []@(List INP) for i in 1..n repeat a := cons(first(lf), a) lf := rest(lf) a := cons(convert('construct), reverse!(a)) [a, lf]
get_if_lists(ln : List Integer, lf : List INP) : List List INP == rl := []@(List List INP) for n in ln repeat al := get_if_list(n, lf) rl := cons(first(al), rl) lf := first(rest(al)) rl := reverse!(rl) cons(lf, rl)
get_int_listi(n : Integer, lo : List INP) : List Integer == n0 := (#lo - n)::NNI lo := rest(lo, n0) rl := []@(List Integer) for i in 1..n repeat p := integer(first(lo) pretend SEX)$SEX rl := cons(p, rl) lo := rest(lo) rl := reverse!(rl) rl
get_of_list(n : Integer, lo : List OF) : List List OF == a := []@(List OF) for i in 1..n repeat a := cons(first(lo), a) lo := rest(lo) a := reverse!(a) [a, lo]
get_of_lists(ln : List Integer, lo : List OF) : List List OF == rl := []@(List List OF) for n in ln repeat al := get_of_list(n, lo) rl := cons(first(al), rl) lo := first(rest(al)) rl := reverse!(rl) cons(lo, rl)
get_int_listo(n : Integer, lo : List OF) : List Integer == n0 := (#lo - n)::NNI lo := rest(lo, n0) rl := []@(List Integer) for i in 1..n repeat p := integer(first(lo) pretend SEX)$SEX rl := cons(p, rl) lo := rest(lo) rl := reverse!(rl) rl
dhyper0(op : OF, lo : List OF) : OF == n0 := (#lo - 2)::NNI pql := get_int_listo(2, lo) lo := first(lo, n0) al := get_of_lists(pql, lo) lo := first(al) al := rest(al) a := first al b := first(rest(al)) z := first(lo) prefix(op, [bracket a, bracket b, z])
dhyper(lo : List OF) : OF == dhyper0("hypergeometricF"::Symbol::OF, lo)
ddhyper(lo : List OF) : OF == dhyper0(first lo, rest lo)
dmeijer0(op : OF, lo : List OF) : OF == n0 := (#lo - 4)::NNI nl := get_int_listo(4, lo) lo := first(lo, n0) al := get_of_lists(nl, lo) lo := first(al) al := rest(al) z := first(lo) prefix(op, concat( map(bracket, al)$ListFunctions2(List OF, OF), [z]))
dmeijer(lo : List OF) : OF == dmeijer0('meijerG::OF, lo)
ddmeijer(lo : List OF) : OF == dmeijer0(first lo, rest lo)
setProperty(opHypergeometricF, '%diffDisp, ddhyper@(List OF -> OF) pretend None) setProperty(opMeijerG, '%diffDisp, ddmeijer@(List OF -> OF) pretend None) display(opHypergeometricF, dhyper) display(opMeijerG, dmeijer) setProperty(opHypergeometricF, SPECIALDIFF, dvhypergeom@((List F, Symbol)->F) pretend None) setProperty(opMeijerG, SPECIALDIFF, dvmeijer@((List F, Symbol)->F) pretend None)
inhyper(lf : List INP) : INP == pqi := get_int_listi(2, lf) al := get_if_lists(pqi, lf) lf := first(al) al := rest(al) a := first al ai : INP := convert(a) b := first(rest(al)) bi : INP := convert(b) zi := first(lf) li : List INP := [convert('hypergeometricF), ai, bi, zi] convert(li)
input(opHypergeometricF, inhyper@((List INP) -> INP))
inmeijer(lf : List INP) : INP == pqi := get_int_listi(4, lf) al := get_if_lists(pqi, lf) lf := first(al) al := rest(al) a := first al ai : INP := convert(a) al := rest(al) b := first(al) bi : INP := convert(b) al := rest(al) c := first(al) ci : INP := convert(c) al := rest(al) d := first(al) di : INP := convert(d) zi := first(lf) li : List INP := [convert('meijerG), ai, bi, ci, di, zi] convert(li)
input(opMeijerG, inmeijer@((List INP) -> INP))
else iiHypergeometricF(l) == kernel(opHypergeometricF, l)
iiMeijerG(l) == kernel(opMeijerG, l)
d_eis(x : F) : F == -kernel(op_eis, x) + 1/x
if F has TranscendentalFunctionCategory and F has RadicalCategory then
d_erfs(x : F) : F == 2*x*kernel(op_erfs, x) - 2::F/sqrt(pi())
d_erfis(x : F) : F == -2*x*kernel(op_erfis, x) + 2::F/sqrt(pi())
derivative(op_erfs, d_erfs) derivative(op_erfis, d_erfis)
-- differentiate(abs(g(z)),z) --dvabs : (List F, SE) -> F --dvabs(arg, z) == -- g := first arg -- conjugate(g)*inv(2*abs(g))*differentiate(g,z)+g*inv(2*abs(g))*differentiate(conjugate(g),z) --setProperty(opabs, SPECIALDIFF, dvabs@((List F, SE)->F) pretend None) derivative(opabs, (x : F) : F +-> conjugate(x)*inv(2*abs(x)))
-- Wirtinger derivate of non-holomorphic functions derivative(opconjugate, (x : F) : F +-> 0) derivative(conjugate opconjugate, (x : F) : F +-> 1) derivative(opGamma, (x : F) : F +-> digamma(x)*Gamma(x)) derivative(op_log_gamma, (x : F) : F +-> digamma(x)) derivative(opBeta, [iBetaGrad1, iBetaGrad2]) derivative(opdigamma, (x : F) : F +-> polygamma(1, x)) derivative(op_eis, d_eis) derivative(opAiryAi, (x : F) : F +-> airyAiPrime(x)) derivative(opAiryAiPrime, (x : F) : F +-> x*airyAi(x)) derivative(opAiryBi, (x : F) : F +-> airyBiPrime(x)) derivative(opAiryBiPrime, (x : F) : F +-> x*airyBi(x)) derivative(opLambertW, dLambertW) derivative(opWeierstrassP, [iWeierstrassPGrad1, iWeierstrassPGrad2, iWeierstrassPGrad3]) derivative(opWeierstrassPPrime, [iWeierstrassPPrimeGrad1, iWeierstrassPPrimeGrad2, iWeierstrassPPrimeGrad3]) derivative(opWeierstrassSigma, [iWeierstrassSigmaGrad1, iWeierstrassSigmaGrad2, iWeierstrassSigmaGrad3]) derivative(opWeierstrassZeta, [iWeierstrassZetaGrad1, iWeierstrassZetaGrad2, iWeierstrassZetaGrad3])
setProperty(oppolygamma, SPECIALDIFF, ipolygamma@((List F, SE)->F) pretend None) setProperty(opBesselJ, SPECIALDIFF, iBesselJ@((List F, SE)->F) pretend None) setProperty(opBesselY, SPECIALDIFF, iBesselY@((List F, SE)->F) pretend None) setProperty(opBesselI, SPECIALDIFF, iBesselI@((List F, SE)->F) pretend None) setProperty(opBesselK, SPECIALDIFF, iBesselK@((List F, SE)->F) pretend None) setProperty(opPolylog, SPECIALDIFF, dPolylog@((List F, SE)->F) pretend None)
)abbrev package SUMFS FunctionSpaceSum ++ Top-level sum function ++ Author: Manuel Bronstein ++ Date Created: ??? ++ Date Last Updated: 19 April 1991 ++ Description: computes sums of top-level expressions; FunctionSpaceSum(R, F) : Exports == Implementation where R : Join(IntegralDomain, Comparable, RetractableTo Integer, LinearlyExplicitRingOver Integer) F : Join(FunctionSpace R, CombinatorialOpsCategory, AlgebraicallyClosedField, TranscendentalFunctionCategory)
SE ==> Symbol K ==> Kernel F
Exports ==> with sum : (F, SE) -> F ++ sum(a(n), n) returns A(n) such that A(n+1) - A(n) = a(n); sum : (F, SegmentBinding F) -> F ++ sum(f(n), n = a..b) returns f(a) + f(a+1) + ... + f(b);
Implementation ==> add import from ElementaryFunctionStructurePackage(R, F) import from GosperSummationMethod(IndexedExponents K, K, R, SparseMultivariatePolynomial(R, K), F) import from Segment(F)
innersum : (F, K) -> Union(F, "failed") notRF? : (F, K) -> Boolean newk : () -> K
newk() == kernel(new()$SE)
sum(x : F, s : SegmentBinding F) == k := kernel(variable s)@K (u := innersum(x, k)) case "failed" => summation(x, s) eval(u::F, k, 1 + hi segment s) - eval(u::F, k, lo segment s)
sum(x : F, v : SE) == (u := innersum(x, kernel(v)@K)) case "failed" => summation(x,v) u::F
notRF?(f, k) == for kk in tower f repeat member?(k, tower(kk::F)) and (symbolIfCan(kk) case "failed") => return true false
innersum(x, k) == zero? x => 0 notRF?(f := normalize(x / (x1 := eval(x, k, k::F - 1))), k) => "failed" (u := GospersMethod(f, k, newk)) case "failed" => "failed" x1 * eval(u::F, k, k::F - 1)
--Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --All rights reserved. -- --Redistribution and use in source and binary forms, with or without --modification, are permitted provided that the following conditions are --met: -- -- - Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- -- - Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in -- the documentation and/or other materials provided with the -- distribution. -- -- - Neither the name of The Numerical ALgorithms Group Ltd. nor the -- names of its contributors may be used to endorse or promote products -- derived from this software without specific prior written permission. -- --THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-- SPAD files for the functional world should be compiled in the -- following order: -- -- op kl function funcpkgs manip algfunc -- elemntry constant funceval COMBFUNC fe
spad
   Compiling FriCAS source code from file 
      /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/554697800083835704-25px002.spad
      using old system compiler.
   COMBOPC abbreviates category CombinatorialOpsCategory 
------------------------------------------------------------------------
   initializing NRLIB COMBOPC for CombinatorialOpsCategory 
   compiling into NRLIB COMBOPC 
;;; *** |CombinatorialOpsCategory| REDEFINED Time: 0 SEC.
finalizing NRLIB COMBOPC Processing CombinatorialOpsCategory for Browser database: --------constructor--------- --------(factorials (% %))--------- --------(factorials (% % (Symbol)))--------- --------(summation (% % (Symbol)))--------- --------(summation (% % (SegmentBinding %)))--------- --------(product (% % (Symbol)))--------- --------(product (% % (SegmentBinding %)))--------- ; compiling file "/var/aw/var/LatexWiki/COMBOPC.NRLIB/COMBOPC.lsp" (written 08 APR 2017 01:10:39 PM):
; /var/aw/var/LatexWiki/COMBOPC.NRLIB/COMBOPC.fasl written ; compilation finished in 0:00:00.005 ------------------------------------------------------------------------ CombinatorialOpsCategory is now explicitly exposed in frame initial CombinatorialOpsCategory will be automatically loaded when needed from /var/aw/var/LatexWiki/COMBOPC.NRLIB/COMBOPC
COMBF abbreviates package CombinatorialFunction ------------------------------------------------------------------------ initializing NRLIB COMBF for CombinatorialFunction compiling into NRLIB COMBF ****** Domain: R already in scope processing macro definition dummy ==> ::((Sel (Symbol) new),F) compiling exported factorial : F -> F Time: 0.04 SEC.
compiling exported binomial : (F,F) -> F Time: 0 SEC.
compiling exported permutation : (F,F) -> F Time: 0 SEC.
importing F importing Kernel F compiling local number? : F -> Boolean ****** Domain: R already in scope augmenting R: (RetractableTo (Integer)) Time: 0 SEC.
compiling exported ^ : (F,F) -> F Time: 0.05 SEC.
compiling exported belong? : BasicOperator -> Boolean Time: 0 SEC.
compiling local fourth : List F -> F Time: 0 SEC.
compiling local dvpow1 : List F -> F Time: 0.01 SEC.
compiling exported factorials : F -> F Time: 0 SEC.
compiling exported factorials : (F,Symbol) -> F Time: 0 SEC.
compiling local facts : (F,List Symbol) -> F Time: 0.01 SEC.
compiling local summand : List F -> F Time: 0 SEC.
compiling exported product : (F,Symbol) -> F Time: 0 SEC.
compiling exported summation : (F,Symbol) -> F Time: 0 SEC.
compiling local dvsum : (List F,Symbol) -> F Time: 0.01 SEC.
compiling local dvdsum : (List F,Symbol) -> F Time: 0 SEC.
compiling local dvprod : (List F,Symbol) -> F Time: 0.08 SEC.
compiling local dvdprod : (List F,Symbol) -> F Time: 0.08 SEC.
compiling local dprod : List F -> OutputForm Time: 0 SEC.
compiling local ddprod : List F -> OutputForm Time: 0 SEC.
compiling local dsum : List F -> OutputForm Time: 0.01 SEC.
compiling local ddsum : List F -> OutputForm Time: 0 SEC.
compiling local equalsumprod : (Kernel F,Kernel F) -> Boolean Time: 0 SEC.
compiling local equaldsumprod : (Kernel F,Kernel F) -> Boolean Time: 0.01 SEC.
compiling exported product : (F,SegmentBinding F) -> F Time: 0 SEC.
compiling exported summation : (F,SegmentBinding F) -> F Time: 0 SEC.
compiling local smpfact : (SparseMultivariatePolynomial(R,Kernel F),List Symbol) -> F Time: 0.01 SEC.
compiling local K2fact : (Kernel F,List Symbol) -> F Time: 0.01 SEC.
compiling exported operator : BasicOperator -> BasicOperator Time: 0 SEC.
compiling local iprod : List F -> F Time: 0.01 SEC.
compiling local isum : List F -> F Time: 0 SEC.
compiling local idprod : List F -> F Time: 0.01 SEC.
compiling local idsum : List F -> F Time: 0.02 SEC.
compiling local ifact : F -> F Time: 0 SEC.
compiling local ibinom : List F -> F Time: 0 SEC.
compiling local iperm : List F -> F Time: 0 SEC.
****** Domain: R already in scope augmenting R: (RetractableTo (Integer)) compiling exported iidsum : List F -> F Time: 0.01 SEC.
compiling exported iidprod : List F -> F Time: 0.01 SEC.
compiling local iiipow : List F -> F Time: 0.02 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) compiling exported ipow : List F -> F Time: 0.01 SEC.
compiling exported ipow : List F -> F Time: 0 SEC.
compiling exported ipow : List F -> F Time: 0.04 SEC.
****** Domain: R already in scope augmenting R: (CombinatorialFunctionCategory) compiling exported iifact : F -> F Time: 0.01 SEC.
compiling exported iiperm : List F -> F Time: 0 SEC.
****** Domain: R already in scope augmenting R: (RetractableTo (Integer)) compiling exported iibinom : List F -> F Time: 0.03 SEC.
compiling exported iibinom : List F -> F Time: 0.01 SEC.
compiling exported iibinom : List F -> F Time: 0 SEC.
compiling exported iifact : F -> F Time: 0 SEC.
compiling exported iibinom : List F -> F Time: 0 SEC.
compiling exported iiperm : List F -> F Time: 0 SEC.
****** Domain: R already in scope augmenting R: (ElementaryFunctionCategory) compiling exported iipow : List F -> F Time: 0.01 SEC.
compiling exported iipow : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (ElementaryFunctionCategory) compiling local dvpow2 : List F -> F Time: 0.01 SEC.
(time taken in buildFunctor: 0)
;;; *** |CombinatorialFunction| REDEFINED
;;; *** |CombinatorialFunction| REDEFINED Time: 0.04 SEC.
Warnings: [1] ^: val has no value [2] ^: exponent has no value [3] iiipow: var has no value [4] iiipow: exponent has no value [5] ipow: n has no value [6] ipow: var has no value [7] ipow: exponent has no value
Cumulative Statistics for Constructor CombinatorialFunction Time: 0.56 seconds
finalizing NRLIB COMBF Processing CombinatorialFunction for Browser database: --------constructor--------- --------(belong? ((Boolean) (BasicOperator)))--------- --------(operator ((BasicOperator) (BasicOperator)))--------- --------(^ (F F F))--------- --------(binomial (F F F))--------- --------(permutation (F F F))--------- --------(factorial (F F))--------- --------(factorials (F F))--------- --------(factorials (F F (Symbol)))--------- --------(summation (F F (Symbol)))--------- --------(summation (F F (SegmentBinding F)))--------- --------(product (F F (Symbol)))--------- --------(product (F F (SegmentBinding F)))--------- --------(iifact (F F))--------- --------(iibinom (F (List F)))--------- --------(iiperm (F (List F)))--------- --------(iipow (F (List F)))--------- --------(iidsum (F (List F)))--------- --------(iidprod (F (List F)))--------- --------(ipow (F (List F)))--------- ; compiling file "/var/aw/var/LatexWiki/COMBF.NRLIB/COMBF.lsp" (written 08 APR 2017 01:10:40 PM):
; /var/aw/var/LatexWiki/COMBF.NRLIB/COMBF.fasl written ; compilation finished in 0:00:00.317 ------------------------------------------------------------------------ CombinatorialFunction is now explicitly exposed in frame initial CombinatorialFunction will be automatically loaded when needed from /var/aw/var/LatexWiki/COMBF.NRLIB/COMBF
FSPECF abbreviates package FunctionalSpecialFunction (EVAL-WHEN (EVAL LOAD) (SETQ |$tryRecompileArguments| NIL)) Value = NIL ------------------------------------------------------------------------ initializing NRLIB FSPECF for FunctionalSpecialFunction compiling into NRLIB FSPECF ****** Domain: R already in scope processing macro definition INP ==> InputForm processing macro definition SPECIALINPUT ==> QUOTE %specialInput compiling exported abs : F -> F Time: 0.01 SEC.
compiling exported conjugate : F -> F Time: 0 SEC.
compiling exported Gamma : F -> F Time: 0 SEC.
compiling exported Gamma : (F,F) -> F Time: 0 SEC.
compiling exported Beta : (F,F) -> F Time: 0 SEC.
compiling exported digamma : F -> F Time: 0 SEC.
compiling exported polygamma : (F,F) -> F Time: 0 SEC.
compiling exported besselJ : (F,F) -> F Time: 0 SEC.
compiling exported besselY : (F,F) -> F Time: 0 SEC.
compiling exported besselI : (F,F) -> F Time: 0 SEC.
compiling exported besselK : (F,F) -> F Time: 0 SEC.
compiling exported airyAi : F -> F Time: 0 SEC.
compiling exported airyAiPrime : F -> F Time: 0 SEC.
compiling exported airyBi : F -> F Time: 0 SEC.
compiling exported airyBiPrime : F -> F Time: 0 SEC.
compiling exported lambertW : F -> F Time: 0 SEC.
compiling exported polylog : (F,F) -> F Time: 0 SEC.
compiling exported weierstrassP : (F,F,F) -> F Time: 0 SEC.
compiling exported weierstrassPPrime : (F,F,F) -> F Time: 0 SEC.
compiling exported weierstrassSigma : (F,F,F) -> F Time: 0 SEC.
compiling exported weierstrassZeta : (F,F,F) -> F Time: 0.01 SEC.
****** Domain: F already in scope augmenting F: (RetractableTo (Integer)) augmenting $: (SIGNATURE $ hypergeometricF (F (List F) (List F) F)) augmenting $: (SIGNATURE $ meijerG (F (List F) (List F) (List F) (List F) F)) compiling exported hypergeometricF : (List F,List F,F) -> F Time: 0 SEC.
compiling exported meijerG : (List F,List F,List F,List F,F) -> F Time: 0.01 SEC.
importing List Kernel F processing macro definition dummy ==> ::((Sel (Symbol) new),F) compiling local grad2 : (List F,Symbol,BasicOperator,(F,F) -> F) -> F Time: 0.01 SEC.
compiling local grad3 : (List F,Symbol,BasicOperator,(F,F,F) -> F) -> F Time: 0.03 SEC.
compiling local grad4 : (List F,Symbol,BasicOperator,(F,F,F,F) -> F) -> F Time: 0.03 SEC.
compiling exported whittakerM : (F,F,F) -> F Time: 0 SEC.
compiling local eWhittakerM : (F,F,F) -> F Time: 0 SEC.
compiling local elWhittakerM : List F -> F Time: 0 SEC.
compiling local eWhittakerMGrad_z : (F,F,F) -> F Time: 0.02 SEC.
compiling local dWhittakerM : (List F,Symbol) -> F Time: 0 SEC.
compiling exported whittakerW : (F,F,F) -> F Time: 0.01 SEC.
compiling local eWhittakerW : (F,F,F) -> F Time: 0 SEC.
compiling local elWhittakerW : List F -> F Time: 0 SEC.
compiling local eWhittakerWGrad_z : (F,F,F) -> F Time: 0.01 SEC.
compiling local dWhittakerW : (List F,Symbol) -> F Time: 0 SEC.
compiling exported angerJ : (F,F) -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (TranscendentalFunctionCategory) compiling local eAngerJ : (F,F) -> F Time: 0.01 SEC.
compiling local elAngerJ : List F -> F Time: 0 SEC.
compiling local eAngerJGrad_z : (F,F) -> F Time: 0.01 SEC.
compiling local dAngerJ : (List F,Symbol) -> F Time: 0.01 SEC.
compiling local eeAngerJ : List F -> F Time: 0 SEC.
compiling exported weberE : (F,F) -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (TranscendentalFunctionCategory) compiling local eWeberE : (F,F) -> F Time: 0.01 SEC.
compiling local elWeberE : List F -> F Time: 0 SEC.
compiling local eWeberEGrad_z : (F,F) -> F Time: 0.02 SEC.
compiling local dWeberE : (List F,Symbol) -> F Time: 0 SEC.
compiling local eeWeberE : List F -> F Time: 0 SEC.
compiling exported struveH : (F,F) -> F Time: 0.01 SEC.
compiling local eStruveH : (F,F) -> F Time: 0.01 SEC.
compiling local elStruveH : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (TranscendentalFunctionCategory) ****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eStruveHGrad_z : (F,F) -> F Time: 0.02 SEC.
compiling local dStruveH : (List F,Symbol) -> F Time: 0 SEC.
compiling exported struveL : (F,F) -> F Time: 0 SEC.
compiling local eStruveL : (F,F) -> F Time: 0 SEC.
compiling local elStruveL : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (TranscendentalFunctionCategory) ****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eStruveLGrad_z : (F,F) -> F Time: 0.02 SEC.
compiling local dStruveL : (List F,Symbol) -> F Time: 0 SEC.
compiling exported hankelH1 : (F,F) -> F Time: 0.01 SEC.
compiling local eHankelH1 : (F,F) -> F Time: 0 SEC.
compiling local elHankelH1 : List F -> F Time: 0 SEC.
compiling local eHankelH1Grad_z : (F,F) -> F Time: 0.01 SEC.
compiling local dHankelH1 : (List F,Symbol) -> F Time: 0 SEC.
compiling exported hankelH2 : (F,F) -> F Time: 0 SEC.
compiling local eHankelH2 : (F,F) -> F Time: 0 SEC.
compiling local elHankelH2 : List F -> F Time: 0.01 SEC.
compiling local eHankelH2Grad_z : (F,F) -> F Time: 0 SEC.
compiling local dHankelH2 : (List F,Symbol) -> F Time: 0 SEC.
compiling exported lommelS1 : (F,F,F) -> F Time: 0 SEC.
compiling local eLommelS1 : (F,F,F) -> F Time: 0 SEC.
compiling local elLommelS1 : List F -> F Time: 0 SEC.
compiling local eLommelS1Grad_z : (F,F,F) -> F Time: 0.02 SEC.
compiling local dLommelS1 : (List F,Symbol) -> F Time: 0 SEC.
compiling exported lommelS2 : (F,F,F) -> F Time: 0.01 SEC.
compiling local eLommelS2 : (F,F,F) -> F Time: 0 SEC.
compiling local elLommelS2 : List F -> F Time: 0 SEC.
compiling local eLommelS2Grad_z : (F,F,F) -> F Time: 0.05 SEC.
compiling local dLommelS2 : (List F,Symbol) -> F Time: 0 SEC.
compiling exported kummerM : (F,F,F) -> F Time: 0 SEC.
compiling local eKummerM : (F,F,F) -> F Time: 0 SEC.
compiling local elKummerM : List F -> F Time: 0 SEC.
compiling local eKummerMGrad_z : (F,F,F) -> F Time: 0.01 SEC.
compiling local dKummerM : (List F,Symbol) -> F Time: 0.01 SEC.
compiling exported kummerU : (F,F,F) -> F Time: 0 SEC.
compiling local eKummerU : (F,F,F) -> F Time: 0 SEC.
compiling local elKummerU : List F -> F Time: 0.01 SEC.
compiling local eKummerUGrad_z : (F,F,F) -> F Time: 0.01 SEC.
compiling local dKummerU : (List F,Symbol) -> F Time: 0 SEC.
compiling exported legendreP : (F,F,F) -> F Time: 0 SEC.
compiling local eLegendreP : (F,F,F) -> F Time: 0 SEC.
compiling local elLegendreP : List F -> F Time: 0.01 SEC.
compiling local eLegendrePGrad_z : (F,F,F) -> F Time: 0.04 SEC.
compiling local dLegendreP : (List F,Symbol) -> F Time: 0 SEC.
compiling exported legendreQ : (F,F,F) -> F Time: 0 SEC.
compiling local eLegendreQ : (F,F,F) -> F Time: 0 SEC.
compiling local elLegendreQ : List F -> F Time: 0 SEC.
compiling local eLegendreQGrad_z : (F,F,F) -> F Time: 0.04 SEC.
compiling local dLegendreQ : (List F,Symbol) -> F Time: 0.01 SEC.
compiling exported kelvinBei : (F,F) -> F Time: 0 SEC.
compiling local eKelvinBei : (F,F) -> F Time: 0 SEC.
compiling local elKelvinBei : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eKelvinBeiGrad_z : (F,F) -> F Time: 0.01 SEC.
compiling local dKelvinBei : (List F,Symbol) -> F Time: 0.01 SEC.
compiling exported kelvinBer : (F,F) -> F Time: 0 SEC.
compiling local eKelvinBer : (F,F) -> F Time: 0 SEC.
compiling local elKelvinBer : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eKelvinBerGrad_z : (F,F) -> F Time: 0.02 SEC.
compiling local dKelvinBer : (List F,Symbol) -> F Time: 0 SEC.
compiling exported kelvinKei : (F,F) -> F Time: 0 SEC.
compiling local eKelvinKei : (F,F) -> F Time: 0 SEC.
compiling local elKelvinKei : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eKelvinKeiGrad_z : (F,F) -> F Time: 0.02 SEC.
compiling local dKelvinKei : (List F,Symbol) -> F Time: 0 SEC.
compiling exported kelvinKer : (F,F) -> F Time: 0 SEC.
compiling local eKelvinKer : (F,F) -> F Time: 0 SEC.
compiling local elKelvinKer : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eKelvinKerGrad_z : (F,F) -> F Time: 0.02 SEC.
compiling local dKelvinKer : (List F,Symbol) -> F Time: 0 SEC.
compiling exported ellipticK : F -> F Time: 0 SEC.
compiling local eEllipticK : F -> F Time: 0 SEC.
compiling local elEllipticK : List F -> F Time: 0 SEC.
compiling local dEllipticK : F -> F Time: 0.02 SEC.
compiling exported ellipticE : F -> F Time: 0.01 SEC.
compiling local eEllipticE : F -> F Time: 0 SEC.
compiling local elEllipticE : List F -> F Time: 0 SEC.
compiling local dEllipticE : F -> F Time: 0.01 SEC.
compiling exported ellipticE : (F,F) -> F Time: 0 SEC.
compiling local eEllipticE2 : (F,F) -> F Time: 0 SEC.
compiling local elEllipticE2 : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eEllipticE2Grad_z : List F -> F Time: 0.01 SEC.
compiling local eEllipticE2Grad_m : List F -> F Time: 0.01 SEC.
compiling local inEllipticE2 : List InputForm -> InputForm Time: 0.01 SEC.
compiling exported ellipticF : (F,F) -> F Time: 0 SEC.
compiling local eEllipticF : (F,F) -> F Time: 0.01 SEC.
compiling local elEllipticF : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eEllipticFGrad_z : List F -> F Time: 0.01 SEC.
compiling local eEllipticFGrad_m : List F -> F Time: 0.03 SEC.
compiling exported ellipticPi : (F,F,F) -> F Time: 0 SEC.
compiling local eEllipticPi : (F,F,F) -> F Time: 0.01 SEC.
compiling local elEllipticPi : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local eEllipticPiGrad_z : List F -> F Time: 0.23 SEC.
compiling local eEllipticPiGrad_n : List F -> F Time: 0.31 SEC.
compiling local eEllipticPiGrad_m : List F -> F Time: 0.02 SEC.
compiling exported jacobiSn : (F,F) -> F Time: 0.01 SEC.
compiling local eJacobiSn : (F,F) -> F Time: 0 SEC.
compiling local elJacobiSn : List F -> F Time: 0 SEC.
compiling local jacobiGradHelper : (F,F) -> F Time: 0.01 SEC.
compiling local eJacobiSnGrad_z : List F -> F Time: 0 SEC.
compiling local eJacobiSnGrad_m : List F -> F Time: 0.02 SEC.
compiling exported jacobiCn : (F,F) -> F Time: 0 SEC.
compiling local eJacobiCn : (F,F) -> F Time: 0.01 SEC.
compiling local elJacobiCn : List F -> F Time: 0 SEC.
compiling local eJacobiCnGrad_z : List F -> F Time: 0.01 SEC.
compiling local eJacobiCnGrad_m : List F -> F Time: 0.03 SEC.
compiling exported jacobiDn : (F,F) -> F Time: 0 SEC.
compiling local eJacobiDn : (F,F) -> F Time: 0 SEC.
compiling local elJacobiDn : List F -> F Time: 0 SEC.
compiling local eJacobiDnGrad_z : List F -> F Time: 0.02 SEC.
compiling local eJacobiDnGrad_m : List F -> F Time: 0.02 SEC.
compiling exported jacobiZeta : (F,F) -> F Time: 0 SEC.
compiling local eJacobiZeta : (F,F) -> F Time: 0 SEC.
compiling local elJacobiZeta : List F -> F Time: 0.01 SEC.
compiling local eJacobiZetaGrad_z : List F -> F Time: 0 SEC.
compiling local eJacobiZetaGrad_m : List F -> F Time: 0.30 SEC.
compiling exported jacobiTheta : (F,F) -> F Time: 0 SEC.
compiling local eJacobiTheta : (F,F) -> F Time: 0.01 SEC.
compiling local elJacobiTheta : List F -> F Time: 0 SEC.
compiling exported lerchPhi : (F,F,F) -> F Time: 0 SEC.
compiling local eLerchPhi : (F,F,F) -> F Time: 0.01 SEC.
compiling local elLerchPhi : List F -> F Time: 0 SEC.
compiling local dLerchPhi : (List F,Symbol) -> F Time: 0.13 SEC.
compiling exported riemannZeta : F -> F Time: 0.01 SEC.
compiling local eRiemannZeta : F -> F Time: 0 SEC.
compiling local elRiemannZeta : List F -> F Time: 0 SEC.
compiling exported charlierC : (F,F,F) -> F Time: 0.01 SEC.
compiling local eCharlierC : (F,F,F) -> F Time: 0 SEC.
compiling local elCharlierC : List F -> F Time: 0.01 SEC.
compiling exported hermiteH : (F,F) -> F Time: 0 SEC.
compiling local eHermiteH : (F,F) -> F Time: 0.01 SEC.
compiling local elHermiteH : List F -> F Time: 0 SEC.
compiling local eHermiteHGrad_z : (F,F) -> F Time: 0.01 SEC.
compiling local dHermiteH : (List F,Symbol) -> F Time: 0 SEC.
compiling exported jacobiP : (F,F,F,F) -> F Time: 0 SEC.
compiling local eJacobiP : (F,F,F,F) -> F Time: 0.02 SEC.
compiling local elJacobiP : List F -> F Time: 0 SEC.
compiling local eJacobiPGrad_z : (F,F,F,F) -> F Time: 0.03 SEC.
compiling local dJacobiP : (List F,Symbol) -> F Time: 0 SEC.
compiling exported laguerreL : (F,F,F) -> F Time: 0.01 SEC.
compiling local eLaguerreL : (F,F,F) -> F Time: 0.01 SEC.
compiling local elLaguerreL : List F -> F Time: 0 SEC.
compiling local eLaguerreLGrad_z : (F,F,F) -> F Time: 0 SEC.
compiling local dLaguerreL : (List F,Symbol) -> F Time: 0 SEC.
compiling exported meixnerM : (F,F,F,F) -> F Time: 0.01 SEC.
compiling local eMeixnerM : (F,F,F,F) -> F Time: 0.03 SEC.
compiling local elMeixnerM : List F -> F Time: 0 SEC.
compiling exported belong? : BasicOperator -> Boolean Time: 0 SEC.
compiling exported operator : BasicOperator -> BasicOperator Time: 0.03 SEC.
compiling local iGamma : F -> F Time: 0 SEC.
compiling local iabs : F -> F Time: 0 SEC.
augmenting R: (SIGNATURE R abs (R R)) importing Polynomial R compiling exported iiabs : F -> F Time: 0.01 SEC.
****** Domain: F already in scope augmenting F: (RadicalCategory) augmenting R: (SIGNATURE R conjugate (R R)) compiling exported iiabs : F -> F Time: 0.01 SEC.
compiling exported iiabs : F -> F Time: 0 SEC.
compiling exported iiabs : F -> F Time: 0 SEC.
compiling local iconjugate : Kernel F -> F Time: 0 SEC.
compiling exported iiconjugate : F -> F augmenting R: (SIGNATURE R conjugate (R R)) Time: 0.01 SEC.
compiling local iBeta : (F,F) -> F Time: 0.01 SEC.
compiling local idigamma : F -> F Time: 0 SEC.
compiling local iiipolygamma : (F,F) -> F Time: 0 SEC.
compiling local iiiBesselJ : (F,F) -> F Time: 0 SEC.
compiling local iiiBesselY : (F,F) -> F Time: 0 SEC.
compiling local iiiBesselI : (F,F) -> F Time: 0.01 SEC.
compiling local iiiBesselK : (F,F) -> F Time: 0.01 SEC.
importing Fraction Integer ****** Domain: F already in scope augmenting F: (ElementaryFunctionCategory) compiling exported iAiryAi : F -> F Time: 0.01 SEC.
compiling exported iAiryAiPrime : F -> F Time: 0.01 SEC.
compiling exported iAiryBi : F -> F Time: 0 SEC.
compiling exported iAiryBiPrime : F -> F Time: 0.01 SEC.
compiling exported iAiryAi : F -> F Time: 0 SEC.
compiling exported iAiryAiPrime : F -> F Time: 0 SEC.
compiling exported iAiryBi : F -> F Time: 0 SEC.
compiling exported iAiryBiPrime : F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (ElementaryFunctionCategory) compiling exported iLambertW : F -> F Time: 0 SEC.
compiling exported iLambertW : F -> F Time: 0.01 SEC.
****** Domain: F already in scope augmenting F: (ElementaryFunctionCategory) ****** Domain: F already in scope augmenting F: (LiouvillianFunctionCategory) compiling exported iiPolylog : (F,F) -> F Time: 0 SEC.
compiling exported iiPolylog : (F,F) -> F Time: 0.01 SEC.
compiling exported iiPolylog : (F,F) -> F Time: 0.01 SEC.
compiling local iPolylog : List F -> F Time: 0 SEC.
compiling local iWeierstrassP : (F,F,F) -> F Time: 0.01 SEC.
compiling local iWeierstrassPPrime : (F,F,F) -> F Time: 0 SEC.
compiling local iWeierstrassSigma : (F,F,F) -> F Time: 0.01 SEC.
compiling local iWeierstrassZeta : (F,F,F) -> F Time: 0.01 SEC.
****** Domain: R already in scope augmenting R: (SpecialFunctionCategory) compiling exported iiGamma : F -> F Time: 0 SEC.
compiling exported iiBeta : List F -> F Time: 0 SEC.
compiling exported iidigamma : F -> F Time: 0.01 SEC.
compiling exported iipolygamma : List F -> F Time: 0 SEC.
compiling exported iiBesselJ : List F -> F Time: 0 SEC.
compiling exported iiBesselY : List F -> F Time: 0 SEC.
compiling exported iiBesselI : List F -> F Time: 0 SEC.
compiling exported iiBesselK : List F -> F Time: 0.01 SEC.
compiling exported iiAiryAi : F -> F Time: 0.01 SEC.
compiling exported iiAiryAiPrime : F -> F Time: 0 SEC.
compiling exported iiAiryBi : F -> F Time: 0 SEC.
compiling exported iiAiryBi : F -> F Time: 0 SEC.
****** Domain: R already in scope augmenting R: (RetractableTo (Integer)) compiling exported iiGamma : F -> F Time: 0.01 SEC.
compiling exported iiGamma : F -> F Time: 0 SEC.
compiling exported iiBeta : List F -> F Time: 0 SEC.
compiling exported iidigamma : F -> F Time: 0 SEC.
compiling exported iipolygamma : List F -> F Time: 0 SEC.
compiling exported iiBesselJ : List F -> F Time: 0 SEC.
compiling exported iiBesselY : List F -> F Time: 0 SEC.
compiling exported iiBesselI : List F -> F Time: 0 SEC.
compiling exported iiBesselK : List F -> F Time: 0 SEC.
compiling exported iiAiryAi : F -> F Time: 0 SEC.
compiling exported iiAiryAiPrime : F -> F Time: 0.01 SEC.
compiling exported iiAiryBi : F -> F Time: 0 SEC.
compiling exported iiAiryBiPrime : F -> F Time: 0 SEC.
compiling local iiWeierstrassP : List F -> F Time: 0 SEC.
compiling local iiWeierstrassPPrime : List F -> F Time: 0 SEC.
compiling local iiWeierstrassSigma : List F -> F Time: 0 SEC.
compiling local iiWeierstrassZeta : List F -> F Time: 0 SEC.
compiling local diff1 : (BasicOperator,F,F) -> F Time: 0.09 SEC.
compiling local iBesselJ : (List F,Symbol) -> F Time: 0.02 SEC.
compiling local iBesselY : (List F,Symbol) -> F Time: 0.03 SEC.
compiling local iBesselI : (List F,Symbol) -> F Time: 0.02 SEC.
compiling local iBesselK : (List F,Symbol) -> F Time: 0.03 SEC.
compiling local dPolylog : (List F,Symbol) -> F Time: 0.01 SEC.
compiling local ipolygamma : (List F,Symbol) -> F Time: 0.01 SEC.
compiling local iBetaGrad1 : List F -> F Time: 0.01 SEC.
compiling local iBetaGrad2 : List F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (ElementaryFunctionCategory) compiling local iGamma2 : (List F,Symbol) -> F Time: 0.03 SEC.
compiling local inGamma2 : List InputForm -> InputForm Time: 0.01 SEC.
compiling local dLambertW : F -> F Time: 0.01 SEC.
compiling local iWeierstrassPGrad1 : List F -> F Time: 0.47 SEC.
compiling local iWeierstrassPGrad2 : List F -> F Time: 0.13 SEC.
compiling local iWeierstrassPGrad3 : List F -> F Time: 0 SEC.
compiling local iWeierstrassPPrimeGrad1 : List F -> F Time: 0.72 SEC.
compiling local iWeierstrassPPrimeGrad2 : List F -> F Time: 0.24 SEC.
compiling local iWeierstrassPPrimeGrad3 : List F -> F Time: 0 SEC.
compiling local iWeierstrassSigmaGrad1 : List F -> F Time: 1.81 SEC.
compiling local iWeierstrassSigmaGrad2 : List F -> F Time: 0.28 SEC.
compiling local iWeierstrassSigmaGrad3 : List F -> F Time: 0.01 SEC.
compiling local iWeierstrassZetaGrad1 : List F -> F Time: 0.20 SEC.
compiling local iWeierstrassZetaGrad2 : List F -> F Time: 0.15 SEC.
compiling local iWeierstrassZetaGrad3 : List F -> F Time: 0 SEC.
processing macro definition OF ==> OutputForm processing macro definition SEX ==> SExpression processing macro definition NNI ==> NonNegativeInteger compiling local dconjugate : List OutputForm -> OutputForm Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RetractableTo (Integer)) augmenting $: (SIGNATURE $ hypergeometricF (F (List F) (List F) F)) augmenting $: (SIGNATURE $ meijerG (F (List F) (List F) (List F) (List F) F)) compiling local get_int_listf : List F -> List Integer Time: 0.01 SEC.
compiling local replace_i : (List F,F,NonNegativeInteger) -> List F Time: 0.01 SEC.
compiling exported iiHypergeometricF : List F -> F Time: 0 SEC.
compiling local idvsum : (BasicOperator,Integer,List F,Symbol) -> F Time: 0.05 SEC.
compiling local dvhypergeom : (List F,Symbol) -> F Time: 0.03 SEC.
compiling local add_pairs_to_list : (List List F,List F) -> List F Time: 0.01 SEC.
compiling local dvmeijer : (List F,Symbol) -> F Time: 0.05 SEC.
compiling local get_if_list : (Integer,List InputForm) -> List List InputForm Time: 0.01 SEC.
compiling local get_if_lists : (List Integer,List InputForm) -> List List InputForm Time: 0 SEC.
compiling local get_int_listi : (Integer,List InputForm) -> List Integer Time: 0.01 SEC.
compiling local get_of_list : (Integer,List OutputForm) -> List List OutputForm Time: 0.01 SEC.
compiling local get_of_lists : (List Integer,List OutputForm) -> List List OutputForm Time: 0 SEC.
compiling local get_int_listo : (Integer,List OutputForm) -> List Integer Time: 0.01 SEC.
compiling local dhyper0 : (OutputForm,List OutputForm) -> OutputForm Time: 0.01 SEC.
compiling local dhyper : List OutputForm -> OutputForm Time: 0 SEC.
compiling local ddhyper : List OutputForm -> OutputForm Time: 0 SEC.
compiling local dmeijer0 : (OutputForm,List OutputForm) -> OutputForm Time: 0.02 SEC.
compiling local dmeijer : List OutputForm -> OutputForm Time: 0 SEC.
compiling local ddmeijer : List OutputForm -> OutputForm Time: 0 SEC.
compiling local inhyper : List InputForm -> InputForm Time: 0 SEC.
compiling local inmeijer : List InputForm -> InputForm Time: 0 SEC.
compiling exported iiHypergeometricF : List F -> F Time: 0 SEC.
compiling local iiMeijerG : List F -> F Time: 0.01 SEC.
compiling local d_eis : F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (TranscendentalFunctionCategory) ****** Domain: F already in scope augmenting F: (RadicalCategory) compiling local d_erfs : F -> F Time: 0.01 SEC.
compiling local d_erfis : F -> F Time: 0 SEC.
****** Domain: F already in scope augmenting F: (RetractableTo (Integer)) augmenting $: (SIGNATURE $ hypergeometricF (F (List F) (List F) F)) augmenting $: (SIGNATURE $ meijerG (F (List F) (List F) (List F) (List F) F)) (time taken in buildFunctor: 10)
;;; *** |FunctionalSpecialFunction| REDEFINED
;;; *** |FunctionalSpecialFunction| REDEFINED Time: 0.08 SEC.
Warnings: [1] iiabs: not known that (Ring) is of mode (CATEGORY R (SIGNATURE abs (R R)))
Cumulative Statistics for Constructor FunctionalSpecialFunction Time: 6.87 seconds
finalizing NRLIB FSPECF Processing FunctionalSpecialFunction for Browser database: --------constructor--------- --------(belong? ((Boolean) (BasicOperator)))--------- --------(operator ((BasicOperator) (BasicOperator)))--------- --------(abs (F F))--------- --------(conjugate (F F))--------- --------(Gamma (F F))--------- --------(Gamma (F F F))--------- --------(Beta (F F F))--------- --------(digamma (F F))--------- --------(polygamma (F F F))--------- --------(besselJ (F F F))--------- --------(besselY (F F F))--------- --------(besselI (F F F))--------- --------(besselK (F F F))--------- --------(airyAi (F F))--------- --------(airyAiPrime (F F))--------- --------(airyBi (F F))--------- --------(airyBiPrime (F F))--------- --------(lambertW (F F))--------- --------(polylog (F F F))--------- --------(weierstrassP (F F F F))--------- --------(weierstrassPPrime (F F F F))--------- --------(weierstrassSigma (F F F F))--------- --------(weierstrassZeta (F F F F))--------- --------(whittakerM (F F F F))--------- --------(whittakerW (F F F F))--------- --------(angerJ (F F F))--------- --------(weberE (F F F))--------- --------(struveH (F F F))--------- --------(struveL (F F F))--------- --------(hankelH1 (F F F))--------- --------(hankelH2 (F F F))--------- --------(lommelS1 (F F F F))--------- --------(lommelS2 (F F F F))--------- --------(kummerM (F F F F))--------- --------(kummerU (F F F F))--------- --------(legendreP (F F F F))--------- --------(legendreQ (F F F F))--------- --------(kelvinBei (F F F))--------- --------(kelvinBer (F F F))--------- --------(kelvinKei (F F F))--------- --------(kelvinKer (F F F))--------- --------(ellipticK (F F))--------- --------(ellipticE (F F))--------- --------(ellipticE (F F F))--------- --------(ellipticF (F F F))--------- --------(ellipticPi (F F F F))--------- --------(jacobiSn (F F F))--------- --------(jacobiCn (F F F))--------- --------(jacobiDn (F F F))--------- --------(jacobiZeta (F F F))--------- --------(jacobiTheta (F F F))--------- --------(lerchPhi (F F F F))--------- --------(riemannZeta (F F))--------- --------(charlierC (F F F F))--------- --------(hermiteH (F F F))--------- --------(jacobiP (F F F F F))--------- --------(laguerreL (F F F F))--------- --------(meixnerM (F F F F F))--------- --------(hypergeometricF (F (List F) (List F) F))--------- --------(meijerG (F (List F) (List F) (List F) (List F) F))--------- --------(iiGamma (F F))--------- --------(iiabs (F F))--------- --------(iiconjugate (F F))--------- --------(iiBeta (F (List F)))--------- --------(iidigamma (F F))--------- --------(iipolygamma (F (List F)))--------- --------(iiBesselJ (F (List F)))--------- --------(iiBesselY (F (List F)))--------- --------(iiBesselI (F (List F)))--------- --------(iiBesselK (F (List F)))--------- --------(iiAiryAi (F F))--------- --------(iiAiryAiPrime (F F))--------- --------(iiAiryBi (F F))--------- --------(iiAiryBiPrime (F F))--------- --------(iAiryAi (F F))--------- --------(iAiryAiPrime (F F))--------- --------(iAiryBi (F F))--------- --------(iAiryBiPrime (F F))--------- --------(iiHypergeometricF (F (List F)))--------- --------(iiPolylog (F F F))--------- --------(iLambertW (F F))--------- ; compiling file "/var/aw/var/LatexWiki/FSPECF.NRLIB/FSPECF.lsp" (written 08 APR 2017 01:10:47 PM):
; /var/aw/var/LatexWiki/FSPECF.NRLIB/FSPECF.fasl written ; compilation finished in 0:00:06.863 ------------------------------------------------------------------------ FunctionalSpecialFunction is now explicitly exposed in frame initial
FunctionalSpecialFunction will be automatically loaded when needed from /var/aw/var/LatexWiki/FSPECF.NRLIB/FSPECF
SUMFS abbreviates package FunctionSpaceSum ------------------------------------------------------------------------ initializing NRLIB SUMFS for FunctionSpaceSum compiling into NRLIB SUMFS ****** Domain: R already in scope ****** Domain: R already in scope ****** Domain: R already in scope ****** Domain: F already in scope ****** Domain: F already in scope ****** Domain: F already in scope importing ElementaryFunctionStructurePackage(R,F) importing GosperSummationMethod(IndexedExponents Kernel F,Kernel F,R,SparseMultivariatePolynomial(R,Kernel F),F) importing Segment F compiling local newk : () -> Kernel F Time: 0 SEC.
compiling exported sum : (F,SegmentBinding F) -> F Time: 0 SEC.
compiling exported sum : (F,Symbol) -> F Time: 0 SEC.
compiling local notRF? : (F,Kernel F) -> Boolean Time: 0.01 SEC.
compiling local innersum : (F,Kernel F) -> Union(F,failed) ****** comp fails at level 1 with expression: ****** error in function innersum
(R) ****** level 1 ****** $x:= R $m:= (Join (IntegralDomain) (Comparable) (RetractableTo (Integer)) (LinearlyExplicitOver (Integer))) $f:= ((((|x1| #) (#:G2128 #) (#:G2127 # #) (|k| # #) ...)))
>> Apparent user error: Cannot coerce R of mode (Join (IntegralDomain) (Comparable) (RetractableTo (Integer)) (LinearlyExplicitRingOver (Integer))) to mode (Join (IntegralDomain) (Comparable) (RetractableTo (Integer)) (LinearlyExplicitOver (Integer)))

Tests from GouldBk?.pdf --rrogers, Fri, 07 Apr 2017 16:22:25 +0000 reply
Moved to:

SandBoxCombfuncDiscussion




  Subject:   Be Bold !!
  ( 14 subscribers )  
Please rate this page: