Exemple #1
0
 def pyobject(self, ex, obj):
     from mathics.core import expression
     from mathics.core.expression import Number
     
     if obj is None:
         return expression.Symbol('Null')
     elif isinstance(obj, (list, tuple)) or is_Vector(obj):
         return expression.Expression('List', *(from_sage(item, self.subs) for item in obj))
     elif isinstance(obj, Constant):
         return expression.Symbol(obj._conversions.get('mathematica', obj._name))
     elif is_Integer(obj):
         return expression.Integer(str(obj))
     elif isinstance(obj, sage.Rational):
         rational = expression.Rational(str(obj))
         if rational.value.denom() == 1:
             return expression.Integer(rational.value.numer())
         else:
             return rational
     elif isinstance(obj, sage.RealDoubleElement) or is_RealNumber(obj):
         return expression.Real(str(obj))
     elif is_ComplexNumber(obj):
         real = Number.from_string(str(obj.real())).value
         imag = Number.from_string(str(obj.imag())).value
         return expression.Complex(real, imag)
     elif isinstance(obj, NumberFieldElement_quadratic):
         # TODO: this need not be a complex number, but we assume so!
         real = Number.from_string(str(obj.real())).value
         imag = Number.from_string(str(obj.imag())).value
         return expression.Complex(real, imag)
     else:
         return expression.from_python(obj)
Exemple #2
0
 def composition(self, ex, operator):
     from mathics.core import expression
     from mathics.builtin import sage_to_mathics
 
     func_name = repr(operator)
     builtin = sage_to_mathics.get(func_name)
     leaves = map(self, ex.operands())
     if builtin is not None:
         head = expression.Symbol(builtin.get_name())
         leaves = builtin.from_sage(leaves)
     else:
         head = self.create_symbol(func_name)
     
     result = expression.Expression(head, *leaves)
     
     if self.subs is not None and result.has_form(ConvertSubstitutions.head_name, 1, None):
         index = result.leaves[0]
         return self.subs.subs[index.value]
     else:
         return result
Exemple #3
0
 def _make_Lookup(self, s):
     value = self.definitions.lookup_name(s)
     return ma.Symbol(value)
Exemple #4
0
 def _make_Symbol(self, s):
     return ma.Symbol(s)
Exemple #5
0
def create_symbol(self, name):
    from mathics.core import expression
    
    if name.startswith(sage_symbol_prefix):
        name = name[len(sage_symbol_prefix):]
    return expression.Symbol(name)
Exemple #6
0
 def convert_Symbol(self, node):
     if node.context is not None:
         return ma.Symbol(node.context + '`' + node.value)
     value = self.definitions.lookup_name(node.value)
     return ma.Symbol(value)
Exemple #7
0
def create_symbol(self, name):
    from mathics.core import expression
    return expression.Symbol(name)