ggrafendorfer wrote:
> Hi Jason,
> thanks for your suggestion and your detailed answer,
> 
> but actually I did not start this thread for performance reasons,
> I did start it to ask why "i^2" is not treated like an exact symbolic
> expression in sage:
> 
> ----------------------------------------------------------------------
> | Sage Version 3.2, Release Date: 2008-11-20                         |
> | Type notebook() for the GUI, and license() for information.        |
> ----------------------------------------------------------------------
> 
> sage: i^2
> -1
> sage: CDF(_)
> -1.0 + 1.22460635382e-16*I
> 
> 
> and I was wondering if this is a bug, obviously it is not, but I still
> don't understand it :-)


Okay.  What's happening here is what Robert pointed out before.  The 
simplification of i^2 == -1 takes place upon *printing* i^2.  Thus, 
CDF(_) is literally doing CDF(i^2), not CDF(-1).  Maybe this will help:


sage: x=i^2
sage: x
-1
sage: type(x)
<class 'sage.calculus.calculus.SymbolicArithmetic'>
sage: x.__dict__

{'_binary': True,
  '_l_assoc': False,
  '_operands': [I, 2],
  '_operator': <built-in function pow>,
  '_precedence': 3000,
  '_r_assoc': True,
  '_simp': -1,
  '_unary': False}

You can see that, although x prints as "-1", it really internally is 
still "i^2" (see the _operator, which is the power operator, and the 
_operands, which are I and 2, i.e., I^2).  So CDF(x) is *not* CDF(-1), 
but rather is CDF(I^2), and so we run into the numerical problems that 
we dealt with earlier.

If instead, we do:
sage: x=simplify(i^2)
sage: type(x)
<class 'sage.calculus.calculus.SymbolicConstant'>
sage: CDF(x)
-1.0

Notice now that x is a SymbolicConstant (i.e., -1), so CDF(x) gives us 
back the -1 floating point number we expect.

Jason



--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@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-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to