login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit
 Topics FrontPage SandBox HyperG <-- You are here. fricas(1) ->  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 fricasCompiling 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.01 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.03 SEC. compiling local freeOfSPI? : Expression R -> Boolean Time: 0.01 SEC. compiling local checkSPI : Expression R -> Union(Expression R,summation,product,integral) Time: 0.01 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.01 SEC. compiling exported splitArgs : Expression R -> Union(Expression R,failed) Time: 0.01 SEC. compiling exported takeHigh : (Expression R,Integer) -> Union(Expression R,failed) Time: 0.01 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.01 SEC. compiling exported shiftToZero : Expression R -> Union(Expression R,failed) Time: 0.01 SEC. compiling exported reverseOrder : Expression R -> Union(Expression R,failed) Time: 0.01 SEC. compiling exported getCoefficient : (Expression R,Expression R,Expression R) -> Union(Expression R,failed) Time: 0.01 SEC. compiling exported evalOp : (Expression R,Expression R,Expression R) -> Union(Expression R,failed) Time: 0.01 SEC. compiling exported combineSplitArgs : Expression R -> Union(Expression R,failed) Time: 0.01 SEC. compiling exported pullConstant : Expression R -> Union(Expression R,failed) Time: 0.01 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.01 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.01 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.01 SEC. compiling local sceiling : Expression R -> Expression R Time: 0.01 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.01 SEC. compiling exported reduceQuoProd : (Expression R,Expression R) -> Union(Expression R,failed) Time: 0.05 SEC. compiling local expandProductIfCan : Expression R -> Union(Expression R,failed) Time: 0.01 SEC. compiling exported nfProd : Expression R -> Record(fac: Expression R,nump: List Expression R,denp: List Expression R) Time: 0.01 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.04 SEC. compiling exported reduceProducts : Expression R -> Expression R Time: 0.03 SEC. (time taken in buildFunctor: 0) ;;; *** |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.37 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 06 OCT 2022 09:27:40 PM): ; /var/aw/var/LatexWiki/SPI.NRLIB/SPI.fasl written ; compilation finished in 0:00:00.353 ------------------------------------------------------------------------ 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.09 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.02 SEC. compiling exported convert : SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer) -> Expression Fraction Integer Time: 0.02 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.06 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.01 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.03 SEC. compiling local buildConst : List SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer) -> Expression Fraction Integer Time: 0.01 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.05 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.01 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.01 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.02 SEC. compiling exported hyperLookup : Record(ap: List Expression Fraction Integer,bq: List Expression Fraction Integer,fac: Expression Fraction Integer) -> Expression Fraction Integer Time: 0.01 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.34 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 06 OCT 2022 09:27:41 PM): ; /var/aw/var/LatexWiki/HYPGEOM.NRLIB/HYPGEOM.fasl written ; compilation finished in 0:00:00.133 ------------------------------------------------------------------------ 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 fricasX ==> Expression R Type: Void fricasNNI ==> NonNegativeInteger Type: Void fricasSMP ==> SparseMultivariatePolynomial(R, Kernel X) -- if R has IntegralDomain Type: Void fricasSUP ==> SparseUnivariatePolynomial SMP Type: Void fricasEFSP ==> ElementaryFunctionStructurePackage(R,X) Type: Void fricasFACSUP ==> Factored SUP Type: Void fricasFACREC ==> Record(factor:SUP, exponent:NNI) Type: Void fricasHYPER ==> 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 fricastestcase "pFq0" All user variables and function definitions have been cleared. Type: Void fricasT1(n) == 1/(2*n-1)/factorial(2*n+1); T1(n) fricasCompiling function T1 with type Variable(n) -> Expression(Integer) 1 (2) ------------------- (2 n - 1)(2 n + 1)! Type: Expression(Integer) fricasT2(k) == binomial(n,k)*(-1)^k/factorial(k); T2(k) fricasCompiling function T2 with type Variable(k) -> Expression(Integer) k n (- 1) ( ) k (3) --------- k! Type: Expression(Integer) fricasT3(k) == (-1)^k*(x/2)^(2*k+p)/factorial(k)/factorial(k+p); T3(k) fricasCompiling function T3 with type Variable(k) -> Expression(Integer) k x p + 2 k (- 1) (-) 2 (4) ---------------- k!(p + k)! Type: Expression(Integer) fricasT4(k) == binomial(n,k)^2*binomial(n+k,k)^2;T4(k) fricasCompiling function T4 with type Variable(k) -> Expression(Integer) 2 2 n n + k (5) ( ) ( ) k k Type: Expression(Integer) fricasT5(n) == binomial(n,k)^2*binomial(n+k,k)^2;T2(n) -- 1-k > 0 => k=0 => not hg fricasCompiling function T2 with type Variable(n) -> Expression(Integer) n (- 1) (6) ------ n! Type: Expression(Integer) fricasT6(k) == n^k; T6(k) fricasCompiling function T6 with type Variable(k) -> Expression(Integer) k (7) n Type: Expression(Integer) fricasT7(k) == factorial(k);T7(k) fricasCompiling function T7 with type Variable(k) -> Expression(Integer) (8) k! Type: Expression(Integer) fricasT8(k) == factorial(2*k+7)/factorial(k-3); T8(k) fricasCompiling function T8 with type Variable(k) -> Expression(Integer) (2 k + 7)! (9) ---------- (k - 3)! Type: Expression(Integer) fricasT9(k) == (k^2-1)*factorial(3*k+1)/(2*k+7)/factorial(k+3); T9(k) fricasCompiling function T9 with type Variable(k) -> Expression(Integer) 2 (k - 1)(3 k + 1)! (10) ------------------ (2 k + 7)(k + 3)! Type: Expression(Integer) fricasT10(k) == z^k/factorial(k); T10(k) fricasCompiling function T10 with type Variable(k) -> Expression(Integer) k z (11) -- k! Type: Expression(Integer) fricasT11(k) == 2^k/factorial(k)^2; T11(k) fricasCompiling function T11 with type Variable(k) -> Expression(Integer) k 2 (12) --- 2 k! Type: Expression(Integer) fricasT12(k) == binomial(n,k); T12(k) fricasCompiling function T12 with type Variable(k) -> Expression(Integer) n (13) ( ) k Type: Expression(Integer) fricassym(x,d,n) == if n=0 then 1 else product(x-j*d,j=0..n-1); sym(x,d,n); fricasCompiling function sym with type (Variable(x), Variable(d), Variable (n)) -> Expression(Integer) Type: Expression(Integer) fricasT13(k) == binomial(n,k)*sym(x,d,k)*sym(y,d,n-k); T13(k) fricasCompiling function sym with type (Variable(x), Variable(d), Variable (k)) -> Expression(Integer) fricasCompiling function sym with type (Variable(y), Variable(d), Polynomial(Integer)) -> Expression(Integer) fricasCompiling 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) fricastestT(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 ============================================================ fricasCompiling function T1 with type Variable(k) -> Expression(Integer) 1 summand: ------------------- (2 k - 1)(2 k + 1)! ------------------------------------------------------------ fricasCompiling function T1 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) 1 1 - (? - -) 4 2 factored form: --------------------- 1 3 (? + -)(? + 1)(? + -) 2 2 1 3 1 1 hypergeom rec: [ap = [- -], bq = [-, -], fac = -] 2 2 2 4 + 1 + |- - *| | 2 | 1 hypergeom sym: F | | [-] 1 2 | 3 1| 4 | - -| + 2 2+ 1 1 - (m - -) 4 2 reconstruct from rec : --------------------- 1 3 (m + 1)(m + -)(m + -) 2 2 fricasCompiling function T1 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T1 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff 1 1 - (? - -) 4 2 (18) --------------------- 1 3 (? + -)(? + 1)(? + -) 2 2 Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr + 1 + |- - *| | 2 | 1 (19) F | | [-] 1 2 | 3 1| 4 | - -| + 2 2+ Type: OutputForm? fricastestT T2 ============================================================ k n (- 1) ( ) k summand: --------- k! ------------------------------------------------------------ fricasCompiling function T2 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) ? - n factored form: -------- 2 (? + 1) hypergeom rec: [ap = [- n], bq = [1], fac = 1] +- n+ hypergeom sym: F | | [1] 1 1 + 1 + (- n + m) reconstruct from rec : -------------- (m + 1)(m + 1) fricasCompiling function T2 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T2 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff ? - n (21) -------- 2 (? + 1) Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr +- n+ (22) F | | [1] 1 1 + 1 + Type: OutputForm? fricastestT T3 ============================================================ k x p + 2 k (- 1) (-) 2 summand: ---------------- k!(p + k)! ------------------------------------------------------------ fricasCompiling function T3 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) 1 2 - x 4 factored form: - ------------------ (? + 1)(? + p + 1) 1 2 hypergeom rec: [ap = [], bq = [p + 1], fac = - - x ] 4 + * + 1 2 hypergeom sym: F | | [- - x ] 0 1 +p + 1+ 4 1 2 - x 4 reconstruct from rec : - ------------------ (m + 1)(p + m + 1) fricasCompiling function T3 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T3 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff 1 2 - x 4 (24) - ------------------ (? + 1)(? + p + 1) Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr + * + 1 2 (25) F | | [- - x ] 0 1 +p + 1+ 4 Type: OutputForm? fricastestT T4 ============================================================ 2 2 n n + k summand: ( ) ( ) k k ------------------------------------------------------------ fricasCompiling function T4 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) 2 2 (? - n) (? + n + 1) factored form: -------------------- 4 (? + 1) hypergeom rec: [ap = [n + 1, n + 1, - n, - n], bq = [1, 1, 1], fac = 1] +n + 1 n + 1 - n - n+ hypergeom sym: F | | [1] 4 3 + 1 1 1 * + 2 2 (- n + m) (n + m + 1) reconstruct from rec : ---------------------- 3 (m + 1)(m + 1) fricasCompiling function T4 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T4 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff 2 2 (? - n) (? + n + 1) (27) -------------------- 4 (? + 1) Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr +n + 1 n + 1 - n - n+ (28) F | | [1] 4 3 + 1 1 1 * + Type: OutputForm? fricastestT T5 ============================================================ fricasCompiling function T5 with type Variable(k) -> Expression(Integer) 2 2 k summand: ( ) k ------------------------------------------------------------ fricasCompiling function T5 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) 2 (? + k + 1) factored form: ------------ 2 (? - k + 1) hypergeom rec: [ap = [1, k + 1, k + 1], bq = [- k + 1, - k + 1], fac = 1] + 1 k + 1 k + 1+ hypergeom sym: F | | [1] 3 2 +- k + 1 - k + 1 * + 2 (m + 1)(m + k + 1) reconstruct from rec : ------------------- 2 (m + 1)(m - k + 1) fricasCompiling function T5 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T5 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff 2 (? + k + 1) (30) ------------ 2 (? - k + 1) Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr + 1 k + 1 k + 1+ (31) F | | [1] 3 2 +- k + 1 - k + 1 * + Type: OutputForm? fricastestT T6 ============================================================ k summand: n ------------------------------------------------------------ fricasCompiling 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 fricasCompiling function T6 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T6 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff (33) n Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr +1+ (34) F | | [n] 1 0 +*+ Type: OutputForm? fricastestT T7 ============================================================ summand: k! ------------------------------------------------------------ fricasCompiling function T7 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) factored form: ? + 1 hypergeom rec: [ap = [1, 1], bq = [], fac = 1] +1 1+ hypergeom sym: F | | [1] 2 0 +* *+ 2 (m + 1) reconstruct from rec : -------- m + 1 fricasCompiling function T7 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T7 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff (36) ? + 1 Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr +1 1+ (37) F | | [1] 2 0 +* *+ Type: OutputForm? fricastestT T8 ============================================================ (2 k + 7)! summand: ---------- (k - 3)! ------------------------------------------------------------ fricasCompiling function T8 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) 9 4 (? + 4)(? + -) 2 factored form: ---------------- ? - 2 9 hypergeom rec: [ap = [1, -, 4], bq = [- 2], fac = 4] 2 + 9 + | 1 - 4| hypergeom sym: F | 2 | [4] 3 1 | | +- 2 * *+ 9 4 (m + 1)(m + 4)(m + -) 2 reconstruct from rec : ----------------------- (m + 1)(m - 2) fricasCompiling function T8 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T8 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff 9 4 (? + 4)(? + -) 2 (39) ---------------- ? - 2 Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr + 9 + | 1 - 4| (40) F | 2 | [4] 3 1 | | +- 2 * *+ Type: OutputForm? fricastestT T9 ============================================================ 2 (k - 1)(3 k + 1)! summand: ------------------ (2 k + 7)(k + 3)! ------------------------------------------------------------ fricasCompiling function T9 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) 2 4 7 27 ?(? + -)(? + -)(? + 2)(? + -) 3 3 2 factored form: -------------------------------- 9 (? - 1)(? + 4)(? + -) 2 7 4 2 9 hypergeom rec: [ap = [1, -, 2, -, -, 0], bq = [-, 4, - 1], fac = 27] 2 3 3 2 + 7 4 2 + |1 - 2 - - 0| | 2 3 3 | hypergeom sym: F | | [27] 6 3 |9 | |- 4 - 1 * * *| +2 + 2 4 7 27 (m)(m + -)(m + 1)(m + -)(m + 2)(m + -) 3 3 2 reconstruct from rec : ----------------------------------------- 9 (m + 1)(m - 1)(m + 4)(m + -) 2 fricasCompiling function T9 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T9 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff 2 4 7 27 ?(? + -)(? + -)(? + 2)(? + -) 3 3 2 (42) -------------------------------- 9 (? - 1)(? + 4)(? + -) 2 Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr + 7 4 2 + |1 - 2 - - 0| | 2 3 3 | (43) F | | [27] 6 3 |9 | |- 4 - 1 * * *| +2 + Type: OutputForm? fricastestT T10 ============================================================ k z summand: -- k! ------------------------------------------------------------ fricasCompiling function T10 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) z factored form: ----- ? + 1 hypergeom rec: [ap = [], bq = [], fac = z] ++ hypergeom sym: F || [z] 0 0 ++ z reconstruct from rec : ----- m + 1 fricasCompiling function T10 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T10 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff z (45) ----- ? + 1 Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr ++ (46) F || [z] 0 0 ++ Type: OutputForm? fricastestT T11 ============================================================ k 2 summand: --- 2 k! ------------------------------------------------------------ fricasCompiling function T11 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) 2 factored form: -------- 2 (? + 1) hypergeom rec: [ap = [], bq = [1], fac = 2] +*+ hypergeom sym: F | | [2] 0 1 +1+ 2 reconstruct from rec : -------------- (m + 1)(m + 1) fricasCompiling function T11 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T11 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff 2 (48) -------- 2 (? + 1) Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr +*+ (49) F | | [2] 0 1 +1+ Type: OutputForm? fricastestT T12 ============================================================ n summand: ( ) k ------------------------------------------------------------ fricasCompiling function T12 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) ? - n factored form: - ----- ? + 1 hypergeom rec: [ap = [- n], bq = [], fac = - 1] +- n+ hypergeom sym: F | | [- 1] 1 0 + * + (- n + m) reconstruct from rec : - --------- m + 1 fricasCompiling function T12 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function T12 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff ? - n (51) - ----- ? + 1 Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr +- n+ (52) F | | [- 1] 1 0 + * + Type: OutputForm? fricastestT T13 ============================================================ k - 1 n - k - 1 n ++-++ ++-++ summand: ( ) | | x - d j | | y - d j k | | | | j = 0 j = 0 ------------------------------------------------------------ fricasCompiling function sym with type (Variable(x), Variable(d), Expression(Fraction(Integer))) -> Expression(Fraction(Integer)) fricasCompiling function sym with type (Variable(y), Variable(d), Expression(Fraction(Integer))) -> Expression(Fraction(Integer)) fricasCompiling function T13 with type Expression(Fraction(Integer)) -> Expression(Fraction(Integer)) (? - n)(d ? - x) factored form: -------------------------- (? + 1)(d ? + y - d n + d) x y - d n + d hypergeom rec: [ap = [- -, - n], bq = [-----------], fac = 1] d d + x + | - - - n| | d | hypergeom sym: F | | [1] 2 1 |y - d n + d | |----------- * | + d + - x + d m (---------)(- n + m) d reconstruct from rec : -------------------------- y - d n + d m + d (m + 1)(-----------------) d fricasCompiling function sym with type (Variable(x), Variable(d), Polynomial(Integer)) -> Expression(Integer) fricasCompiling function T13 with type Polynomial(Integer) -> Expression( Integer) fricasCompiling function sym with type (Variable(x), Variable(d), Variable (m)) -> Expression(Integer) fricasCompiling function T13 with type Variable(m) -> Expression(Integer) check if ZERO: 0 =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Type: Void fricasff (? - n)(d ? - x) (54) -------------------------- (? + 1)(d ? + y - d n + d) Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))) fricasdisplay rr + x + | - - - n| | d | (55) F | | [1] 2 1 |y - d n + d | |----------- * | + d + Type: OutputForm? fricas------------- -- Results -- ------------- fricas)version Value = "FriCAS 1.3.8 compiled at Thu Jun 23 16:21:37 UTC 2022" fricas)lisp (lisp-implementation-type) Value = "SBCL" fricas)lisp (lisp-implementation-version) Value = "1.1.1" 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! * testLibraryError does not prevent FriCAS from aborting the current block. Thus, if a block contains other test functions, they will not be executed and statistics() will not notice! ============================================================================= Testsuite: identHG failed (total): 0 (1) ============================================================================= testsuite | testcases: failed (total) | tests: failed (total) identHG 0 (1) 0 (13) ============================================================================= File summary. unexpected failures: 0 expected failures: 0 unexpected passes: 0 total tests: 13 Type: Void

 Subject:   Be Bold !! ( 14 subscribers )