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

Edit detail for HyperG revision 1 of 2

1 2
Editor: pagani
Time: 2022/09/14 20:05:57 GMT+0
Note:

changed:
-
\begin{spad}
)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
    construct: (HYPER,Symbol) -> X
    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)
      nq:=normalize(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
      

    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
          q1:=p-qm::SUP
          for i in 1..s.exponent repeat
            l1:=cons(q1,l1)
        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
      
    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

    pFq0(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
 
    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

\end{spad}
\begin{axiom}
)set output algebra on
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)


T1(n) == 1/(2*n-1)/factorial(2*n+1)
T2(k) == binomial(n,k)*(-1)^k/factorial(k)
T3(k) == (-1)^k*(x/2)^(2*k+p)/factorial(k)/factorial(k+p)
T4(k) == binomial(n,k)^2*binomial(n+k,k)^2 
T5(n) == binomial(n,k)^2*binomial(n+k,k)^2  
T6(k) == n^k
T7(k) == factorial(k)
T8(k) == factorial(2*k+7)/factorial(k-3)
T9(k) == (k^2-1)*factorial(3*k+1)/(2*k+7)/factorial(k+3)
T10(k) == z^k/factorial(k)
T11(k) == 2^k/factorial(k)^2
T12(k) == binomial(n,k)

ff1:=factoredForm(T1)$HYPGEOM
ff2:=factoredForm(T2)$HYPGEOM
ff3:=factoredForm(T3)$HYPGEOM
ff4:=factoredForm(T4)$HYPGEOM
ff5:=factoredForm(T5)$HYPGEOM
ff6:=factoredForm(T6)$HYPGEOM
ff7:=factoredForm(T7)$HYPGEOM
ff8:=factoredForm(T8)$HYPGEOM
ff9:=factoredForm(T9)$HYPGEOM
ff10:=factoredForm(T10)$HYPGEOM
ff11:=factoredForm(T11)$HYPGEOM
ff12:=factoredForm(T12)$HYPGEOM


for v in [ff1,ff2,ff3,ff4,ff5,ff6,ff7,ff8,ff9,ff10,ff11,ff12] repeat
  output getParameters(numer v)
  output getParameters(denom v)
  

gp2:=getParameters(numer ff2).ab
gp3:=getParameters(denom ff3).ab

----
mp3:=multivariate(gp3.1,tower(new()$Symbol).1)$SMP::X
mp2:=multivariate(gp2.1,tower(new()$Symbol).1)$SMP::X
--- List(Expression(Fraction(Integer)))
[convert(v) for v in gp3]
[convert(v) for v in gp2]

-- near the goal ;)
pFq(T1)
pFq(T2)
pFq(T3)
pFq(T4)
pFq(T5)
pFq(T6)
pFq(T7)
pFq(T8)
pFq(T9)
pFq(k+->sin(k))

--------------


-- simple test
isQuoRat?(k+->sin k)
isQuoRat?(k+->sin asin k^4)
isQuoRat?(k+->log exp  k^4)
isQuoRat?(k+->exp  k^4)
isQuoRat?(k+->x^k) 

un:=unit numer ff1 
ud:=unit denom ff1
unud:=un/ud

pFq0(T6) 
T3(k)
T3C:=(k+x)^2/((k+p+1)*(k+1))
pFq0(T3)
ff3 
--
pFq0(T10) 
pFq0(T11) 

hy:=pFq0(T3)
hyc:=construct(hy,z)$HYPGEOM 
ff3
display(hy)$HYPGEOM
display(pFq0(T1))$HYPGEOM
display(pFq0(T2))$HYPGEOM
display(pFq0(T3))$HYPGEOM
display(pFq0(T4))$HYPGEOM
hyperLookup(pFq0 T12)


Q:=construct(pFq0(T1),Z)$HYPGEOM

T1(Z+1)/T1(Z)- distribute Q
normalize $

display(pFq0(T1))$HYPGEOM
display(pFq0(T2))$HYPGEOM
display(pFq0(T3))$HYPGEOM
display(pFq0(T4))$HYPGEOM
display(pFq0(T5))$HYPGEOM
display(pFq0(T6))$HYPGEOM
display(pFq0(T7))$HYPGEOM
display(pFq0(T8))$HYPGEOM
display(pFq0(T9))$HYPGEOM
display(pFq0(T10))$HYPGEOM
display(pFq0(T11))$HYPGEOM
display(pFq0(T12))$HYPGEOM


S:=sum(binomial(n,k),k=0..n)
hyperLookup(pFq0 T12)

\end{axiom}


fricas
(1) -> <spad>
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 construct: (HYPER,Symbol) -> X 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) nq:=normalize(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
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 q1:=p-qm::SUP for i in 1..s.exponent repeat l1:=cons(q1,l1) 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
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
pFq0(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
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/5800620949499819823-25px001.spad
      using old system compiler.
   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.13 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.03 SEC.
compiling exported convert : SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer) -> Expression Fraction Integer Time: 0.02 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.01 SEC.
compiling exported isQuoRat? : Expression Fraction Integer -> Expression Fraction Integer -> Boolean Time: 0.04 SEC.
compiling local buildConst : List SparseUnivariatePolynomial SparseMultivariatePolynomial(Fraction Integer,Kernel Expression Fraction Integer) -> 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.06 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.02 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.01 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] getParameters: l2 has no value [6] pFq0: ab has no value [7] pFq0: const has no value [8] construct: ap has no value [9] construct: bq has no value [10] construct: fac has no value [11] display: ap has no value [12] display: bq has no value [13] display: fac has no value [14] hyperLookup: ap has no value [15] hyperLookup: bq has no value [16] hyperLookup: fac has no value
Cumulative Statistics for Constructor HyperGeometric Time: 0.36 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((construct ((Expression (Fraction (Integer))) (Record (: ap (List (Expression (Fraction (Integer))))) (: bq (List (Expression (Fraction (Integer))))) (: fac (Expression (Fraction (Integer))))) (Symbol)))): 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 14 SEP 2022 08:05:57 PM):
; /var/aw/var/LatexWiki/HYPGEOM.NRLIB/HYPGEOM.fasl written ; compilation finished in 0:00:00.118 ------------------------------------------------------------------------ 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 algebra on
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
T1(n) == 1/(2*n-1)/factorial(2*n+1)
Type: Void
fricas
T2(k) == binomial(n,k)*(-1)^k/factorial(k)
Type: Void
fricas
T3(k) == (-1)^k*(x/2)^(2*k+p)/factorial(k)/factorial(k+p)
Type: Void
fricas
T4(k) == binomial(n,k)^2*binomial(n+k,k)^2
Type: Void
fricas
T5(n) == binomial(n,k)^2*binomial(n+k,k)^2
Type: Void
fricas
T6(k) == n^k
Type: Void
fricas
T7(k) == factorial(k)
Type: Void
fricas
T8(k) == factorial(2*k+7)/factorial(k-3)
Type: Void
fricas
T9(k) == (k^2-1)*factorial(3*k+1)/(2*k+7)/factorial(k+3)
Type: Void
fricas
T10(k) == z^k/factorial(k)
Type: Void
fricas
T11(k) == 2^k/factorial(k)^2
Type: Void
fricas
T12(k) == binomial(n,k)
Type: Void
fricas
ff1:=factoredForm(T1)$HYPGEOM
fricas
Compiling function T1 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
1 1 - (? - -) 4 2 (22) --------------------- 1 3 (? + -)(? + 1)(? + -) 2 2

\label{eq1}\frac{{\frac{1}{4}}\ {\left(? -{\frac{1}{2}}\right)}}{{\left(? +{\frac{1}{2}}\right)}\ {\left(? + 1 \right)}\ {\left(? +{\frac{3}{2}}\right)}}(1)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff2:=factoredForm(T2)$HYPGEOM
fricas
Compiling function T2 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
? - n (23) -------- 2 (? + 1)

\label{eq2}\frac{? - n}{{\left(? + 1 \right)}^{2}}(2)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff3:=factoredForm(T3)$HYPGEOM
fricas
Compiling function T3 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
1 2 - x 4 (24) - ------------------ (? + 1)(? + p + 1)

\label{eq3}-{\frac{{\frac{1}{4}}\ {{x}^{2}}}{{\left(? + 1 \right)}\ {\left(? + p + 1 \right)}}}(3)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff4:=factoredForm(T4)$HYPGEOM
fricas
Compiling function T4 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
2 2 (? - n) (? + n + 1) (25) -------------------- 4 (? + 1)

\label{eq4}\frac{{{\left(? - n \right)}^{2}}\ {{\left(? + n + 1 \right)}^{2}}}{{\left(? + 1 \right)}^{4}}(4)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff5:=factoredForm(T5)$HYPGEOM
fricas
Compiling function T5 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
2 (? + k + 1) (26) ------------ 2 (? - k + 1)

\label{eq5}\frac{{\left(? + k + 1 \right)}^{2}}{{\left(? - k + 1 \right)}^{2}}(5)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff6:=factoredForm(T6)$HYPGEOM
fricas
Compiling function T6 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
(27) n

\label{eq6}n(6)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff7:=factoredForm(T7)$HYPGEOM
fricas
Compiling function T7 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
(28) ? + 1

\label{eq7}? + 1(7)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff8:=factoredForm(T8)$HYPGEOM
fricas
Compiling function T8 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
9 4 (? + 4)(? + -) 2 (29) ---------------- ? - 2

\label{eq8}\frac{4 \ {\left(? + 4 \right)}\ {\left(? +{\frac{9}{2}}\right)}}{? - 2}(8)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff9:=factoredForm(T9)$HYPGEOM
fricas
Compiling function T9 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
2 4 7 27 ?(? + -)(? + -)(? + 2)(? + -) 3 3 2 (30) -------------------------------- 9 (? - 1)(? + 4)(? + -) 2

\label{eq9}\frac{{27}\  ? \ {\left(? +{\frac{2}{3}}\right)}\ {\left(? +{\frac{4}{3}}\right)}\ {\left(? + 2 \right)}\ {\left(? +{\frac{7}{2}}\right)}}{{\left(? - 1 \right)}\ {\left(? + 4 \right)}\ {\left(? +{\frac{9}{2}}\right)}}(9)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff10:=factoredForm(T10)$HYPGEOM
fricas
Compiling function T10 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
z (31) ----- ? + 1

\label{eq10}\frac{z}{? + 1}(10)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff11:=factoredForm(T11)$HYPGEOM
fricas
Compiling function T11 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
2 (32) -------- 2 (? + 1)

\label{eq11}\frac{2}{{\left(? + 1 \right)}^{2}}(11)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
ff12:=factoredForm(T12)$HYPGEOM
fricas
Compiling function T12 with type Expression(Fraction(Integer)) -> 
      Expression(Fraction(Integer)) 
? - n (33) - ----- ? + 1

\label{eq12}-{\frac{? - n}{? + 1}}(12)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
for v in [ff1,ff2,ff3,ff4,ff5,ff6,ff7,ff8,ff9,ff10,ff11,ff12] repeat
  output getParameters(numer v)
  output getParameters(denom v)
1 [ab = [- -], const = []] 2 3 1 [ab = [-, 1, -], const = []] 2 2 [ab = [- n], const = []] [ab = [1, 1], const = []] [ab = [], const = [x, x]] [ab = [p + 1, 1], const = []] [ab = [n + 1, n + 1, - n, - n], const = []] [ab = [1, 1, 1, 1], const = []] [ab = [k + 1, k + 1], const = []] [ab = [- k + 1, - k + 1], const = []] [ab = [], const = [n]] [ab = [], const = []] [ab = [1], const = []] [ab = [], const = []] 9 [ab = [-, 4], const = []] 2 [ab = [- 2], const = []] 7 4 2 [ab = [-, 2, -, -, 0], const = []] 2 3 3 9 [ab = [-, 4, - 1], const = []] 2 [ab = [], const = [z]] [ab = [1], const = []] [ab = [], const = []] [ab = [1, 1], const = []] [ab = [- n], const = []] [ab = [1], const = []]
Type: Void
fricas
gp2:=getParameters(numer ff2).ab
(35) [- n]

\label{eq13}\left[ - n \right](13)
Type: List(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))
fricas
gp3:=getParameters(denom ff3).ab
(36) [p + 1, 1]

\label{eq14}\left[{p + 1}, \: 1 \right](14)
Type: List(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))
fricas
----
mp3:=multivariate(gp3.1,tower(new()$Symbol).1)$SMP::X
(37) p + 1

\label{eq15}p + 1(15)
Type: Expression(Fraction(Integer))
fricas
mp2:=multivariate(gp2.1,tower(new()$Symbol).1)$SMP::X
(38) - n

\label{eq16}- n(16)
Type: Expression(Fraction(Integer))
fricas
--- List(Expression(Fraction(Integer)))
[convert(v) for v in gp3]
(39) [p + 1, 1]

\label{eq17}\left[{p + 1}, \: 1 \right](17)
Type: List(Expression(Fraction(Integer)))
fricas
[convert(v) for v in gp2]
(40) [- n]

\label{eq18}\left[ - n \right](18)
Type: List(Expression(Fraction(Integer)))
fricas
-- near the goal ;)
pFq(T1)
1 3 1 (41) [ap = [- -], bq = [-, 1, -], fac = 1] 2 2 2

\label{eq19}\left[{ap ={\left[ -{\frac{1}{2}}\right]}}, \:{bq ={\left[{\frac{3}{2}}, \: 1, \:{\frac{1}{2}}\right]}}, \:{fac = 1}\right](19)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(T2)
(42) [ap = [- n], bq = [1, 1], fac = 1]

\label{eq20}\left[{ap ={\left[ - n \right]}}, \:{bq ={\left[ 1, \: 1 \right]}}, \:{fac = 1}\right](20)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(T3)
(43) [ap = [], bq = [p + 1, 1], fac = 1]

\label{eq21}\left[{ap ={\left[ \right]}}, \:{bq ={\left[{p + 1}, \: 1 \right]}}, \:{fac = 1}\right](21)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(T4)
(44) [ap = [n + 1, n + 1, - n, - n], bq = [1, 1, 1, 1], fac = 1]

\label{eq22}\left[{ap ={\left[{n + 1}, \:{n + 1}, \: - n , \: - n \right]}}, \:{bq ={\left[ 1, \: 1, \: 1, \: 1 \right]}}, \:{fac = 1}\right](22)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(T5)
(45) [ap = [k + 1, k + 1], bq = [- k + 1, - k + 1], fac = 1]

\label{eq23}\left[{ap ={\left[{k + 1}, \:{k + 1}\right]}}, \:{bq ={\left[{- k + 1}, \:{- k + 1}\right]}}, \:{fac = 1}\right](23)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(T6)
(46) [ap = [], bq = [], fac = 1]

\label{eq24}\left[{ap ={\left[ \right]}}, \:{bq ={\left[ \right]}}, \:{fac = 1}\right](24)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(T7)
(47) [ap = [1], bq = [], fac = 1]

\label{eq25}\left[{ap ={\left[ 1 \right]}}, \:{bq ={\left[ \right]}}, \:{fac = 1}\right](25)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(T8)
9 (48) [ap = [-, 4], bq = [- 2], fac = 1] 2

\label{eq26}\left[{ap ={\left[{\frac{9}{2}}, \: 4 \right]}}, \:{bq ={\left[ - 2 \right]}}, \:{fac = 1}\right](26)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(T9)
7 4 2 9 (49) [ap = [-, 2, -, -, 0], bq = [-, 4, - 1], fac = 1] 2 3 3 2

\label{eq27}\begin{array}{@{}l}
\displaystyle
\left[{ap ={\left[{\frac{7}{2}}, \: 2, \:{\frac{4}{3}}, \:{\frac{2}{3}}, \: 0 \right]}}, \:{bq ={\left[{\frac{9}{2}}, \: 4, \: - 1 \right]}}, \: \right.
\
\
\displaystyle
\left.{fac = 1}\right] 
(27)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq(k+->sin(k))
(50) [ap = [], bq = [], fac = 1]

\label{eq28}\left[{ap ={\left[ \right]}}, \:{bq ={\left[ \right]}}, \:{fac = 1}\right](28)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
--------------
-- simple test isQuoRat?(k+->sin k)
(51) false

\label{eq29} \mbox{\rm false} (29)
Type: Boolean
fricas
isQuoRat?(k+->sin asin k^4)
(52) true

\label{eq30} \mbox{\rm true} (30)
Type: Boolean
fricas
isQuoRat?(k+->log exp  k^4)
(53) true

\label{eq31} \mbox{\rm true} (31)
Type: Boolean
fricas
isQuoRat?(k+->exp  k^4)
(54) true

\label{eq32} \mbox{\rm true} (32)
Type: Boolean
fricas
isQuoRat?(k+->x^k) 
(55) true

\label{eq33} \mbox{\rm true} (33)
Type: Boolean
fricas
un:=unit numer ff1 
1 (56) - 4

\label{eq34}\frac{1}{4}(34)
Type: SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))
fricas
ud:=unit denom ff1
(57) 1

\label{eq35}1(35)
Type: SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))
fricas
unud:=un/ud
1 (58) - 4

\label{eq36}\frac{1}{4}(36)
Type: Fraction(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer))))))
fricas
pFq0(T6) 
(59) [ap = [1], bq = [], fac = n]

\label{eq37}\left[{ap ={\left[ 1 \right]}}, \:{bq ={\left[ \right]}}, \:{fac = n}\right](37)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
T3(k)
fricas
Compiling function T3 with type Variable(k) -> Expression(Integer) 
k x p + 2 k (- 1) (-) 2 (60) ---------------- k!(p + k)!

\label{eq38}\frac{{{\left(- 1 \right)}^{k}}\ {{\frac{x}{2}}^{p +{2 \  k}}}}{{k !}\ {{\left(p + k \right)}!}}(38)
Type: Expression(Integer)
fricas
T3C:=(k+x)^2/((k+p+1)*(k+1))
2 2 x + 2 k x + k (61) ----------------------- 2 (k + 1)p + k + 2 k + 1

\label{eq39}\frac{{{x}^{2}}+{2 \  k \  x}+{{k}^{2}}}{{{\left(k + 1 \right)}\  p}+{{k}^{2}}+{2 \  k}+ 1}(39)
Type: Fraction(Polynomial(Integer))
fricas
pFq0(T3)
1 2 (62) [ap = [], bq = [p + 1], fac = - - x ] 4

\label{eq40}\left[{ap ={\left[ \right]}}, \:{bq ={\left[{p + 1}\right]}}, \:{fac = -{{\frac{1}{4}}\ {{x}^{2}}}}\right](40)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
ff3 
1 2 - x 4 (63) - ------------------ (? + 1)(? + p + 1)

\label{eq41}-{\frac{{\frac{1}{4}}\ {{x}^{2}}}{{\left(? + 1 \right)}\ {\left(? + p + 1 \right)}}}(41)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
--
pFq0(T10) 
(64) [ap = [], bq = [], fac = z]

\label{eq42}\left[{ap ={\left[ \right]}}, \:{bq ={\left[ \right]}}, \:{fac = z}\right](42)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
pFq0(T11) 
(65) [ap = [], bq = [1], fac = 2]

\label{eq43}\left[{ap ={\left[ \right]}}, \:{bq ={\left[ 1 \right]}}, \:{fac = 2}\right](43)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
hy:=pFq0(T3)
1 2 (66) [ap = [], bq = [p + 1], fac = - - x ] 4

\label{eq44}\left[{ap ={\left[ \right]}}, \:{bq ={\left[{p + 1}\right]}}, \:{fac = -{{\frac{1}{4}}\ {{x}^{2}}}}\right](44)
Type: Record(ap: List(Expression(Fraction(Integer))),bq: List(Expression(Fraction(Integer))),fac: Expression(Fraction(Integer)))
fricas
hyc:=construct(hy,z)$HYPGEOM 
1 2 - x 4 (67) - ------------------ (z + 1)(z + p + 1)

\label{eq45}-{\frac{{\frac{1}{4}}\ {{x}^{2}}}{{\left(z + 1 \right)}\ {\left(z + p + 1 \right)}}}(45)
Type: Expression(Fraction(Integer))
fricas
ff3
1 2 - x 4 (68) - ------------------ (? + 1)(? + p + 1)

\label{eq46}-{\frac{{\frac{1}{4}}\ {{x}^{2}}}{{\left(? + 1 \right)}\ {\left(? + p + 1 \right)}}}(46)
Type: Fraction(Factored(SparseUnivariatePolynomial?(SparseMultivariatePolynomial?(Fraction(Integer),Kernel(Expression(Fraction(Integer)))))))
fricas
display(hy)$HYPGEOM
+ * + 1 2 (69) F | | [- - x ] 0 1 +p + 1+ 4

\label{eq47}{{{}_{0}^{\ }F_{\ }^{\ }}_{1}}\ {\left[ 
\begin{array}{c}
* 
\
{p + 1}
(47)
Type: OutputForm?
fricas
display(pFq0(T1))$HYPGEOM
+ 1 + |- - *| | 2 | 1 (70) F | | [-] 1 2 | 3 1| 4 | - -| + 2 2+

\label{eq48}\begin{array}{@{}l}
\displaystyle
{{{}_{1}^{\ }F_{\ }^{\ }}_{2}}\  \cdot 
\
\
\displaystyle
{\left[ 
\begin{array}{cc}
-{\frac{1}{2}}& * 
\
{\frac{3}{2}}&{\frac{1}{2}}
(48)
Type: OutputForm?
fricas
display(pFq0(T2))$HYPGEOM
+- n+ (71) F | | [1] 1 1 + 1 +

\label{eq49}{{{}_{1}^{\ }F_{\ }^{\ }}_{1}}\ {\left[ 
\begin{array}{c}
- n 
\
1 
(49)
Type: OutputForm?
fricas
display(pFq0(T3))$HYPGEOM
+ * + 1 2 (72) F | | [- - x ] 0 1 +p + 1+ 4

\label{eq50}{{{}_{0}^{\ }F_{\ }^{\ }}_{1}}\ {\left[ 
\begin{array}{c}
* 
\
{p + 1}
(50)
Type: OutputForm?
fricas
display(pFq0(T4))$HYPGEOM
+n + 1 n + 1 - n - n+ (73) F | | [1] 4 3 + 1 1 1 * +

\label{eq51}\begin{array}{@{}l}
\displaystyle
{{{}_{4}^{\ }F_{\ }^{\ }}_{3}}\  \cdot 
\
\
\displaystyle
{\left[ 
\begin{array}{cccc}
{n + 1}&{n + 1}& - n & - n 
\
1 & 1 & 1 & * 
(51)
Type: OutputForm?
fricas
hyperLookup(pFq0 T12)
n (74) 2

\label{eq52}{2}^{n}(52)
Type: Expression(Fraction(Integer))
fricas
Q:=construct(pFq0(T1),Z)$HYPGEOM
1 1 - (Z - -) 4 2 (75) --------------------- 1 3 (Z + 1)(Z + -)(Z + -) 2 2

\label{eq53}\frac{{\frac{1}{4}}\ {\left(Z -{\frac{1}{2}}\right)}}{{\left(Z + 1 \right)}\ {\left(Z +{\frac{1}{2}}\right)}\ {\left(Z +{\frac{3}{2}}\right)}}(53)
Type: Expression(Fraction(Integer))
fricas
T1(Z+1)/T1(Z)- distribute Q
fricas
Compiling function T1 with type Polynomial(Integer) -> Expression(
      Integer)
fricas
Compiling function T1 with type Variable(Z) -> Expression(Integer) 
1 1 3 2 1 3 (- - Z + -)(2 Z + 3)! + (Z + 2 Z + - Z - -)(2 Z + 1)! 4 8 4 4 (76) ------------------------------------------------------- 3 2 11 3 (Z + 3 Z + -- Z + -)(2 Z + 3)! 4 4

\label{eq54}\frac{{{\left(-{{\frac{1}{4}}\  Z}+{\frac{1}{8}}\right)}\ {{\left({2 \  Z}+ 3 \right)}!}}+{{\left({{Z}^{3}}+{2 \ {{Z}^{2}}}+{{\frac{1}{4}}\  Z}-{\frac{3}{4}}\right)}\ {{\left({2 \  Z}+ 1 \right)}!}}}{{\left({{Z}^{3}}+{3 \ {{Z}^{2}}}+{{\frac{11}{4}}\  Z}+{\frac{3}{4}}\right)}\ {{\left({2 \  Z}+ 3 \right)}!}}(54)
Type: Expression(Fraction(Integer))
fricas
normalize $
Line 105: normalize $ ..........A Error A: syntax error at top level Error A: Improper syntax. 2 error(s) parsing