Opened 10 years ago
Last modified 8 years ago
#12289 closed enhancement
pass algorithm argument to custom numeric evalution methods — at Version 14
Reported by: | burcin | Owned by: | burcin |
---|---|---|---|
Priority: | major | Milestone: | sage-6.2 |
Component: | symbolics | Keywords: | pynac sd35.5 sd40.5 sd48 |
Cc: | benjaminfjones, dsm, kcrisman, kini, eviatarbach, vbraun | Merged in: | |
Authors: | Burcin Erocal | Reviewers: | |
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description (last modified by )
Custom numeric evaluation functions defined in the _evalf_()
method of symbolic functions accept only the parent of the result as an argument. We should expand this to allow passing an argument
parameter as well.
See comment:7 for testing instructions.
For merging, apply trac_12289-evalf_dictionary_rebase.patch, trac_12289-add_algorithm-rebase.patch, and trac_12289-py_float-fix-rebase.patch.
Change History (21)
Changed 10 years ago by
Changed 10 years ago by
Changed 10 years ago by
comment:1 Changed 10 years ago by
- Cc benjaminfjones added
comment:2 Changed 10 years ago by
- Keywords sd35.5 added
I'm doing some testing of these patches along with rebasing #1173. Thanks Burcin!
comment:3 Changed 10 years ago by
- Cc dsm added
- Keywords sd40.5 added
comment:4 Changed 10 years ago by
I'm trying to rebase the patch trac_12289-evalf_dictionary.patch to sage-5.0, but I'm running into a problem with the type of py_funcs.py_float
. In the patch py_float has type object (*)(object, object)
but in sage-5.0, it has type object (*)(object, PyObject *)
I guess because of a pynac change in the meantime.
To be more specific, with this type def for py_float
:
cdef public object py_float(object n, object kwds) except +:
I rebuild sage and get:
Error compiling Cython file: ------------------------------------------------------------ ... py_funcs.py_is_prime = &py_is_prime py_funcs.py_integer_from_long = &py_integer_from_long py_funcs.py_integer_from_python_obj = &py_integer_from_python_obj py_funcs.py_float = &py_float ^ ------------------------------------------------------------ sage/symbolic/pynac.pyx:2040:24: Cannot assign type 'object (*)(object, object)' to 'object (*)(object, PyObject *)'
Any suggestions (burcin?)
comment:5 Changed 10 years ago by
- Cc kcrisman added
comment:6 Changed 10 years ago by
- Cc kini added
comment:7 follow-up: ↓ 10 Changed 10 years ago by
I've been working on this ticket today at sd40.5. I've got burcin's changes working in sage-5.0 with a caveat. Here's how to get the example in comment:1 working in sage-5.0:
- install the patched pynac-0.2.4.p1 spkg at http://sage.math.washington.edu/home/bjones/pynac-0.2.4.p1.spkg. this spkg is the pynac-0.2.4 spkg from #12950 which has been patched to include the changes from burcin's
pynac-wip
branch of pynac mentioned above.
- apply all patches at #12950, here is a shell script to help that (run from
$SAGE_ROOT/devel/sage
): http://sage.math.washington.edu/home/bjones/trac_12950_apply.sh
- apply the patches to
$SAGE_ROOT/devel/sage
sage -b
comment:8 Changed 10 years ago by
- Description modified (diff)
Patchbot, though, should only apply trac_12289-evalf_dictionary_rebase.patch, trac_12289-add_algorithm_arg.patch, and trac_12289_py_float_fix.patch
comment:9 Changed 10 years ago by
So that we don't forget to fix it later:
sage: erf(1).n(algorithm='foo') 0.842700792949715 sage: erf(0) 0 sage: parent(erf(0)) Integer Ring sage: erf(0).n(algorithm='foo') --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /Users/mcneil/sagedev/sage-5.1.beta0b/sage-5.1.beta0/devel/sage-hack2/sage/<ipython console> in <module>() /Users/mcneil/sagedev/sage-5.1.beta0b/sage-5.1.beta0/local/lib/python2.7/site-packages/sage/structure/element.so in sage.structure.element.Element.numerical_approx (sage/structure/element.c:4988)() TypeError: numerical_approx() got an unexpected keyword argument 'algorithm'
comment:10 in reply to: ↑ 7 Changed 9 years ago by
- install the patched pynac-0.2.4.p1 spkg at http://sage.math.washington.edu/home/bjones/pynac-0.2.4.p1.spkg. this spkg is the pynac-0.2.4 spkg from #12950 which has been patched to include the changes from burcin's
pynac-wip
branch of pynac mentioned above.
Is this stuff in the current Pynac 0.2.6?
- apply all patches at #12950, here is a shell script to help that (run from
$SAGE_ROOT/devel/sage
): http://sage.math.washington.edu/home/bjones/trac_12950_apply.sh
Can now be skipped, presumably.
- apply the patches to
$SAGE_ROOT/devel/sage
sage -b
comment:11 Changed 9 years ago by
- Cc eviatarbach added
comment:12 Changed 9 years ago by
Some of these patches have bitrotted slightly. Updates coming up.
comment:13 Changed 9 years ago by
Regarding Doug's comment on
erf(0).n(algorithm='foo')
Is this something we want to fix here? I'm not sure whether this is behavior that is supported with this patch, though perhaps it should be. I think that so far this is only putting in infrastructure, right? I don't see any doctests here, for instance.
Changed 9 years ago by
Changed 9 years ago by
comment:14 Changed 9 years ago by
- Description modified (diff)
The
evalf_dict
branch of Pynac available here, with the attached patches applied to the Sage library, allows this:The docstrings for
_convert()
etc. methods of symbolic expressions need to be updated to reflect these changes.