fricas
(1) -> <spad>
fricas
)abbrev package SPI SumProdInt
SumProdInt(R): Exports == Implementation where
R:Join(Comparable,IntegralDomain,RTZZ,LEZZ)
ZZ ==> Integer
RTZZ ==> RetractableTo ZZ
LEZZ ==> LinearlyExplicitOver ZZ
X ==> Expression R
PI ==> PositiveInteger
UK ==> Union(Kernel X,"failed")
UX ==> Union(X,"failed")
KX ==> Kernel X
LX ==> List X
SX ==> Segment X
SBX ==> SegmentBinding X
EFSP ==> ElementaryFunctionStructurePackage(R,X)
SPIR ==> Record(typ:Symbol, term:X, var:X, sym:X, lb:X, ub:X)
NFPRD ==> Record(fac:X, nump:List X, denp:List X)
QUOTR ==> Record(quotient: X,remainder: X)
Exports == Join(OrderedSet) with
destruct : X -> Union(SPIR,"failed")
construct : SPIR -> X
splitOp : (X,X) -> UX
++ splitOp function splits the summation and product at a term
++ and definite integral at an interval.
++ splitOp(expr, c), expr - summation, product or definite integral,
++ c - value at which expr should be split.
multiplyOp : (X,X) -> UX
++ multiplyOp function exponentiates the base operator, "+" to
++ "*", "*" to "^". The multiplicand can contain the iterating
++ variable or index of summation, product or definite integral.
++ multiplyOp(expr, c), expr - summation, product or definite integral
++ c - value to be multiplied.
splitArgs : X -> UX
++ splitArgs function splits summation and definite integral based
++ on the additive term and product based on the multiplicative
++ term in the inner expression.
++ splitArgs(expr), expr - summation, product or integral.
takeHigh : (X,Integer) -> UX
++ takeHigh function gets the higher terms of summation, product and
++ definite integral.
++ takeHigh(expr, n), expr - summation, product or definite integral,
++ n - number of terms to be fetched if expr is summation
++ or product else the limit if expr is a definite integral.
takeLow : (X,Integer) -> UX
++ The takeLow function gets the lower terms of summation, product
++ and definite integral.
++ takeLow(expr, n), expr - summation, product or definite integral,
++ n - number of terms to be fetched if expr is summation or product
++ else the limit if expr is a definite integral.
shiftRange : (X,X) -> UX
++ The shifRange function shifts or rearranges summation, product
++ and definite integral.
++ shiftRange(expr, n), expr - summation, product or definite integral,
++ n - value by which expr should be shifted
shiftToZero : X -> UX
++ shiftToZero(expr) is the same as shiftRange(expr,-lowerBound),
++ but does not need to know the start value.
reverseOrder : X -> UX
++ reverseOrder function reverses the order of terms for summation
++ and product and intervals for definite integral.
++ reverseOrder(expr), expr - summation, product or definite integral.
getCoefficient : (X,X,X) -> UX
++ getCoefficient function gets the coefficient of a term in a
++ univariate polynomial which is represented as a summation.
++ getCoefficient(expr,k,invar), expr - summation, k - coefficient
++ for kth term, invar - variable for which coefficient needs to be
++ fetched.
evalOp : (X,X,X) -> UX
++ evalOp function gets the terms of summation and product and value
++ of the definite integral. If the input is a summation then it returns
++ the closed form of summation if it can be evaluated else it returns
++ the summation unevaluated.
++ evalOp(expr,start,end), expr - summation, product or definite
++ integral, start - lower limit of expr starting from which the terms
++ or value need to be fetched, end - upper limit of expr until which
++ the terms or value need to be fetched
combineSplitArgs : X -> UX
++ combineSplitArgs function combines the summations and definite
++ integrals split on additive terms and products split on
++ multiplicative terms. This performs reverse operation as in case
++ of splitArgs function.
++ combineSplitArgs(expr), expr - expression.
pullConstant : X -> UX
pushConstant : (X,X) -> UX
reduceQuoProd: (X,X) -> Union(X,"failed")
getLowerBound : X -> UX
getUpperBound : X -> UX
getOpTerm : X -> UX
getOpTermAs : (X,X) -> UX
getOpType : X -> Union(Symbol,"failed")
setLowerBound : (X,X) -> UX
setUpperBound : (X,X) -> UX
setOpTerm : (X,X->X) -> UX
setOpType : (X,Symbol) -> UX
splitTimesND: X -> List List X
splitFactorOp : (List X,Symbol) -> List List X
makeTimesFactor : List X -> X
invertProd: X -> UX
nfProd : X -> NFPRD
reduceProductND : NFPRD -> NFPRD
reduceProducts: X -> X
Implementation == X add
spi_ops:List Symbol:=['%defsum,'%defprod,'%defint]
sum?(r:SPIR):Boolean == r.typ = '%defsum
prd?(r:SPIR):Boolean == r.typ = '%defprod
int?(r:SPIR):Boolean == r.typ = '%defint
-- construct a SPI term from SPIR
construct(r:SPIR):X ==
t:X:=subst(r.term,r.var=r.sym)
v:Symbol:=retract(r.sym)@Symbol
s:SBX:=equation(v,segment(r.lb,r.ub)$SX)$SBX
sum? r => summation(t,s)$X
prd? r => product(t,s)$X
int? r => integral(t,s)$X
error "Type must be %defsum,%defprod or %defint."
-- destruct a SPI term to SPIR
destruct(x:X):Union(SPIR,"failed") ==
opt:List Symbol:= [o for o in spi_ops | is?(x,o)]
empty? opt => "failed"
mk:UK:=mainKernel(x)
mk case "failed" => "failed"
K:KX:=mk
A:List X:=argument K
t:Symbol:=first opt
[t,A.1,A.2,A.3,A.4,A.5]
-- term x is free of SPI
freeOfSPI?(x:X):Boolean ==
nop:List Symbol:=[name o for o in operators x]
empty? setIntersection(spi_ops,nop)
-- freeOf?($,'%def$) also possible
-- gives the type of SPI
checkSPI(x:X):Union(X,"summation","product","integral") ==
name last operators x = '%defsum => "summation"
name last operators x = '%defint => "integral"
name last operators x = '%defprod => "product"
x
---
splitOp(x,s) ==
r:=destruct x
r case "failed" => "failed"
r.sym=s => "failed" -- more checks?
rc:=copy r
r.ub := s
rc.lb := s+1
sum? r => construct(r) + construct(rc)
prd? r => construct(r) * construct(rc)
rc.lb := s -- integral
int? r => construct(r) + construct(rc)
multiplyOp(x,s) ==
r:=destruct x
r case "failed" => "failed"
r.term := s * r.term
sum? r => construct(r)
int? r => construct(r)
-- r.term := (r.term)^s ;;; better using a exptOp
prd? r => construct(r)
splitArgs(x) ==
r:=destruct x
r case "failed" => "failed"
if sum? r or int? r then
B:Union(List(X),"failed"):=isPlus(r.term)
B case "failed" => "failed"
v:X:=0
for i in 1..#B repeat
r.term := B.i
v:=v + construct(r)
return v
if prd? r then
B:Union(List(X),"failed"):=isTimes(r.term)
B case "failed" => "failed"
v:X:=1
for i in 1..#B repeat
r.term := B.i
v:=v * construct(r)
return v
return("failed")
takeHigh(x,n) ==
r:=destruct x
r case "failed" => "failed"
not positive? n => "failed"
r.lb:=r.ub - n::X + 1
construct(r)
takeLow(x,n) ==
r:=destruct x
r case "failed" => "failed"
not positive? n => "failed"
r.ub:=r.lb + n::X - 1
construct(r)
shiftRange(x,n) ==
r:=destruct x
r case "failed" => "failed"
r.term := subst(r.term,r.var=r.var-n)
r.lb := r.lb + n
r.ub := r.ub + n
construct(r)
shiftToZero(x) ==
r:=destruct x
r case "failed" => "failed"
r.term := subst(r.term,r.var=r.var+r.lb)
r.ub := r.ub - r.lb
r.lb := r.lb - r.lb
construct(r)
reverseOrder(x:X):UX ==
r:=destruct x
r case "failed" => "failed"
if sum? r or prd? r then
r.term := subst(r.term, r.var=r.ub - r.var)
r.ub := r.ub - r.lb -- b-a
r.lb := r.lb - r.lb -- 0
c:X :=1
else
a := r.lb
r.lb := r.ub
r.ub := a
c:X := -1
c * construct(r)
getCoefficient(x:X,k:X,invar:X):UX ==
r:=destruct x
r case "failed" => "failed"
y:X:=eval(r.term,r.var=k)/(invar)^k
freeOf?(y,invar) => y
"failed"
evalOp(x:X,a:X,b:X):UX ==
r:=destruct x
r case "failed" => "failed"
if R has RetractableTo(Integer) then
d:Union(Integer,"failed"):=retractIfCan(b-a)
if d case "failed" or int? r then
r.lb:=a
r.ub:=b
return construct(r)
else
if d case Integer then
if positive? d then
l:List X :=[eval(r.term,r.var=a+i::X) for i in 0..d]
else
return "failed"
sum? r => reduce(_+,l)@X
prd? r => reduce(_*,l)@X
else
r.lb:=a
r.ub:=b
return construct(r)
combineSplitArgs(x:X):UX ==
p:=isPlus x ; t:=isTimes x
p case "failed" and t case "failed" => "failed"
x
pullConstant(x:X):UX ==
r:=destruct x
r case "failed" => "failed"
tr:=isTimes r.term
tr case "failed" => "failed"
fs:LX:=[s for s in tr | freeOf?(s,r.var)]
if not empty? fs then
ff:X:=reduce(_*,fs)
r.term := r.term / ff
else
ff:X:=1::X
return(ff * construct r)
pushConstant(x:X,c:X):UX ==
r:=destruct x
r case "failed" => "failed"
--not freeOf?(r.term,c) => "failed"
not freeOf?(c,r.var) => "failed"
not freeOf?(c,r.sym) => "failed"
r.term := c * r.term
construct r
-----------------
getLowerBound x ==
r:=destruct x
r case "failed" => "failed"
r.lb
getUpperBound x ==
r:=destruct x
r case "failed" => "failed"
r.ub
getOpTerm x ==
r:=destruct x
r case "failed" => "failed"
subst(r.term,r.var=r.sym)
getOpTermAs(x,y) ==
r:=destruct x
r case "failed" => "failed"
subst(r.term,r.var=y)
getOpType x ==
r:=destruct x
r case "failed" => "failed"
r.typ
setLowerBound(x,a) ==
r:=destruct x
r case "failed" => "failed"
r.lb:=a
construct(r)
setUpperBound(x,b) ==
r:=destruct x
r case "failed" => "failed"
r.ub:=b
construct(r)
setOpTerm(x,f) ==
r:=destruct x
r case "failed" => "failed"
r.term:=f(r.var)
construct(r)
setOpType(x,s) ==
r:=destruct x
r case "failed" => "failed"
not member?(s,spi_ops) => "failed"
r.typ:=s
construct(r)
sfloor(x:X):X ==
f:BasicOperator := operator('floor,1)
if R has RetractableTo(Integer) then
rx:Union(Fraction Integer, "failed"):=retractIfCan(x)
if rx case Fraction(Integer) then return floor(rx)::X
f(x)
sceiling(x:X):X ==
c:BasicOperator := operator('ceiling,1)
if R has RetractableTo(Integer) then
rx:Union(Fraction Integer, "failed"):=retractIfCan(x)
if rx case Fraction(Integer) then return ceiling(rx)::X
c(x)
startsplit(x:X):X ==
ss:BasicOperator := operator('startSplit,1)
if R has RetractableTo(Integer) then
rx:Union(Integer, "failed"):=retractIfCan(x)
if rx case Integer then
q:Fraction Integer:=rx/2
if odd? rx then
return ceiling(q)::X
else
return (1+ceiling(q))::X
ss(x)
-----------------
-- x -> N/D -> N1*N2*...Nk / D1*D2...Dj -> ([N1,N2,...],[D1,D2,...])
splitTimesND(x:X):List List X ==
--x:=normalize x
nx:=numerator x
dx:=denominator x
lnx:=isTimes nx
ldx:=isTimes dx
qnx:List X:=[]
qdx:List X:=[]
if lnx case "failed" then
qnx:=[nx]
else
qnx:=lnx
if ldx case "failed" then
qdx:=[dx]
else
qdx:=ldx
return [qnx,qdx]
-- [A1,A2,...] -> ([Ai not op(s)],[Ai is op(s)])
splitFactorOp(x:List X,s:Symbol):List List X ==
b:=[t for t in x | is?(t,s)]
a:=[t for t in x | not is?(t,s)]
[a,b]
makeTimesFactor(l:List X):X ==
if not empty? l then
reduce(_*,[t::X for t in l])
else
l:X:=1
invertProd(x:X):UX ==
r:=destruct x
if r case SPIR then
qr:QUOTR:=divide(1::X,r.term)$X
r.term := qr.quotient
construct(r)
else
"failed"
-- prod(A*f(i),i=0..b)/prod(B*f(i),i=0..c) -> evaluated
-- assumes lb shifted to zero, or if same ub, then reverse
-- and shift to zero-
reduceQuoProd(x:X,y:X):Union(X,"failed") ==
rx:=destruct x
ry:=destruct y
rx case "failed" => "failed"
ry case "failed" => "failed"
xy:X:=new()$Symbol::X
tx:=subst(rx.term,rx.var=xy)
ty:=subst(ry.term,ry.var=xy)
fac:X:=tx/ty
not freeOf?(fac,xy) => "failed"
if rx.lb = ry.lb then
rx.term := subst(rx.term,rx.var=rx.var+rx.lb)
rx.ub := rx.ub - rx.lb
rx.lb := rx.lb - rx.lb
ry.term := subst(ry.term,ry.var=ry.var+ry.lb)
ry.ub := ry.ub - ry.lb
ry.lb := ry.lb - ry.lb
else
if rx.ub = ry.ub then -- reverse
rx.term := subst(rx.term, rx.var=rx.ub - rx.var)
rx.ub := rx.ub - rx.lb -- b-a
rx.lb := rx.lb - rx.lb -- 0
ry.term := subst(ry.term, ry.var=ry.ub - ry.var)
ry.ub := ry.ub - ry.lb -- b-a
ry.lb := ry.lb - ry.lb -- 0
else
return "failed"
a:=rx.lb - ry.lb -- should be 0
b:=rx.ub - ry.ub
c:Union(Integer,"failed"):=retractIfCan(b)
c case "failed" or a~=0 => "failed"
n:Integer:=c::Integer
r:=copy ry
exp:X:=rx.ub + 1::X
fac:=fac^exp --normalize(fac^exp)$EFSP
n=0 => fac
if positive? n then
r.term := subst(r.term,r.var=r.var+ry.ub+1)
r.lb:=0::X -- shift to zero
r.ub:=n::X-1
return fac * construct(r)
else
r.term := subst(r.term,r.var=r.var+rx.ub+1)
r.lb:=0::X
r.ub:=-n::X -1
return fac / construct(r)
return("failed")
-- prod(f,i=a..b) -> f(a)*f(a+1)*...*f(b) if b-a is integer
-- Ex. expandProductIfCan product(sin(k),k=N-3..N)
expandProductIfCan(x:X):UX ==
not is?(x,'%defprod) => "failed"
r:=destruct x
r case "failed" => "failed"
if R has RetractableTo(Integer) then
d:Union(Integer,"failed"):=retractIfCan(r.ub - r.lb)
d case "failed" => "failed"
if positive? d or d=0 then
l:List X :=[eval(r.term,r.var=r.lb+i::X) for i in 0..d]
else
return "failed"
reduce(_*,l)@X
else
return "failed"
nfProd(x:X):NFPRD ==
sx:=splitTimesND x
nsx:=splitFactorOp(first sx, '%defprod)
dsx:=splitFactorOp(second sx, '%defprod)
fn:=makeTimesFactor(first nsx)
fd:=makeTimesFactor(first dsx)
[fn/fd,second nsx, second dsx]$NFPRD
reduceProductND(x:NFPRD):NFPRD ==
r:=copy x
for a in r.nump repeat
for b in r.denp repeat
q:=reduceQuoProd(a,b)
if not (q case "failed") then
r.denp:=remove(b,r.denp)
r.nump:=remove(a,r.nump)
r.fac:=q*r.fac
return r
reduceProducts(x:X):X ==
r:=nfProd x
rr:NFPRD:=[0::X,[]::LX,[]::LX]$NFPRD
while true repeat
rr:=reduceProductND r
if empty? rr.nump or empty? rr.denp then break
if rr=r then break else r:=rr
rv:X:=rr.fac * makeTimesFactor(rr.nump) / makeTimesFactor(rr.denp)
normalize(rv)$EFSP
--------------------------------------
fricas
)abbrev package HYPGEOM HyperGeometric
--------------------------------------
HyperGeometric(): Exports == Implementation where
R ==> Fraction Integer -- better than Integer for this purpose
X ==> Expression R
NNI ==> NonNegativeInteger
SMP ==> SparseMultivariatePolynomial(R, Kernel X) -- if R has IntegralDomain
SUP ==> SparseUnivariatePolynomial SMP
EFSP ==> ElementaryFunctionStructurePackage(R,X)
FACSUP ==> Factored SUP
FACREC ==> Record(factor:SUP, exponent:NNI)
HYPER ==> Record(ap:List X, bq:List X, fac:X)
PARAM ==> Record(ab:List SUP, const:List SUP)
Exports == with
factoredForm : (X->X) -> Fraction(FACSUP)
getParameters : FACSUP -> PARAM
convert : SUP -> X
isPoly? :(X->X) -> Boolean
isQuoRat? :(X->X) -> Boolean
pFq : (X->X) -> HYPER
pFq0 : (X->X) -> HYPER
pFq00 : (X->X) -> HYPER
construct: (HYPER,Symbol) -> X
transformIfCan : Fraction FACSUP -> Union(HYPER,"failed")
display : HYPER -> OutputForm
hyperLookup : HYPER -> X
Implementation == add
factoredForm(f:X->X):Fraction(FACSUP) ==
ns:X:=new()$Symbol::X
q:=f(ns+1)/f(ns)
-- check free of sums/prods/ints dep on var
import from SumProdInt(R)
--nq:=reduceProducts(nq) --> NEW! trial only
--
nq:=normalize(reduceProducts q)$EFSP
dnq:=denom nq
nnq:=numer nq
unnq:=univariate(nnq,first tower(ns))
udnq:=univariate(dnq,first tower(ns))
funnq:=factor unnq
fudnq:=factor udnq
funnq/fudnq
-- check degree .... may be > 1
getParameters x ==
qm:=create()$SingletonAsOrderedSet
r:List FACREC:=factors x
l1:List SUP:=[]
l2:List SUP:=[]
for s in r repeat
p:SUP:=s.factor
if variables p = [qm]
then
lc:SMP:=leadingCoefficient p
q1:=reductum(p) --> /lc
xq1:X:=convert q1 ; xlc:X:=convert(lc::SUP)
--q1:=(xq1/xlc)@SUP -- need Fraction SUP ??????
for i in 1..s.exponent repeat
l1:=cons(q1,l1)
l2:=cons(lc::SUP, l2)
else
q2:=p
for i in 1..s.exponent repeat
l2:=cons(q2,l2)
return [l1,l2]$PARAM
convert(x:SUP):X ==
k:Kernel(X):=first tower('_%::X)
y:SMP:=multivariate(x,k)$SMP
coerce(y)$X
transformIfCan(x:Fraction FACSUP):Union(HYPER,"failed") ==
nx:FACSUP:=numer x
dx:FACSUP:=denom x
rnx:List FACREC:=factors nx
rdx:List FACREC:=factors dx
dn:List NNI:=[degree t.factor for t in rnx]
dd:List NNI:=[degree t.factor for t in rdx]
any?((n:NNI):Boolean+->(n>1),dn) => "failed"
any?((n:NNI):Boolean+->(n>1),dn) => "failed"
C:X:=1
A:List X:=[]
B:List X:=[]
for r in rnx repeat
cr:X:=convert(r.factor)--$HYPGEOM
crr:X:=convert(reductum r.factor)--$HYPGEOM
if degree(r.factor)=0 then
C:=C * cr^(r.exponent)
else -- degree=1
lc:X:=D(cr,'$) -- leadingCoeff (not 0)
rr:X:=crr
a:X:=rr/lc
for i in 1..r.exponent repeat
A:=cons(a,A)
C:=C*lc
-- same for B (*->/)
for r in rdx repeat
cr:X:=convert(r.factor)--$HYPGEOM
crr:X:=convert(reductum r.factor)--$HYPGEOM
if degree(r.factor)=0 then
C:=C / cr^(r.exponent)
else -- degree=1
lc:X:=D(cr,'$) -- leadingCoeff (not 0)
rr:X:=crr
b:X:=rr/lc
for i in 1..r.exponent repeat
B:=cons(b,B)
C:=C / lc
-- satisfy pFq condition (could be done later in pFq?)
if member?(1$X,B) then
B:=delete(B,position(1$X,B))
else
A:=cons(1$X,A)
[A,B,C]$HYPER
pFq(f:X->X):HYPER ==
ff:=factoredForm(f)
gpn:=getParameters(numer ff).ab
gpd:=getParameters(denom ff).ab
[[convert t for t in gpn],[convert t for t in gpd],1$X]$HYPER
-- 1 in bq => remove it otherwise add 1 to aq
-- coeff and f(0) todo
-- pFq(k+->cos(k)) , pre-filter f(n+1)/f(n) rational?
isPoly?(f:X->X):Boolean ==
nsym:Symbol:=new()$Symbol
ns:X:=nsym::X
q:=f(ns)
D(q,nsym)$X=0 => true
nq:=normalize(q)$EFSP
dnq:=denom nq
nnq:=numer nq
unnq:=univariate(nnq,first tower(ns))
udnq:=univariate(dnq,first tower(ns))
empty?(variables unnq) => false
not empty?(variables udnq) => false
true
isQuoRat?(f:X->X):Boolean ==
isPoly?(f) => true -- accelerates e.g. k^1234567
nsym:Symbol:=new()$Symbol
ns:X:=nsym::X
q:=f(ns+1)/f(ns)
D(q,nsym)$X=0 => true
nq:=normalize(q)$EFSP
dnq:=denom nq
nnq:=numer nq
unnq:=univariate(nnq,first tower(ns))
udnq:=univariate(dnq,first tower(ns))
empty?(variables unnq) and empty?(variables udnq) => false
true
buildConst(x:List SUP):X ==
empty?(x) => 1$X
p:SUP:=reduce(_*,x)
convert p
pFq00(f:X->X):HYPER ==
ff:=factoredForm(f)
gpn:=getParameters(numer ff)
gpd:=getParameters(denom ff)
a:=[convert t for t in gpn.ab]
b:=[convert t for t in gpd.ab]
if member?(1$X,b) then
b:=delete(b,position(1$X,b))
else
a:=cons(1$X,a)
c:=convert unit(numer ff)
ca:=buildConst(gpn.const)
cb:=buildConst(gpd.const)
[a,b,c*ca*cb]$HYPER
pFq0(f:X->X):HYPER ==
ff:=factoredForm f
hff:=transformIfCan ff
hff case "failed" => error "not hyer?"
c:=convert unit(numer ff) -- necessary !!!! factor
hff.fac := c * hff.fac
return hff
construct(x,s) ==
v:=s::X
a:=x.ap
b:=x.bq
c:=x.fac
av:=[paren(v+t) for t in a]
bv:=[paren(v+t) for t in b]
num:=1$X
den:=1$X
if not empty? av then
num:=reduce(_*,av)
if not empty? bv then
den:=reduce(_*,bv)
c*num/den/(v+1$X)
display(x:HYPER):OutputForm ==
OF ==> OutputForm
a:=[s::OF for s in x.ap]
b:=[s::OF for s in x.bq]
c:=(x.fac)::OF
p:=(#a)::OF
q:=(#b)::OF
A:=sub(presub('F::OF,p),q)
if #a < #b then
a:=append(a,['*::OF for i in 1..#b- #a])
else
b:=append(b,['*::OF for i in 1..#a- #b])
--B:=binomial(blankSeparate a, blankSeparate b)
B:=blankSeparate [A,matrix [a,b],bracket c]
--hconcat(A,B)
hyperLookup(x:HYPER):X ==
a:=x.ap
b:=x.bq
c:=x.fac
p:= #a
q:= #b
if p=1 then
if q=0 then
return (1-c)^(-a.1)
0$X</spad>
fricas
Compiling FriCAS source code from file
/var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/8470101588931044298-25px001.spad
using old system compiler.
SPI abbreviates package SumProdInt
------------------------------------------------------------------------
initializing NRLIB SPI for SumProdInt
compiling into NRLIB SPI
****** Domain: R already in scope
****** Domain: R already in scope
****** Domain: R already in scope
compiling local sum? : Record(typ: Symbol,term: Expression R,var: Expression R,sym: Expression R,lb: Expression R,ub: Expression R) -> Boolean
Time: 0.02 SEC.
compiling local prd? : Record(typ: Symbol,term: Expression R,var: Expression R,sym: Expression R,lb: Expression R,ub: Expression R) -> Boolean
Time: 0 SEC.
compiling local int? : Record(typ: Symbol,term: Expression R,var: Expression R,sym: Expression R,lb: Expression R,ub: Expression R) -> Boolean
Time: 0 SEC.
compiling exported construct : Record(typ: Symbol,term: Expression R,var: Expression R,sym: Expression R,lb: Expression R,ub: Expression R) -> Expression R
Time: 0 SEC.
compiling exported destruct : Expression R -> Union(Record(typ: Symbol,term: Expression R,var: Expression R,sym: Expression R,lb: Expression R,ub: Expression R),failed)
Time: 0.02 SEC.
compiling local freeOfSPI? : Expression R -> Boolean
Time: 0 SEC.
compiling local checkSPI : Expression R -> Union(Expression R,summation,product,integral)
Time: 0 SEC.
compiling exported splitOp : (Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported multiplyOp : (Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported splitArgs : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported takeHigh : (Expression R,Integer) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported takeLow : (Expression R,Integer) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported shiftRange : (Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported shiftToZero : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported reverseOrder : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported getCoefficient : (Expression R,Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported evalOp : (Expression R,Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported combineSplitArgs : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported pullConstant : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported pushConstant : (Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported getLowerBound : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported getUpperBound : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported getOpTerm : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported getOpTermAs : (Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported getOpType : Expression R -> Union(Symbol,failed)
Time: 0 SEC.
compiling exported setLowerBound : (Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported setUpperBound : (Expression R,Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported setOpTerm : (Expression R,Expression R -> Expression R) -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported setOpType : (Expression R,Symbol) -> Union(Expression R,failed)
Time: 0 SEC.
compiling local sfloor : Expression R -> Expression R
Time: 0 SEC.
compiling local sceiling : Expression R -> Expression R
Time: 0 SEC.
compiling local startsplit : Expression R -> Expression R
Time: 0 SEC.
compiling exported splitTimesND : Expression R -> List List Expression R
Time: 0 SEC.
compiling exported splitFactorOp : (List Expression R,Symbol) -> List List Expression R
Time: 0 SEC.
compiling exported makeTimesFactor : List Expression R -> Expression R
Time: 0 SEC.
compiling exported invertProd : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported reduceQuoProd : (Expression R,Expression R) -> Union(Expression R,failed)
Time: 0.02 SEC.
compiling local expandProductIfCan : Expression R -> Union(Expression R,failed)
Time: 0 SEC.
compiling exported nfProd : Expression R -> Record(fac: Expression R,nump: List Expression R,denp: List Expression R)
Time: 0 SEC.
compiling exported reduceProductND : Record(fac: Expression R,nump: List Expression R,denp: List Expression R) -> Record(fac: Expression R,nump: List Expression R,denp: List Expression R)
Time: 0.02 SEC.
compiling exported reduceProducts : Expression R -> Expression R
Time: 0 SEC.
(time taken in buildFunctor: 293)
;;; *** |SumProdInt| REDEFINED
;;; *** |SumProdInt| REDEFINED
Time: 0 SEC.
Warnings:
[1] sum?: typ has no value
[2] prd?: typ has no value
[3] int?: typ has no value
[4] construct: term has no value
[5] construct: var has no value
[6] construct: sym has no value
[7] construct: lb has no value
[8] construct: ub has no value
[9] splitOp: sym has no value
[10] splitOp: ub has no value
[11] splitOp: lb has no value
[12] multiplyOp: term has no value
[13] splitArgs: term has no value
[14] takeHigh: lb has no value
[15] takeHigh: ub has no value
[16] takeLow: ub has no value
[17] takeLow: lb has no value
[18] shiftRange: term has no value
[19] shiftRange: var has no value
[20] shiftRange: lb has no value
[21] shiftRange: ub has no value
[22] shiftToZero: term has no value
[23] shiftToZero: var has no value
[24] shiftToZero: lb has no value
[25] shiftToZero: ub has no value
[26] reverseOrder: term has no value
[27] reverseOrder: var has no value
[28] reverseOrder: ub has no value
[29] reverseOrder: lb has no value
[30] getCoefficient: term has no value
[31] getCoefficient: var has no value
[32] evalOp: lb has no value
[33] evalOp: ub has no value
[34] evalOp: term has no value
[35] evalOp: var has no value
[36] pullConstant: term has no value
[37] pullConstant: var has no value
[38] pushConstant: var has no value
[39] pushConstant: sym has no value
[40] pushConstant: term has no value
[41] getLowerBound: lb has no value
[42] getUpperBound: ub has no value
[43] getOpTerm: term has no value
[44] getOpTerm: var has no value
[45] getOpTerm: sym has no value
[46] getOpTermAs: term has no value
[47] getOpTermAs: var has no value
[48] getOpType: typ has no value
[49] setLowerBound: lb has no value
[50] setUpperBound: ub has no value
[51] setOpTerm: term has no value
[52] setOpTerm: var has no value
[53] setOpType: typ has no value
[54] makeTimesFactor: The conditional modes (Expression R) and (List (Expression R)) conflict
[55] invertProd: term has no value
[56] invertProd: quotient has no value
[57] reduceQuoProd: term has no value
[58] reduceQuoProd: var has no value
[59] reduceQuoProd: lb has no value
[60] reduceQuoProd: ub has no value
[61] expandProductIfCan: ub has no value
[62] expandProductIfCan: lb has no value
[63] expandProductIfCan: term has no value
[64] expandProductIfCan: var has no value
[65] reduceProductND: nump has no value
[66] reduceProductND: denp has no value
[67] reduceProductND: fac has no value
[68] reduceProducts: nump has no value
[69] reduceProducts: denp has no value
[70] reduceProducts: fac has no value
[71] reduceProducts: not known that (AlgebraicallyClosedField) is of mode (CATEGORY domain (IF (has R (IntegralDomain)) (PROGN (ATTRIBUTE (AlgebraicallyClosedFunctionSpace R)) (ATTRIBUTE (TranscendentalFunctionCategory)) (ATTRIBUTE (CombinatorialOpsCategory)) (ATTRIBUTE (LiouvillianFunctionCategory)) (ATTRIBUTE (SpecialFunctionCategory)) (SIGNATURE reduce (% %)) (SIGNATURE number? ((Boolean) %)) (IF (has R (PolynomialFactorizationExplicit)) (ATTRIBUTE (PolynomialFactorizationExplicit)) noBranch) (SIGNATURE setSimplifyDenomsFlag ((Boolean) (Boolean))) (SIGNATURE getSimplifyDenomsFlag ((Boolean)))) noBranch))
[72] reduceProducts: not known that (TranscendentalFunctionCategory) is of mode (CATEGORY domain (IF (has R (IntegralDomain)) (PROGN (ATTRIBUTE (AlgebraicallyClosedFunctionSpace R)) (ATTRIBUTE (TranscendentalFunctionCategory)) (ATTRIBUTE (CombinatorialOpsCategory)) (ATTRIBUTE (LiouvillianFunctionCategory)) (ATTRIBUTE (SpecialFunctionCategory)) (SIGNATURE reduce (% %)) (SIGNATURE number? ((Boolean) %)) (IF (has R (PolynomialFactorizationExplicit)) (ATTRIBUTE (PolynomialFactorizationExplicit)) noBranch) (SIGNATURE setSimplifyDenomsFlag ((Boolean) (Boolean))) (SIGNATURE getSimplifyDenomsFlag ((Boolean)))) noBranch))
Cumulative Statistics for Constructor SumProdInt
Time: 0.19 seconds
--------------non extending category----------------------
.. SumProdInt(#1) of cat
(|Join| (|OrderedSet|)
(CATEGORY |package|
(SIGNATURE |destruct|
((|Union|
(|Record| (|:| |typ| (|Symbol|)) (|:| |term| (|Expression| |#1|))
(|:| |var| (|Expression| |#1|))
(|:| |sym| (|Expression| |#1|))
(|:| |lb| (|Expression| |#1|))
(|:| |ub| (|Expression| |#1|)))
"failed")
(|Expression| |#1|)))
(SIGNATURE |construct|
((|Expression| |#1|)
(|Record| (|:| |typ| (|Symbol|)) (|:| |term| (|Expression| |#1|))
(|:| |var| (|Expression| |#1|))
(|:| |sym| (|Expression| |#1|))
(|:| |lb| (|Expression| |#1|))
(|:| |ub| (|Expression| |#1|)))))
(SIGNATURE |splitOp|
((|Union| (|Expression| |#1|) #1="failed") (|Expression| |#1|)
(|Expression| |#1|)))
(SIGNATURE |multiplyOp|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Expression| |#1|)))
(SIGNATURE |splitArgs|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |takeHigh|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|) (|Integer|)))
(SIGNATURE |takeLow|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|) (|Integer|)))
(SIGNATURE |shiftRange|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Expression| |#1|)))
(SIGNATURE |shiftToZero|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |reverseOrder|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |getCoefficient|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Expression| |#1|) (|Expression| |#1|)))
(SIGNATURE |evalOp|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Expression| |#1|) (|Expression| |#1|)))
(SIGNATURE |combineSplitArgs|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |pullConstant|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |pushConstant|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Expression| |#1|)))
(SIGNATURE |reduceQuoProd|
((|Union| (|Expression| |#1|) "failed") (|Expression| |#1|)
(|Expression| |#1|)))
(SIGNATURE |getLowerBound|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |getUpperBound|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |getOpTerm|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |getOpTermAs|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Expression| |#1|)))
(SIGNATURE |getOpType|
((|Union| (|Symbol|) "failed") (|Expression| |#1|)))
(SIGNATURE |setLowerBound|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Expression| |#1|)))
(SIGNATURE |setUpperBound|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Expression| |#1|)))
(SIGNATURE |setOpTerm|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)
(|Mapping| (|Expression| |#1|) (|Expression| |#1|))))
(SIGNATURE |setOpType|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|) (|Symbol|)))
(SIGNATURE |splitTimesND|
((|List| (|List| (|Expression| |#1|))) (|Expression| |#1|)))
(SIGNATURE |splitFactorOp|
((|List| (|List| (|Expression| |#1|))) (|List| (|Expression| |#1|))
(|Symbol|)))
(SIGNATURE |makeTimesFactor|
((|Expression| |#1|) (|List| (|Expression| |#1|))))
(SIGNATURE |invertProd|
((|Union| (|Expression| |#1|) #1#) (|Expression| |#1|)))
(SIGNATURE |nfProd|
((|Record| (|:| |fac| (|Expression| |#1|))
(|:| |nump| (|List| (|Expression| |#1|)))
(|:| |denp| (|List| (|Expression| |#1|))))
(|Expression| |#1|)))
(SIGNATURE |reduceProductND|
((|Record| (|:| |fac| (|Expression| |#1|))
(|:| |nump| (|List| (|Expression| |#1|)))
(|:| |denp| (|List| (|Expression| |#1|))))
(|Record| (|:| |fac| (|Expression| |#1|))
(|:| |nump| (|List| (|Expression| |#1|)))
(|:| |denp| (|List| (|Expression| |#1|))))))
(SIGNATURE |reduceProducts|
((|Expression| |#1|) (|Expression| |#1|))))) has no
(|FunctionSpace| |#1|) finalizing NRLIB SPI
Processing SumProdInt for Browser database:
--->-->SumProdInt(constructor): Not documented!!!!
--->-->SumProdInt((destruct ((Union (Record (: typ (Symbol)) (: term (Expression R)) (: var (Expression R)) (: sym (Expression R)) (: lb (Expression R)) (: ub (Expression R))) failed) (Expression R)))): Not documented!!!!
--->-->SumProdInt((construct ((Expression R) (Record (: typ (Symbol)) (: term (Expression R)) (: var (Expression R)) (: sym (Expression R)) (: lb (Expression R)) (: ub (Expression R)))))): Not documented!!!!
--------(splitOp ((Union (Expression R) failed) (Expression R) (Expression R)))---------
--------(multiplyOp ((Union (Expression R) failed) (Expression R) (Expression R)))---------
--------(splitArgs ((Union (Expression R) failed) (Expression R)))---------
--------(takeHigh ((Union (Expression R) failed) (Expression R) (Integer)))---------
--------(takeLow ((Union (Expression R) failed) (Expression R) (Integer)))---------
--->-->SumProdInt((takeLow ((Union (Expression R) failed) (Expression R) (Integer)))): Improper first word in comments: The
"The takeLow function gets the lower terms of summation,{} product and definite integral. takeLow(expr,{} \\spad{n}),{} expr - summation,{} product or definite integral,{} \\spad{n} - number of terms to be fetched if expr is summation or product else the limit if expr is a definite integral."
--------(shiftRange ((Union (Expression R) failed) (Expression R) (Expression R)))---------
--->-->SumProdInt((shiftRange ((Union (Expression R) failed) (Expression R) (Expression R)))): Improper first word in comments: The
"The shifRange function shifts or rearranges summation,{} product and definite integral. shiftRange(expr,{} \\spad{n}),{} expr - summation,{} product or definite integral,{} \\spad{n} - value by which expr should be shifted"
--------(shiftToZero ((Union (Expression R) failed) (Expression R)))---------
--------(reverseOrder ((Union (Expression R) failed) (Expression R)))---------
--------(getCoefficient ((Union (Expression R) failed) (Expression R) (Expression R) (Expression R)))---------
--------(evalOp ((Union (Expression R) failed) (Expression R) (Expression R) (Expression R)))---------
--------(combineSplitArgs ((Union (Expression R) failed) (Expression R)))---------
--->-->SumProdInt((pullConstant ((Union (Expression R) failed) (Expression R)))): Not documented!!!!
--->-->SumProdInt((pushConstant ((Union (Expression R) failed) (Expression R) (Expression R)))): Not documented!!!!
--->-->SumProdInt((reduceQuoProd ((Union (Expression R) failed) (Expression R) (Expression R)))): Not documented!!!!
--->-->SumProdInt((getLowerBound ((Union (Expression R) failed) (Expression R)))): Not documented!!!!
--->-->SumProdInt((getUpperBound ((Union (Expression R) failed) (Expression R)))): Not documented!!!!
--->-->SumProdInt((getOpTerm ((Union (Expression R) failed) (Expression R)))): Not documented!!!!
--->-->SumProdInt((getOpTermAs ((Union (Expression R) failed) (Expression R) (Expression R)))): Not documented!!!!
--->-->SumProdInt((getOpType ((Union (Symbol) failed) (Expression R)))): Not documented!!!!
--->-->SumProdInt((setLowerBound ((Union (Expression R) failed) (Expression R) (Expression R)))): Not documented!!!!
--->-->SumProdInt((setUpperBound ((Union (Expression R) failed) (Expression R) (Expression R)))): Not documented!!!!
--->-->SumProdInt((setOpTerm ((Union (Expression R) failed) (Expression R) (Mapping (Expression R) (Expression R))))): Not documented!!!!
--->-->SumProdInt((setOpType ((Union (Expression R) failed) (Expression R) (Symbol)))): Not documented!!!!
--->-->SumProdInt((splitTimesND ((List (List (Expression R))) (Expression R)))): Not documented!!!!
--->-->SumProdInt((splitFactorOp ((List (List (Expression R))) (List (Expression R)) (Symbol)))): Not documented!!!!
--->-->SumProdInt((makeTimesFactor ((Expression R) (List (Expression R))))): Not documented!!!!
--->-->SumProdInt((invertProd ((Union (Expression R) failed) (Expression R)))): Not documented!!!!
--->-->SumProdInt((nfProd ((Record (: fac (Expression R)) (: nump (List (Expression R))) (: denp (List (Expression R)))) (Expression R)))): Not documented!!!!
--->-->SumProdInt((reduceProductND ((Record (: fac (Expression R)) (: nump (List (Expression R))) (: denp (List (Expression R)))) (Record (: fac (Expression R)) (: nump (List (Expression R))) (: denp (List (Expression R))))))): Not documented!!!!
--->-->SumProdInt((reduceProducts ((Expression R) (Expression R)))): Not documented!!!!
--->-->SumProdInt(): Missing Description
; compiling file "/var/aw/var/LatexWiki/SPI.NRLIB/SPI.lsp" (written 28 NOV 2024 09:29:55 PM):
; wrote /var/aw/var/LatexWiki/SPI.NRLIB/SPI.fasl
; compilation finished in 0:00:00.176
------------------------------------------------------------------------
SumProdInt is now explicitly exposed in frame initial
SumProdInt will be automatically loaded when needed from
/var/aw/var/LatexWiki/SPI.NRLIB/SPI
HYPGEOM abbreviates package HyperGeometric
------------------------------------------------------------------------
initializing NRLIB HYPGEOM for HyperGeometric
compiling into NRLIB HYPGEOM
compiling exported factoredForm : Expression Fraction Integer -> Expression Fraction Integer -> Fraction Factored SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer)
Time: 0.04 SEC.
compiling exported getParameters : Factored SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer) -> Record(ab: List SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer),const: List SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer))
Time: 0.01 SEC.
compiling exported convert : SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer) -> Expression Fraction Integer
Time: 0 SEC.
compiling exported transformIfCan : Fraction Factored SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer) -> Union(Record(ap: List Expression Fraction Integer,bq: List Expression Fraction Integer,fac: Expression Fraction Integer),failed)
Time: 0.04 SEC.
compiling exported pFq : Expression Fraction Integer -> Expression Fraction Integer -> Record(ap: List Expression Fraction Integer,bq: List Expression Fraction Integer,fac: Expression Fraction Integer)
Time: 0 SEC.
compiling exported isPoly? : Expression Fraction Integer -> Expression Fraction Integer -> Boolean
Time: 0 SEC.
compiling exported isQuoRat? : Expression Fraction Integer -> Expression Fraction Integer -> Boolean
Time: 0 SEC.
compiling local buildConst : List SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer) -> Expression Fraction Integer
Time: 0 SEC.
compiling exported pFq00 : Expression Fraction Integer -> Expression Fraction Integer -> Record(ap: List Expression Fraction Integer,bq: List Expression Fraction Integer,fac: Expression Fraction Integer)
Time: 0.01 SEC.
compiling exported pFq0 : Expression Fraction Integer -> Expression Fraction Integer -> Record(ap: List Expression Fraction Integer,bq: List Expression Fraction Integer,fac: Expression Fraction Integer)
Time: 0 SEC.
compiling exported construct : (Record(ap: List Expression Fraction Integer,bq: List Expression Fraction Integer,fac: Expression Fraction Integer),Symbol) -> Expression Fraction Integer
Time: 0 SEC.
compiling exported display : Record(ap: List Expression Fraction Integer,bq: List Expression Fraction Integer,fac: Expression Fraction Integer) -> OutputForm
processing macro definition OF ==> OutputForm
Time: 0 SEC.
compiling exported hyperLookup : Record(ap: List Expression Fraction Integer,bq: List Expression Fraction Integer,fac: Expression Fraction Integer) -> Expression Fraction Integer
Time: 0 SEC.
(time taken in buildFunctor: 0)
;;; *** |HyperGeometric| REDEFINED
;;; *** |HyperGeometric| REDEFINED
Time: 0 SEC.
Warnings:
[1] factoredForm: not known that (AlgebraicallyClosedField) is of mode (CATEGORY domain (IF (has (Fraction (Integer)) (IntegralDomain)) (PROGN (ATTRIBUTE (AlgebraicallyClosedFunctionSpace (Fraction (Integer)))) (ATTRIBUTE (TranscendentalFunctionCategory)) (ATTRIBUTE (CombinatorialOpsCategory)) (ATTRIBUTE (LiouvillianFunctionCategory)) (ATTRIBUTE (SpecialFunctionCategory)) (SIGNATURE reduce (% %)) (SIGNATURE number? ((Boolean) %)) (IF (has (Fraction (Integer)) (PolynomialFactorizationExplicit)) (ATTRIBUTE (PolynomialFactorizationExplicit)) noBranch) (SIGNATURE setSimplifyDenomsFlag ((Boolean) (Boolean))) (SIGNATURE getSimplifyDenomsFlag ((Boolean)))) noBranch))
[2] factoredForm: not known that (TranscendentalFunctionCategory) is of mode (CATEGORY domain (IF (has (Fraction (Integer)) (IntegralDomain)) (PROGN (ATTRIBUTE (AlgebraicallyClosedFunctionSpace (Fraction (Integer)))) (ATTRIBUTE (TranscendentalFunctionCategory)) (ATTRIBUTE (CombinatorialOpsCategory)) (ATTRIBUTE (LiouvillianFunctionCategory)) (ATTRIBUTE (SpecialFunctionCategory)) (SIGNATURE reduce (% %)) (SIGNATURE number? ((Boolean) %)) (IF (has (Fraction (Integer)) (PolynomialFactorizationExplicit)) (ATTRIBUTE (PolynomialFactorizationExplicit)) noBranch) (SIGNATURE setSimplifyDenomsFlag ((Boolean) (Boolean))) (SIGNATURE getSimplifyDenomsFlag ((Boolean)))) noBranch))
[3] getParameters: exponent has no value
[4] getParameters: l1 has no value
[5] transformIfCan: exponent has no value
[6] transformIfCan: B has no value
[7] transformIfCan: A has no value
[8] pFq00: ab has no value
[9] pFq00: const has no value
[10] pFq0: fac has no value
[11] construct: ap has no value
[12] construct: bq has no value
[13] construct: fac has no value
[14] display: ap has no value
[15] display: bq has no value
[16] display: fac has no value
[17] hyperLookup: ap has no value
[18] hyperLookup: bq has no value
[19] hyperLookup: fac has no value
Cumulative Statistics for Constructor HyperGeometric
Time: 0.16 seconds
finalizing NRLIB HYPGEOM
Processing HyperGeometric for Browser database:
--->-->HyperGeometric(constructor): Not documented!!!!
--->-->HyperGeometric((factoredForm ((Fraction (Factored (SparseUnivariatePolynomial (SparseMultivariatePolynomial (Fraction (Integer)) (Kernel (Expression (Fraction (Integer)))))))) (Mapping (Expression (Fraction (Integer))) (Expression (Fraction (Integer))))))): Not documented!!!!
--->-->HyperGeometric((getParameters ((Record (: ab (List (SparseUnivariatePolynomial (SparseMultivariatePolynomial (Fraction (Integer)) (Kernel (Expression (Fraction (Integer)))))))) (: const (List (SparseUnivariatePolynomial (SparseMultivariatePolynomial (Fraction (Integer)) (Kernel (Expression (Fraction (Integer))))))))) (Factored (SparseUnivariatePolynomial (SparseMultivariatePolynomial (Fraction (Integer)) (Kernel (Expression (Fraction (Integer)))))))))): Not documented!!!!
--->-->HyperGeometric((convert ((Expression (Fraction (Integer))) (SparseUnivariatePolynomial (SparseMultivariatePolynomial (Fraction (Integer)) (Kernel (Expression (Fraction (Integer))))))))): Not documented!!!!
--->-->HyperGeometric((isPoly? ((Boolean) (Mapping (Expression (Fraction (Integer))) (Expression (Fraction (Integer))))))): Not documented!!!!
--->-->HyperGeometric((isQuoRat? ((Boolean) (Mapping (Expression (Fraction (Integer))) (Expression (Fraction (Integer))))))): Not documented!!!!
--->-->HyperGeometric((pFq ((Record (: ap (List (Expression (Fraction (Integer))))) (: bq (List (Expression (Fraction (Integer))))) (: fac (Expression (Fraction (Integer))))) (Mapping (Expression (Fraction (Integer))) (Expression (Fraction (Integer))))))): Not documented!!!!
--->-->HyperGeometric((pFq0 ((Record (: ap (List (Expression (Fraction (Integer))))) (: bq (List (Expression (Fraction (Integer))))) (: fac (Expression (Fraction (Integer))))) (Mapping (Expression (Fraction (Integer))) (Expression (Fraction (Integer))))))): Not documented!!!!
--->-->HyperGeometric((pFq00 ((Record (: ap (List (Expression (Fraction (Integer))))) (: bq (List (Expression (Fraction (Integer))))) (: fac (Expression (Fraction (Integer))))) (Mapping (Expression (Fraction (Integer))) (Expression (Fraction (Integer))))))): Not documented!!!!
--->-->HyperGeometric((construct ((Expression (Fraction (Integer))) (Record (: ap (List (Expression (Fraction (Integer))))) (: bq (List (Expression (Fraction (Integer))))) (: fac (Expression (Fraction (Integer))))) (Symbol)))): Not documented!!!!
--->-->HyperGeometric((transformIfCan ((Union (Record (: ap (List (Expression (Fraction (Integer))))) (: bq (List (Expression (Fraction (Integer))))) (: fac (Expression (Fraction (Integer))))) failed) (Fraction (Factored (SparseUnivariatePolynomial (SparseMultivariatePolynomial (Fraction (Integer)) (Kernel (Expression (Fraction (Integer))))))))))): Not documented!!!!
--->-->HyperGeometric((display ((OutputForm) (Record (: ap (List (Expression (Fraction (Integer))))) (: bq (List (Expression (Fraction (Integer))))) (: fac (Expression (Fraction (Integer)))))))): Not documented!!!!
--->-->HyperGeometric((hyperLookup ((Expression (Fraction (Integer))) (Record (: ap (List (Expression (Fraction (Integer))))) (: bq (List (Expression (Fraction (Integer))))) (: fac (Expression (Fraction (Integer)))))))): Not documented!!!!
--->-->HyperGeometric(): Missing Description
; compiling file "/var/aw/var/LatexWiki/HYPGEOM.NRLIB/HYPGEOM.lsp" (written 28 NOV 2024 09:29:55 PM):
; wrote /var/aw/var/LatexWiki/HYPGEOM.NRLIB/HYPGEOM.fasl
; compilation finished in 0:00:00.084
------------------------------------------------------------------------
HyperGeometric is now explicitly exposed in frame initial
HyperGeometric will be automatically loaded when needed from
/var/aw/var/LatexWiki/HYPGEOM.NRLIB/HYPGEOM
fricas
)set output tex off
fricas
)set output algebra on
fricas
)set userlevel development
fricas
)set break resume
fricas
)expose UnittestCount UnittestAux Unittest
UnittestCount is now explicitly exposed in frame initial
UnittestAux is now explicitly exposed in frame initial
Unittest is now explicitly exposed in frame initial
fricas
)expose hypergeom
hypergeom is not a known constructor. You can make the constructor
known to the system by loading it.
R ==> Fraction Integer -- better than Integer for this purpose
Type: Void
fricas
X ==> Expression R
Type: Void
fricas
NNI ==> NonNegativeInteger
Type: Void
fricas
SMP ==> SparseMultivariatePolynomial(R, Kernel X) -- if R has IntegralDomain
Type: Void
fricas
SUP ==> SparseUnivariatePolynomial SMP
Type: Void
fricas
EFSP ==> ElementaryFunctionStructurePackage(R,X)
Type: Void
fricas
FACSUP ==> Factored SUP
Type: Void
fricas
FACREC ==> Record(factor:SUP, exponent:NNI)
Type: Void
fricas
HYPER ==> Record(ap:List X, bq:List X, fac:X)
Type: Void
fricas
--------------------------------------------------------------
-- Examples from https://www2.math.upenn.edu/~wilf/Downld.html
-- A=B, Marko Petkovsek, Herbert S. Wilf, Doron Zeilberger
--------------------------------------------------------------
testsuite "identHG"
All user variables and function definitions have been cleared.
Type: Void
fricas
testcase "pFq0"
All user variables and function definitions have been cleared.
Type: Void
fricas
T1(n) == 1/(2*n-1)/factorial(2*n+1); T1(n)
fricas
Compiling function T1 with type Variable(n) -> Expression(Integer)
1
(2) -------------------
(2 n - 1)(2 n + 1)!
Type: Expression(Integer)
fricas
T2(k) == binomial(n,k)*(-1)^k/factorial(k); T2(k)
fricas
Compiling function T2 with type Variable(k) -> Expression(Integer)
k n
(- 1) ( )
k
(3) ---------
k!
Type: Expression(Integer)
fricas
T3(k) == (-1)^k*(x/2)^(2*k+p)/factorial(k)/factorial(k+p); T3(k)
fricas
Compiling function T3 with type Variable(k) -> Expression(Integer)
k x p + 2 k
(- 1) (-)
2
(4) ----------------
k!(p + k)!
Type: Expression(Integer)
fricas
T4(k) == binomial(n,k)^2*binomial(n+k,k)^2;T4(k)
fricas
Compiling function T4 with type Variable(k) -> Expression(Integer)
2 2
n n + k
(5) ( ) ( )
k k
Type: Expression(Integer)
fricas
T5(n) == binomial(n,k)^2*binomial(n+k,k)^2;T2(n) -- 1-k > 0 => k=0 => not hg
fricas
Compiling function T2 with type Variable(n) -> Expression(Integer)
n
(- 1)
(6) ------
n!
Type: Expression(Integer)
fricas
T6(k) == n^k; T6(k)
fricas
Compiling function T6 with type Variable(k) -> Expression(Integer)
k
(7) n
Type: Expression(Integer)
fricas
T7(k) == factorial(k);T7(k)
fricas
Compiling function T7 with type Variable(k) -> Expression(Integer)
(8) k!
Type: Expression(Integer)
fricas
T8(k) == factorial(2*k+7)/factorial(k-3); T8(k)
fricas
Compiling function T8 with type Variable(k) -> Expression(Integer)
(2 k + 7)!
(9) ----------
(k - 3)!
Type: Expression(Integer)
fricas
T9(k) == (k^2-1)*factorial(3*k+1)/(2*k+7)/factorial(k+3); T9(k)
fricas
Compiling function T9 with type Variable(k) -> Expression(Integer)
2
(k - 1)(3 k + 1)!
(10) ------------------
(2 k + 7)(k + 3)!
Type: Expression(Integer)
fricas
T10(k) == z^k/factorial(k); T10(k)
fricas
Compiling function T10 with type Variable(k) -> Expression(Integer)
k
z
(11) --
k!
Type: Expression(Integer)
fricas
T11(k) == 2^k/factorial(k)^2; T11(k)
fricas
Compiling function T11 with type Variable(k) -> Expression(Integer)
k
2
(12) ---
2
k!
Type: Expression(Integer)
fricas
T12(k) == binomial(n,k); T12(k)
fricas
Compiling function T12 with type Variable(k) -> Expression(Integer)
n
(13) ( )
k
Type: Expression(Integer)
fricas
sym(x,d,n) == if n=0 then 1 else product(x-j*d,j=0..n-1); sym(x,d,n);
fricas
Compiling function sym with type (Variable(x), Variable(d), Variable
(n)) -> Expression(Integer)
Type: Expression(Integer)
fricas
T13(k) == binomial(n,k)*sym(x,d,k)*sym(y,d,n-k); T13(k)
fricas
Compiling function sym with type (Variable(x), Variable(d), Variable
(k)) -> Expression(Integer)
fricas
Compiling function sym with type (Variable(y), Variable(d),
Polynomial(Integer)) -> Expression(Integer)
fricas
Compiling function T13 with type Variable(k) -> Expression(Integer)
k - 1 n - k - 1
n ++-++ ++-++
(15) ( ) | | x - d j | | y - d j
k | | | |
j = 0 j = 0
Type: Expression(Integer)
fricas
testT(T) ==>
output "============================================================"
output("summand:", T(k))
output "------------------------------------------------------------"
-- output("value @0:", T(0))
output("factored form: ", ff:=factoredForm T)
output ""
output("hypergeom rec: ", rr:=pFq0(T))
output ""
output("hypergeom sym: ", display(rr))
output ""
output("reconstruct from rec :", cc:=construct(rr,m)$HYPGEOM)
output ""
output("check if ZERO: ", dd:=reduceProducts(T(m+1)/T(m)) - distribute cc)
output "=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~"
testEquals("normalize dd","0")
Type: Void
fricas
--- macro doesn't work properly in sandbox!?
testT T1
============================================================
fricas
Compiling function T1 with type Variable(k) -> Expression(Integer)
1
summand: -------------------
(2 k - 1)(2 k + 1)!
------------------------------------------------------------
fricas
Compiling function T1 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
1 1
- (? - -)
4 2
factored form: ---------------------
1 3
(? + -)(? + 1)(? + -)
2 2
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
1 1
- (? - -)
4 2
(17) ---------------------
1 3
(? + -)(? + 1)(? + -)
2 2
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
There are 4 exposed and 7 unexposed library operations named display
having 1 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op display
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named
display with argument type(s)
Variable(rr)
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
Continuing to read the file...
testT T2
============================================================
k n
(- 1) ( )
k
summand: ---------
k!
------------------------------------------------------------
fricas
Compiling function T2 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
? - n
factored form: --------
2
(? + 1)
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
? - n
(18) --------
2
(? + 1)
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
There are 4 exposed and 7 unexposed library operations named display
having 1 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op display
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named
display with argument type(s)
Variable(rr)
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
Continuing to read the file...
testT T3
============================================================
k x p + 2 k
(- 1) (-)
2
summand: ----------------
k!(p + k)!
------------------------------------------------------------
fricas
Compiling function T3 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
1 2
- x
4
factored form: - ------------------
(? + 1)(? + p + 1)
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
1 2
- x
4
(19) - ------------------
(? + 1)(? + p + 1)
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
There are 4 exposed and 7 unexposed library operations named display
having 1 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op display
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named
display with argument type(s)
Variable(rr)
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
Continuing to read the file...
testT T4
============================================================
2 2
n n + k
summand: ( ) ( )
k k
------------------------------------------------------------
fricas
Compiling function T4 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
2 2
(? - n) (? + n + 1)
factored form: --------------------
4
(? + 1)
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
2 2
(? - n) (? + n + 1)
(20) --------------------
4
(? + 1)
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
There are 4 exposed and 7 unexposed library operations named display
having 1 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op display
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named
display with argument type(s)
Variable(rr)
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
Continuing to read the file...
testT T5
============================================================
fricas
Compiling function T5 with type Variable(k) -> Expression(Integer)
2
2 k
summand: ( )
k
------------------------------------------------------------
fricas
Compiling function T5 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
2
(? + k + 1)
factored form: ------------
2
(? - k + 1)
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
2
(? + k + 1)
(21) ------------
2
(? - k + 1)
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
There are 4 exposed and 7 unexposed library operations named display
having 1 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op display
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named
display with argument type(s)
Variable(rr)
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
Continuing to read the file...
testT T6
============================================================
k
summand: n
------------------------------------------------------------
fricas
Compiling function T6 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
factored form: n
hypergeom rec: [ap = [1], bq = [], fac = n]
+1+
hypergeom sym: F | | [n]
1 0 +*+
n(m + 1)
reconstruct from rec : --------
m + 1
fricas
Compiling function T6 with type Polynomial(Integer) -> Expression(
Integer)
fricas
Compiling function T6 with type Variable(m) -> Expression(Integer)
check if ZERO: 0
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Type: Void
fricas
ff
(23) n
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
+1+
(24) F | | [n]
1 0 +*+
fricas
testT T7
============================================================
summand: k!
------------------------------------------------------------
fricas
Compiling function T7 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
factored form: ? + 1
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
(25) ? + 1
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
+1+
(26) F | | [n]
1 0 +*+
fricas
testT T8
============================================================
(2 k + 7)!
summand: ----------
(k - 3)!
------------------------------------------------------------
fricas
Compiling function T8 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
9
4 (? + 4)(? + -)
2
factored form: ----------------
? - 2
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
9
4 (? + 4)(? + -)
2
(27) ----------------
? - 2
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
+1+
(28) F | | [n]
1 0 +*+
fricas
testT T9
============================================================
2
(k - 1)(3 k + 1)!
summand: ------------------
(2 k + 7)(k + 3)!
------------------------------------------------------------
fricas
Compiling function T9 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
2 4 7
27 ?(? + -)(? + -)(? + 2)(? + -)
3 3 2
factored form: --------------------------------
9
(? - 1)(? + 4)(? + -)
2
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
2 4 7
27 ?(? + -)(? + -)(? + 2)(? + -)
3 3 2
(29) --------------------------------
9
(? - 1)(? + 4)(? + -)
2
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
+1+
(30) F | | [n]
1 0 +*+
fricas
testT T10
============================================================
k
z
summand: --
k!
------------------------------------------------------------
fricas
Compiling function T10 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
z
factored form: -----
? + 1
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
z
(31) -----
? + 1
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
+1+
(32) F | | [n]
1 0 +*+
fricas
testT T11
============================================================
k
2
summand: ---
2
k!
------------------------------------------------------------
fricas
Compiling function T11 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
2
factored form: --------
2
(? + 1)
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
2
(33) --------
2
(? + 1)
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
+1+
(34) F | | [n]
1 0 +*+
fricas
testT T12
============================================================
n
summand: ( )
k
------------------------------------------------------------
fricas
Compiling function T12 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
? - n
factored form: - -----
? + 1
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
? - n
(35) - -----
? + 1
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
+1+
(36) F | | [n]
1 0 +*+
fricas
testT T13
============================================================
k - 1 n - k - 1
n ++-++ ++-++
summand: ( ) | | x - d j | | y - d j
k | | | |
j = 0 j = 0
------------------------------------------------------------
fricas
Compiling function sym with type (Variable(x), Variable(d),
Expression(Fraction(Integer))) -> Expression(Fraction(Integer))
fricas
Compiling function sym with type (Variable(y), Variable(d),
Expression(Fraction(Integer))) -> Expression(Fraction(Integer))
fricas
Compiling function T13 with type Expression(Fraction(Integer)) ->
Expression(Fraction(Integer))
(? - n)(d ? - x)
factored form: --------------------------
(? + 1)(d ? + y - d n + d)
>> Error detected within library code:
catdef: division by zero
Continuing to read the file...
ff
(? - n)(d ? - x)
(37) --------------------------
(? + 1)(d ? + y - d n + d)
Type: Fraction(Factored(SparseUnivariatePolynomial
?(SparseMultivariatePolynomial
?(Fraction(Integer),
Kernel(Expression(Fraction(Integer)))))))
fricas
display rr
+1+
(38) F | | [n]
1 0 +*+
fricas
-------------
-- Results --
-------------
fricas
)version
"FriCAS 1.3.10 compiled at Wed 10 Jan 02:19:45 CET 2024"
fricas
)lisp (lisp-implementation-type)
Value = "SBCL"
fricas
)lisp (lisp-implementation-version)
Value = "2.2.9.debian"
statistics()
=============================================================================
General WARNINGS:
* do not use ')clear completely' before having used 'statistics()'
It clears the statistics without warning!
* do not forget to pass the arguments of the testXxxx functions as Strings!
Otherwise, the test will fail and statistics() will not notice!
=============================================================================
Testsuite: identHG
failed (total): 0 (1)
=============================================================================
testsuite | testcases: failed (total) | tests: failed (total)
identHG 0 (1) 0 (1)
=============================================================================
File summary.
unexpected failures: 0
expected failures: 0
unexpected passes: 0
total tests: 1
Type: Void