On Wed, Sep 17, 2008 at 9:46 AM, Jason Grout
<[EMAIL PROTECTED]> wrote:
>
> William Stein wrote:
>> On Wed, Sep 17, 2008 at 8:02 AM, Jason Merrill <[EMAIL PROTECTED]> wrote:
>>> On Sep 17, 2:20 am, Jason Merrill <[EMAIL PROTECTED]> wrote:
>>>> Here's a monkeypatch that makes this work(ish)
>>>>
>>>> from sage.calculus.calculus import SymbolicExpression
>>>> class FormalSymbolicExpression(SymbolicExpression):
>>>>     def __init__(self,expr):
>>>>         self.expr = expr
>>>>         # just delegate everything to the input expression
>>>>         for m in dir(expr):
>>>>             self.m = m
>>>>     def _repr_(self,simplify=False):
>>>>         return self.expr._repr_(simplify=False)
>>>>     # implement a _latex_ method
>>>>
>>>> SymbolicExpression.formal = lambda self:
>>>> FormalSymbolicExpression(self)
>>>>
>>>> def formal(expr):
>>>>     try:
>>>>         return expr.formal()
>>>>     except AttributeError:
>>>>         return expr
>>> Right... so that delegation bit doesn't actually do anything.  This
>>> was leading to
>>>
>>> sage: simplify(formal(exp(I*pi)))
>>> e^(pi*I)
>>>
>>> and presumably horrendous amounts of other strangeness.  Here's
>>> another try.  It doesn't actually inherit from SymbolicExpression
>>> anymore, which will probably cause some difficulty with isinstance
>>> calls, but it's maybe a little closer
>>>
>>> from sage.calculus.calculus import SymbolicExpression
>>> class FormalSymbolicExpression():
>>>    def __init__(self,expr):
>>>        self.expr = expr
>>>
>>>    def __getattr__(self,attrib):
>>>        return getattr(self.expr,attrib)
>>>
>>>    def __repr__(self,simplify=False):
>>>        return self.expr._repr_(simplify=False)
>>>
>>> SymbolicExpression.formal = \
>>>    lambda self: FormalSymbolicExpression(self)
>>>
>>> def formal(expr):
>>>    try:
>>>        return expr.formal()
>>>    except AttributeError:
>>>        return expr
>>>
>>> And now
>>>
>>> sage: simplify(formal(exp(I*pi)))
>>> -1
>>
>> Jason,
>>
>> Just a heads up -- your code above is going to become pointless when we 
>> switch
>> to using Ginac as a backend for symbolic manipulation, since Sage will no 
>> longer
>> keep its own expression tree.
>
>
> I looked at your ginac/pynac symbolic stuff last night.  It appears that
> you just call a Gex_to_str function (or something like that) to print
> out the expression, which presumably is a ginac thing.  Calling latex()
> on any expression just returns \text{printed representation}.  If Sage
> will not maintain the expression tree, will it be able to access it to
> print out a latex form?

Yes.

> Does Ginac output latex versions of expressions?

Yes.

William

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to