# i doesn't belong to QQbar ? Why ?

I do not understand this :

sage: sqrt(1) in QQbar
True
sage: sqrt(-2) in QQbar
True
sage: sqrt(-1) in QQbar
False


Can someone explain ?

Note that, however :

sage: [t[0] in QQbar for t in (x^2+1).roots(ring=QQbar)]
[True, True]

edit retag close merge delete

Still the same bug on SageMath version 8.2, Release Date: 2018-05-05 . Nobody fix this? 0.0

( 2018-08-03 14:46:47 +0200 )edit
1

1) This is not an answer...

2) see the mentioned ticket (as well as thetickets it refers to) to understand why there is not quick-and-easy fix for this one...

( 2018-08-03 21:08:11 +0200 )edit

@Emmanuel Charpentier thanks for 1), my mistake. I decided to move back to linux, so my comment doesnt have sense anymore. Thanks for the feedback!

( 2019-03-04 16:13:09 +0200 )edit

Sort by ยป oldest newest most voted

This is definitely a bug, thanks for reporting! As you can see in the source code:

sage: QQbar.__contains__??


the test:

 elif EQ:


which corresponds to:

sage: bool(I == QQbar(I))


TypeError: unsupported operand parent(s) for +: 'Number Field in I with defining polynomial x^2 + 1' and 'Algebraic Field'


which is catched to return False.

I have opened trac ticket 24209 for this.

EDIT This issue is fixed now (Sage 9.4-beta3):

sage: sqrt(-1) in QQbar
True
sage: I in QQbar
True

more

Until Sage 9.3.rc4 I in QQbar returns False. Starting with Sage 9.3.rc5 it returns True.

It must have been solved by Sage Trac ticket 31628: fix/improve conversions to QQbar and AA.

( 2021-06-27 23:51:15 +0200 )edit