I've written a bunch of functions (some organized in classes) to do
some large computations in a particular finite field (always GF(2^n)
for some odd n). This seems to work fine. I'd like the computation
to be as fast as possible, so the first thing I did was to copy
the .py file to a .pyx file. The good news is that the compiled
cython is at least 30% faster (sometimes more) than the
interpreted .py version. The bad news is that it gives different
results! In trying to track down where things go awry, I made the
following declaration in each
from sage.misc.decorators import sage_wrap
from string import join
def logged(func):
@sage_wrap(func)
def with_logging(*args, **kwds):
print func.__name__ + '(' + join([str(_) for _ in args],',')
+ ')'
return func(*args,**kwds)
return with_logging
I then put
@logged
in from of the defs of a bunch of functions.
This works as expected with .py version, but when I try to compile
the .pyx version I get the message:
.... in update_wrapper
setattr(wrapper, attr, getattr(wrapped, attr))
AttributeError: attribute '__doc__' of 'builtin_function_or_method'
objects not writable
I think that I understand what's going on here, but are there any
suggestions as to how to get to the bottom of the differences between
the cython compiled version and the interpreted version?
--
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org