Hi all,
I am new to Sage and I don't quite understand how to convert my code
to cython code to speed up my program.  I am doing a lot of symbolic
manipulations and using the PolynomialRing object.  Below I have some
of my code so that you can see the types of manipulations I hope to
speed up:
   Ring=PolynomialRing(ZZ,'q,t')
   q,t=Ring.gens()
   A=PolynomialRing(Ring,'x1,x1L,x1R,x2,x2L,x2R')
   x1,x1L,x1R,x2,x2L,x2R=A.gens()
   xnplus3=[]
   xnegn=[]
   zn=[]
   def qnumber(n):
       g(q,t)=(q^n-t^n)/(q-t)
       return g
   def qfactorial(n):
       prod(q,t)=1
       for k in range(n):
           prod(q,t)=prod*qnumber(k+1)
       return prod
   def quantumBinomial(n,k):
       f(q,t)=factor(qfactorial(n)/(qfactorial(k)*qfactorial(n-k)))
       return f(q,q^(-1))
   def L(x1x2_expr):
       f=x1x2_expr.substitute({x1:x1L,x2:x2L})
       return f
   def R(x1x2_expr):
       f=x1x2_expr.substitute({x1:x1R,x2:x2R})
       return f
   def x_nplus3(n):
       s=X(-n-1,n+2)  #x1^(-n-1)*x2^(n+2)
       for p in range(n+1):
           for r in range(n+1-p):
               b1=quantumBinomial(n-r,p)
               b2=quantumBinomial(n+1-p,r)
               s=s+b1*b2*X(2*p-n-1,2*r-n)
       return s
   def commute(LR_expr):
       Sum=0
       Coeffs=LR_expr.coeffs(x2L)
       for Term in Coeffs:
           Term[0]=Term[0].substitute({x1L:x1,x1R:q^(-Term[1])
*x1,x2R:x2})
           Sum=Sum+Term[0]*x2^(Term[1])
       Coeffs=Sum.coeffs(x1)
       Sum=0
       for Term in Coeffs:
           coeffs=Term[0].coeffs(x2)
           for term in coeffs:
               p=q^(-term[1]*Term[1]/2)
               adj_qterm=term[0]/p
               qcoeffs=adj_qterm.coeffs(q)
               new_qterm=0
               for qterm in qcoeffs:
                   if qterm[1]>=0:
                       new_qterm=new_qterm+qterm[0]*q^(qterm[1])
                   if qterm[1]<0:
                       new_qterm=new_qterm+qterm[0]*t^(-qterm[1])
               Sum=Sum+factor(new_qterm)*p*x1^(Term[1])*x2^(term[1])
       return Sum.substitute({t:q^(-1)})
I am hoping to get a few pointers and suggestions for making my code
compatible with cython.
Thank you for your time.

Dylan

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to