I've been trying to continue learning Sage. This morning I translated another of my scripts from Maple. This computes Hodge numbers of complete intersections in projective space using a formula of Hirzebruch. My first goal was to make it logically correct, and I think it is. But now I need to worry about efficiency. The problem is that this is generating huge polynomial expressions which seem to be overwhelming Maxima running inside Sage for moderately large examples. (Maple seems to be OK with these examples.) A typical error log looks like this: --------------------------------------- Traceback (most recent call last): File "/Applications/local/lib/python2.5/site-packages/sympy/ plotting/", line 1, in <module>
File "/Users/donu/.sage/sage_notebook/worksheets/admin/1/code/ 11.py", line 104, in hodge return hodge1(degs, n-len(degs)) File "/Users/donu/.sage/sage_notebook/worksheets/admin/1/code/ 11.py", line 153, in hodge1 nexth = htemp.coeff(x,i).coeff(y,level-i) File "/Applications/local/lib/python2.5/site-packages/sage/calculus/ calculus.py", line 2660, in coeff return self.parent()(self._maxima_().coeff(x, n)) File "/Applications/local/lib/python2.5/site-packages/sage/calculus/ calculus.py", line 1134, in _maxima_ return RingElement._maxima_(self, maxima) File "sage_object.pyx", line 316, in sage.structure.sage_object.SageObject._maxima_ (sage/structure/ sage_object.c:2879) File "sage_object.pyx", line 247, in sage.structure.sage_object.SageObject._interface_ (sage/structure/ sage_object.c:1886) File "/Applications/local/lib/python2.5/site-packages/sage/calculus/ calculus.py", line 5078, in _maxima_init_ return '(%s) %s (%s)' % (ops[0]._maxima_init_(), ... File "/Applications/local/lib/python2.5/site-packages/sage/calculus/ calculus.py", line 5078, in _maxima_init_ return '(%s) %s (%s)' % (ops[0]._maxima_init_(), RuntimeError: maximum recursion depth exceeded -------------------------------------- I guess one solution would be explicitly call Singular which should be able handle these kinds of calculations more gracefully that Maxima. Another solution would be to trim the polynomials as I go along, by throwing away high degree terms. Does anyone know a good way to do this in Sage? In Maple I would do something like this for p(x,y) trim := 0 for term in op(p) do if (degree(term, x) + degree(term,y) <= N) then trim := trim + term end if end do But I'm not sure it translates. - Donu --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---