There is also a difference between the level of evaluation of the two expressions. The sage (man) sees 5-1
, and thinks mayby it is better to write a 4
immediately, then seeing 4 == 0
... and in the other case thinks, let it be as it comes...
If a True
or a False
is needed, then we have to require in the second case an explicit evaluation.
sage: print 3^(1/3) - 3^(1/5) == 0
3^(1/3) - 3^(1/5) == 0
sage: print bool( 3^(1/3) - 3^(1/5) == 0 )
False
Note also how the sage interpreter reshapes expressions in the following cases:
sage: print 4 == 0
False
sage: print 3^(1/5) - 3^(1/5) == 0
0 == 0
sage: print bool( 3^(1/5) - 3^(1/5) ) == 0
True
sage: print type( 3^(1/5) - 3^(1/5) )
<type 'sage.symbolic.expression.Expression'>
sage: print type(0)
<type 'sage.rings.integer.Integer'>
sage: print 98^(1/2) - 8^(1/6) == 5184^(1/4)
7*sqrt(2) - 8^(1/6) == 6*4^(1/4)
sage: print bool( 98^(1/2) - 8^(1/6) == 5184^(1/4) )
True
Note: This answer differs only psychologically from the above one. (Please let it above.)