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

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 +*+
Type: OutputForm?
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 +*+
Type: OutputForm?
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 +*+
Type: OutputForm?
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 +*+
Type: OutputForm?
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 +*+
Type: OutputForm?
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 +*+
Type: OutputForm?
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 +*+
Type: OutputForm?
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 +*+
Type: OutputForm?
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




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