62 views

Skip to first unread message

Mar 17, 2010, 8:38:29 PM3/17/10

to sage-support

While waiting to be approved, I think I narrowed this down to a very

simple test case.

simple test case.

atan2(3,0) --> 1/2*pi

atan2(-3,0) --> -1/2*pi

atan2(pi,0) --> 1/2*pi

atan2(-pi,0) --> RuntimeError: power::eval(): division by zero

Any ideas how to get around this?

Thanks--

Greg

Here's the full traceback:

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "_sage_input_34.py", line 9, in <module>

open("___code___.py","w").write("# -*- coding: utf-8 -*-\n" +

_support_.preparse_worksheet_cell(base64.b64decode("YXRhbjIoLXBpLDAp"),globals())

+"\n"); execfile(os.path.abspath("___code___.py"))

File "", line 1, in <module>

File "/private/var/folders/ol/olxcekVE2RWirE+1YxlblU+++TI/-Tmp-/

tmphh0DH2/___code___.py", line 3, in <module>

atan2(-pi,_sage_const_0 )

File "", line 1, in <module>

File "function.pyx", line 709, in

sage.symbolic.function.GinacFunction.__call__ (sage/symbolic/

function.cpp:6394)

File "function.pyx", line 430, in

sage.symbolic.function.Function.__call__ (sage/symbolic/function.cpp:

4448)

RuntimeError: power::eval(): division by zero

Mar 17, 2010, 10:11:46 PM3/17/10

to sage-support

Should have also mentioned:

Sage 4.3.3

OS X 10.6.2

64bit Intel

MacBook Pro

Mar 18, 2010, 2:34:11 AM3/18/10

to sage-support

On Mar 17, 9:11 pm, G B <g.c.b.at.w...@gmail.com> wrote:

> atan2(-pi,0) --> RuntimeError: power::eval(): division by zero

I got the same in the new 4.3.4.rc0 Sage version that I've just

installed.

Playing with that, I noticed also the following strange thing:

sage: n(atan2(-sqrt(2),0))

-1/2*pi

While it looks correct, it is not the answer that n should give.

Alec Mihailovs

Mar 18, 2010, 4:40:09 PM3/18/10

to sage-support

On Mar 17, 8:38 pm, G B <g.c.b.at.w...@gmail.com> wrote:

> atan2(-pi,0) --> RuntimeError: power::eval(): division by zero

>

> Any ideas how to get around this?

A simple workaround is

sage: from sympy import atan2

sage: atan2(-pi,0)

-pi/2

Alec Mihaiovs

Mar 18, 2010, 8:10:41 PM3/18/10

to sage-support

Thanks. I tried that but it's causing different problems:

-----------------------

from sympy import atan2

var('omega,t,x,y,r,Theta')

Theta(t)=omega*t

x(t)=r*cos(Theta(t))

y(t)=r*sin(Theta(t))

dx=diff(x,t)

ddx=diff(dx,t)

dy=diff(y,t)

ddy=diff(dy,t)

v_a(t)=atan2(dy(t),dx(t))

v_a

--------------------------

-----------------------

from sympy import atan2

var('omega,t,x,y,r,Theta')

Theta(t)=omega*t

x(t)=r*cos(Theta(t))

y(t)=r*sin(Theta(t))

dx=diff(x,t)

ddx=diff(dx,t)

dy=diff(y,t)

ddy=diff(dy,t)

v_a(t)=atan2(dy(t),dx(t))

v_a

--------------------------

I get: AttributeError: 'atan2' object has no attribute '_sage_'

My original code had this for that second last line:

v_a(t)=atan2(dy(t),dx(t)).substitute(r=10,omega=(2*pi/60))

and it throws: AttributeError: 'atan2' object has no attribute

'substitute'

The code with the .substitute line seems to work for (t%30 <> 0) so I

think I've formatted my equations properly.

Apologies if I'm doing something horribly hackish-- I'm new to Sage.

Any other ideas?

Thanks--

Greg

Mar 19, 2010, 10:03:55 PM3/19/10

to sage-s...@googlegroups.com

On Thu, Mar 18, 2010 at 5:10 PM, G B <g.c.b....@gmail.com> wrote:

> Thanks. I tried that but it's causing different problems:

> -----------------------

> from sympy import atan2

> var('omega,t,x,y,r,Theta')

> Theta(t)=omega*t

> x(t)=r*cos(Theta(t))

> y(t)=r*sin(Theta(t))

> dx=diff(x,t)

> ddx=diff(dx,t)

> dy=diff(y,t)

> ddy=diff(dy,t)

> v_a(t)=atan2(dy(t),dx(t))

> v_a

> --------------------------

>

> I get: AttributeError: 'atan2' object has no attribute '_sage_'

> Thanks. I tried that but it's causing different problems:

> -----------------------

> from sympy import atan2

> var('omega,t,x,y,r,Theta')

> Theta(t)=omega*t

> x(t)=r*cos(Theta(t))

> y(t)=r*sin(Theta(t))

> dx=diff(x,t)

> ddx=diff(dx,t)

> dy=diff(y,t)

> ddy=diff(dy,t)

> v_a(t)=atan2(dy(t),dx(t))

> v_a

> --------------------------

>

> I get: AttributeError: 'atan2' object has no attribute '_sage_'

This is a bug in sympy, I've fixed that in sympy, currently the

patches are waiting for a review. When we update the sympy package in

sage, here is what you'll get:

sage: var('omega,t,x,y,r,Theta')

(omega, t, x, y, r, Theta)

sage: Theta(t)=omega*t

sage: x(t)=r*cos(Theta(t))

sage: y(t)=r*sin(Theta(t))

sage: dx=diff(x,t)

sage: ddx=diff(dx,t)

sage: dy=diff(y,t)

sage: ddy=diff(dy,t)

sage: v_a(t)=atan2(dy(t),dx(t))

sage: v_a

t |--> arctan2(omega*r*cos(omega*t), -omega*r*sin(omega*t))

>

> My original code had this for that second last line:

> v_a(t)=atan2(dy(t),dx(t)).substitute(r=10,omega=(2*pi/60))

>

>

> and it throws: AttributeError: 'atan2' object has no attribute

> 'substitute'

in the above code, you are using sympy, and thus you have to use:

sage: atan2(dy(t),dx(t)).subs({r:10, omega:2*pi/60})

arctan2(1/3*pi*cos(1/30*pi*t), -1/3*pi*sin(1/30*pi*t))

and it should work. Note that this doesn't work in the current sage,

but it will work when we update sympy.

We are also facing some technical problem, that the latest mpmath in

sympy doesn't work with sage:

http://code.google.com/p/sympy/issues/detail?id=1865

so the newest sympy fails to import, but we'll fix it too.

Ondrej

Mar 19, 2010, 10:32:17 PM3/19/10

to sage-s...@googlegroups.com

On Fri, Mar 19, 2010 at 7:03 PM, Ondrej Certik <ond...@certik.cz> wrote:

> On Thu, Mar 18, 2010 at 5:10 PM, G B <g.c.b....@gmail.com> wrote:

>> Thanks. I tried that but it's causing different problems:

>> -----------------------

>> from sympy import atan2

>> var('omega,t,x,y,r,Theta')

>> Theta(t)=omega*t

>> x(t)=r*cos(Theta(t))

>> y(t)=r*sin(Theta(t))

>> dx=diff(x,t)

>> ddx=diff(dx,t)

>> dy=diff(y,t)

>> ddy=diff(dy,t)

>> v_a(t)=atan2(dy(t),dx(t))

>> v_a

>> --------------------------

>>

>> I get: AttributeError: 'atan2' object has no attribute '_sage_'

>

> This is a bug in sympy, I've fixed that in sympy, currently the

> patches are waiting for a review. When we update the sympy package in

> On Thu, Mar 18, 2010 at 5:10 PM, G B <g.c.b....@gmail.com> wrote:

>> Thanks. I tried that but it's causing different problems:

>> -----------------------

>> from sympy import atan2

>> var('omega,t,x,y,r,Theta')

>> Theta(t)=omega*t

>> x(t)=r*cos(Theta(t))

>> y(t)=r*sin(Theta(t))

>> dx=diff(x,t)

>> ddx=diff(dx,t)

>> dy=diff(y,t)

>> ddy=diff(dy,t)

>> v_a(t)=atan2(dy(t),dx(t))

>> v_a

>> --------------------------

>>

>> I get: AttributeError: 'atan2' object has no attribute '_sage_'

>

> This is a bug in sympy, I've fixed that in sympy, currently the

> patches are waiting for a review. When we update the sympy package in

Also a small fix to sage has to be done, I posted the patch here:

http://trac.sagemath.org/sage_trac/ticket/8564

Greg, could you please review it?

Thanks,

Ondrej

Mar 20, 2010, 1:47:12 AM3/20/10

to sage-support

Also, simplification might be improved. In particular,

sage: atan(sin(1)/cos(1)).full_simplify()

arctan(sin(1)/cos(1))

while

atan(tan(1)).simplify()

1

Alec Mihailovs

Mar 22, 2010, 6:35:20 PM3/22/10

to sage-support

Hi Ondrej--

Sorry to turn helpless, but I'm not sure how to apply the patch. I'm

working from a binary install for OS X. Would I need to rebuild from

source, or can I apply the patch to one of the implementation files in

the bundle? It looks like you've just changed a lookup table?

Thanks for following up.

Thanks--

Greg

On Mar 19, 7:32 pm, Ondrej Certik <ond...@certik.cz> wrote:

> On Fri, Mar 19, 2010 at 7:03 PM, Ondrej Certik <ond...@certik.cz> wrote:

Message has been deleted

Mar 23, 2010, 4:18:52 AM3/23/10

to sage-s...@googlegroups.com

Hi Minh!

On Mon, Mar 22, 2010 at 8:55 PM, Minh Nguyen <nguye...@gmail.com> wrote:

> Hi Greg,

>

> On Tue, Mar 23, 2010 at 9:35 AM, G B <g.c.b....@gmail.com> wrote:

>> Hi Ondrej--

>>

>> Sorry to turn helpless, but I'm not sure how to apply the patch. I'm

>> working from a binary install for OS X.

>

> Here is a quick-and-dirty way. I assume that you are using Sage 4.3.3

> or Sage 4.3.4. From the Sage command line, you could issue the

> following command to apply the relevant patch:

>

> sage: hg_sage.apply("http://trac.sagemath.org/sage_trac/raw-attachment/ticket/8564/sympy1.patch")

>

> After hitting the enter key, the relevant patch would be downloaded to

> your computer. A text editor would then load and you would be prompted

> to enter a "commit message". Just enter some text such as "fix atan2()

> conversions between Sage and SymPy", save your text, exit the text

> editor. If the editor is vi(m), enter the text, hit the ESC key, and

> type ":wq". If the editor is Emacs, enter the text, hold down the CTRL

> key, and type "xs" and "xc" in that order. Having exited the text

> editor, the relevant patch would be applied to your local copy of

> Sage. Now exit the Sage command line session. From the SAGE_ROOT

> directory of Sage, i.e. the Sage top-level directory, rebuild the Sage

> library as follows:

>

> $ ./sage -b main

>

> This would only rebuild the relevant parts that the patch changes.

> Most likely, the last command won't rebuild the whole Sage library.

>

>

>> Would I need to rebuild from

>> source,

>

> You don't need to rebuild Sage from source for this particular patch.

>

>

>> or can I apply the patch to one of the implementation files in

>> the bundle?

>

> Follow the direction as described above. If there is anything wrong,

> please let me know.

>

>

>> It looks like you've just changed a lookup table?

>

> The patch adds an entry to a dictionary, also known as a hash table or

> an associative array.

Thanks for all the detailed instructions. I also sent some patches

that we need to apply in sympy, fixing couple (related) bugs, so after

all is reviewed and in, I'll also update the whole sympy package and

ping you. But this patch above itself should imho fix the atan2 thing,

even with the current sympy in Sage.

Ondrej

Mar 23, 2010, 10:00:34 PM3/23/10

to sage-support

I won't clutter the discussion with the full traceback unless someone

would find it interesting, but the hg_sage command failed with:

would find it interesting, but the hg_sage command failed with:

TypeError: 'NoneType' object is unsubscriptable.

I did enter the entire URL, I didn't just paste the abbreviated URL

displayed in the post.

On Mar 23, 1:18 am, Ondrej Certik <ond...@certik.cz> wrote:

> Hi Minh!

>

>

>

>

>

> On Mon, Mar 22, 2010 at 8:55 PM, Minh Nguyen <nguyenmi...@gmail.com> wrote:

> > Hi Greg,

>

> > On Tue, Mar 23, 2010 at 9:35 AM, G B <g.c.b.at.w...@gmail.com> wrote:

> >> Hi Ondrej--

>

> >> Sorry to turn helpless, but I'm not sure how to apply the patch. I'm

> >> working from a binary install for OS X.

>

> > Here is a quick-and-dirty way. I assume that you are using Sage 4.3.3

> > or Sage 4.3.4. From the Sage command line, you could issue the

> > following command to apply the relevant patch:

>

> > sage: hg_sage.apply("http://trac.sagemath.org/sage_trac/raw-attachment/ticket/8564/sympy1....")

Mar 30, 2010, 4:59:11 PM3/30/10

to sage-support

For anyone interested, it looks as though the GiNaC project has

released a fix:

http://www.cebix.net/pipermail/ginac-devel/2010-March/001732.html

released a fix:

http://www.cebix.net/pipermail/ginac-devel/2010-March/001732.html

I've posted this to the dev list as well.

Cheers--

Greg

Reply all

Reply to author

Forward

0 new messages

Search

Clear search

Close search

Google apps

Main menu