#9935: Make a symbolic mod function
-------------------------+--------------------------------------------------
Reporter: jason | Owner: burcin
Type: defect | Status: new
Priority: major | Milestone: sage-4.6
Component: symbolics | Keywords:
Author: | Upstream: N/A
Reviewer: | Merged:
Work_issues: |
-------------------------+--------------------------------------------------
A participant in the PREP program noticed that mod is not a symbolic
function:
{{{
sage: mod(x,4)
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (4562, 0))
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (4530, 0))
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (842, 0))
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
/home/grout/sage-4.5.2/devel/sage-main/sage/functions/<ipython console> in
<module>()
/home/grout/sage/local/lib/python2.6/site-
packages/sage/rings/finite_rings/integer_mod.so in
sage.rings.finite_rings.integer_mod.Mod
(sage/rings/finite_rings/integer_mod.c:2633)()
/home/grout/sage/local/lib/python2.6/site-
packages/sage/rings/finite_rings/integer_mod.so in
sage.rings.finite_rings.integer_mod.IntegerMod
(sage/rings/finite_rings/integer_mod.c:2952)()
/home/grout/sage/local/lib/python2.6/site-
packages/sage/rings/finite_rings/integer_mod.so in
sage.rings.finite_rings.integer_mod.IntegerMod_int.__init__
(sage/rings/finite_rings/integer_mod.c:14249)()
/home/grout/sage/local/lib/python2.6/site-
packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__
(sage/structure/parent.c:6407)()
/home/grout/sage/local/lib/python2.6/site-
packages/sage/structure/coerce_maps.so in
sage.structure.coerce_maps.NamedConvertMap._call_
(sage/structure/coerce_maps.c:4053)()
/home/grout/sage/local/lib/python2.6/site-
packages/sage/symbolic/expression.so in
sage.symbolic.expression.Expression._integer_
(sage/symbolic/expression.cpp:4026)()
TypeError: unable to convert x (=x) to an integer
}}}
Hopefully it should be easy to wrap mod in a symbolic function, something
like:
{{{
sage: def eval_mod(self, x):
....: if isinstance(x, (int, Integer)):
....: return mod(x,5)
....: return None
....:
sage: f=function('f', eval_func=eval_mod)
sage: f(x)
f(x)
sage: f(13)
3
sage: f(x^2+x+1)
f(x^2 + x + 1)
sage: f(x^2+x+1).subs(x=2)
2
sage: f(x^2+x+1).subs(x=3)
3
sage: f(x^2+x^3).subs(x=1)
2
sage: f(x^2+x^3).subs(x=2)
2
sage: f(x^2+x^3).subs(x=3)
1
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/9935>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
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-trac?hl=en.