Add a personnal coercion rule
Hi all !
For some reasons I have to use a class MyAngle which basically describes an angle, but with some personal methods.
Obviously, sage's cos function cannot take an instance of my class as argument.
SAGE
#! /usr/bin/sage -python
# -*- coding: utf8 -*-
from sage.all import *
class MyAngle(object):
def __init__(self,value):
self.value=value
x=MyAngle(pi/2)
cos(x)
ERROR
Traceback (most recent call last):
File "./sagess.py", line 11, in <module>
cos(x)
File "function.pyx", line 733, in sage.symbolic.function.GinacFunction.__call__ (sage/symbolic/function.cpp:6572)
File "function.pyx", line 417, in sage.symbolic.function.Function.__call__ (sage/symbolic /function.cpp:4336)
TypeError: cannot coerce arguments: no canonical coercion from <class '__main__.MyAngle'> to Symbolic Ring
What do I have to add to my class to make Sage's cosine understand that when x=MyAngle(pi/2)
,
cos(x)
means
cos(x.value)
I found that, but I didn't helped me so much. http://www.sagemath.org/doc/developer...
Thanks for help ! have a good night Laurent