Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
1

asking real part of a function crash the kernel

asked 5 years ago

ortollj gravatar image

updated 2 years ago

tmonteil gravatar image

Hi

SageMath 8.8 notebook OS=W10

asking the real part of this function systematically crash the kernel with the message :

The kernel appears to have died. It will restart automatically.

n=var('n')
assume(n>=0)
assume(n,'integer')
a_n=1/20*(1/2*sqrt(5) + 1/2)^n*(11*sqrt(5) + 25) - 1/20*(-1/2*sqrt(5) + 1/2)^n*(11*sqrt(5) - 25) - 1/12*(1/2*I*sqrt(3) + 1/2)^n*(I*sqrt(3) + 3) - 1/12*(-1/2*I*sqrt(3) + 1/2)^n*(-I*sqrt(3) + 3)
show(a_n)
a_n.real_part()
#real_part(a_n)
Preview: (hide)

Comments

this function for n>= 0 has no imaginary part

for i in (0..12) :
    show(a_n(i).simplify_full())
ortollj gravatar imageortollj ( 5 years ago )

Have you tried it at the command prompt? In general it's good to isolate a problem from the specific environment in which it occurred, if possible.

Iguananaut gravatar imageIguananaut ( 5 years ago )

I tried it too, and I just had time to see segmentation fault and the command window crashed.

ortollj gravatar imageortollj ( 5 years ago )

1 Answer

Sort by » oldest newest most voted
4

answered 5 years ago

Iguananaut gravatar image

updated 5 years ago

I got

sage: n=var('n')
sage: assume(n>=0)
sage: assume(n,'integer')
sage: a_n=1/20*(1/2*sqrt(5) + 1/2)^n*(11*sqrt(5) + 25) - 1/20*(-1/2*sqrt(5) + 1/2)^n*(11*sqrt(5) - 25) - 1/12*
....: (1/2*I*sqrt(3) + 1/2)^n*(I*sqrt(3) + 3) - 1/12*(-1/2*I*sqrt(3) + 1/2)^n*(-I*sqrt(3) + 3)
sage: a_n.real_part()
------------------------------------------------------------------------
Unhandled SIGSEGV: A segmentation fault occurred.
This probably occurred because a *compiled* module has a bug
in it and is not properly wrapped with sig_on(), sig_off().
Python will now terminate.
------------------------------------------------------------------------
Segmentation fault (core dumped)

Will update my answer as I find out more, but obviously a segfault shouldn't happen here.

Confirmed on Linux and Windows. The segfault is coming from pynac. It seems to be specifically the assume(n, 'integer') part that does it. Without that it doesn't crash.

I spent a few minutes trying to narrow this down to a simpler example and got this

sage: n=var('n')
sage: assume(n, 'integer')
sage: (I^n).real_part()
<segfault>

It appears to go into an infinite recursion and eventually overflow the stack in

src/sagemath/sage/local/lib/libpynac.so.18(_ZNK5GiNaC5power9real_partEv+0x51)[0x7f7c45607bf1]

The correct answer for Re[in] should be cos(πn2) but I guess it's not that clever, and it certainly shouldn't crash...

If I don't stipulate that nZ then it does give the correct answer, sort of...

sage: n=var('n')
sage: (I^n).real_part()
cos(1/2*pi*real_part(n))*e^(-1/2*pi*imag_part(n))

This is now tracked at https://trac.sagemath.org/ticket/28357

Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 5 years ago

Seen: 577 times

Last updated: Aug 15 '19