84 views

Skip to first unread message

Feb 26, 2015, 3:41:24 AM2/26/15

to sage-...@googlegroups.com

Hi,

with current Sage,

`sage: bool(sqrt(2)==CC(sqrt(2)))`

False

You would expect that this leads to

`sage: sqrt(2) in CC`

False

but due to a bug I'm fixing atm in #12967 this returns True.

However, now that it's fixed I'm faced with the question if

answer to both really should be False. If one doctest in parent.py

is right both should be True. But how could Sage see that equation

holds if

`sage: CC(sqrt(2))`

1.41421356237309

sage: sqrt(2).n()

1.41421356237310

so either there is a bug in SR+CC or the abovementioned doctest

is wromg.

What do you think?

Regards,

Feb 26, 2015, 3:50:40 AM2/26/15

to sage-...@googlegroups.com

Hello,

There is something wrong

sage: bool(RR(pi) == pi)

True

sage: bool(RR(golden_ratio) == golden_ratio)

True

which is fine to me. You coerce to the field with less precision. But

sage: bool(RR(sqrt(2)) == sqrt(2))

False

sage: sqrt(2).n() == RR(sqrt(2))

True

sage: RR(sqrt(2)) == CC(sqrt(2))

False

which is very wrong.

Vincent

2015-02-26 9:41 UTC+01:00, Ralf Stephan <gtr...@gmail.com>:

> --

> You received this message because you are subscribed to the Google Groups

> "sage-devel" group.

> To unsubscribe from this group and stop receiving emails from it, send an

> email to sage-devel+...@googlegroups.com.

> To post to this group, send email to sage-...@googlegroups.com.

> Visit this group at http://groups.google.com/group/sage-devel.

> For more options, visit https://groups.google.com/d/optout.

>

There is something wrong

sage: bool(RR(pi) == pi)

True

sage: bool(RR(golden_ratio) == golden_ratio)

True

which is fine to me. You coerce to the field with less precision. But

sage: bool(RR(sqrt(2)) == sqrt(2))

False

sage: sqrt(2).n() == RR(sqrt(2))

True

sage: RR(sqrt(2)) == CC(sqrt(2))

False

which is very wrong.

Vincent

2015-02-26 9:41 UTC+01:00, Ralf Stephan <gtr...@gmail.com>:

> You received this message because you are subscribed to the Google Groups

> "sage-devel" group.

> To unsubscribe from this group and stop receiving emails from it, send an

> email to sage-devel+...@googlegroups.com.

> To post to this group, send email to sage-...@googlegroups.com.

> Visit this group at http://groups.google.com/group/sage-devel.

> For more options, visit https://groups.google.com/d/optout.

>

Feb 26, 2015, 4:02:08 AM2/26/15

to sage-...@googlegroups.com

On Thursday, February 26, 2015 at 9:50:40 AM UTC+1, vdelecroix wrote:

sage: bool(RR(sqrt(2)) == sqrt(2))

False

sage: sqrt(2).n() == RR(sqrt(2))

True

These two come from bool(sqrt(2)==sqrt(2).n()) being False I think

(because Maxima is involved here) but this is different than

`sage: bool(sqrt(2).n()==CC(sqrt(2)))`

False

Feb 26, 2015, 4:10:03 AM2/26/15

to sage-...@googlegroups.com

We also have

sage: RR(tan(pi/20)) == CC(tan(pi/20))

False

But it seems right for cos, sin, exp, atan, cosh, sinh. Is there a way

to test all symbolic functions?

2015-02-26 10:02 UTC+01:00, Ralf Stephan <gtr...@gmail.com>:

sage: RR(tan(pi/20)) == CC(tan(pi/20))

False

But it seems right for cos, sin, exp, atan, cosh, sinh. Is there a way

to test all symbolic functions?

2015-02-26 10:02 UTC+01:00, Ralf Stephan <gtr...@gmail.com>:

Feb 26, 2015, 10:48:50 AM2/26/15

to sage-...@googlegroups.com

Assuming fp values cannot be equal, would it make more sense

to test elementship in CC by implementing ComplexField.__contains__()

instead of trusting Python or Maxima == ?

Feb 27, 2015, 11:36:52 AM2/27/15

to sage-...@googlegroups.com

On Thursday, February 26, 2015 at 10:10:03 AM UTC+1, vdelecroix wrote:

We also have

sage: RR(tan(pi/20)) == CC(tan(pi/20))

False

The utility code in #17866 uncovers more:

sage: bool(csc(2)==CC(csc(2)))

False

sage: bool(csch(2)==CC(csch(2)))

False

sage: bool(arcsec(2)==CC(arcsec(2)))

False

sage: bool(arcsech(pi/10)==CC(arcsech(pi/10)))

False

sage: bool(arcsech(2)==CC(arcsech(2)))

AttributeError: 'sage.rings.complex_interval.ComplexIntervalFieldElement' object has no attribute 'arcsech'

sage: bool(coth(2)==CC(coth(2)))

False

and so on (argument pi/10): zetaderiv, spherical_harmonic, dilog, elliptic_pi, exp_integral_e,

(gen_)laguerre, Ei.

Which of these do not use Maxima?

Feb 27, 2015, 1:58:24 PM2/27/15

to sage-...@googlegroups.com

On Friday, February 27, 2015 at 8:36:52 AM UTC-8, Ralf Stephan wrote:

Which of these do not use Maxima?

You can figure that out by making sure that maxima doesn't work anymore:

sage: integrate(x,x) #trigger maxima initialization

1/2*x^2

sage: sage.libs.ecl.shutdown_ecl() #any existing ecl objects are now corrupted

sage: integrate(x,x)

RuntimeError: ECL says: Detected access to an invalid or protected memory address.

or alternatively (this has a lighter touch)

sage: integrate(x,x)

1/2*x^2

sage: sage.calculus.calculus.maxima=None

sage: integrate(x,x)

AttributeError: 'NoneType' object has no attribute 'sr_integral'

A little warning: if we have a very bad try/except somewhere that catches arbitrary RuntimeError or AttributeError, the above trick might not quite work. To be completely sure, you should probably patch ecllib to log something anytime it gets called.

sage: integrate(x,x) #trigger maxima initialization

1/2*x^2

sage: sage.libs.ecl.shutdown_ecl() #any existing ecl objects are now corrupted

sage: integrate(x,x)

RuntimeError: ECL says: Detected access to an invalid or protected memory address.

or alternatively (this has a lighter touch)

sage: integrate(x,x)

1/2*x^2

sage: sage.calculus.calculus.maxima=None

sage: integrate(x,x)

AttributeError: 'NoneType' object has no attribute 'sr_integral'

A little warning: if we have a very bad try/except somewhere that catches arbitrary RuntimeError or AttributeError, the above trick might not quite work. To be completely sure, you should probably patch ecllib to log something anytime it gets called.

Feb 28, 2015, 4:34:38 AM2/28/15

to sage-...@googlegroups.com

On Friday, February 27, 2015 at 7:58:24 PM UTC+1, Nils Bruin wrote:

On Friday, February 27, 2015 at 8:36:52 AM UTC-8, Ralf Stephan wrote:Which of these do not use Maxima?You can figure that out by making sure that maxima doesn't work anymore:

Thanks. It appears to have nothing to do with Maxima. There are two different

groups of these errors: one is associated with class HyperbolicFunction and

the comparison fails always with those functions. The other affects all functions

and the comparison fails on varying conditions, like the argument(s) being

expressions involving symbolic constants, e.g.

sage: ex=sin(1+pi)

sage: bool(ex==CC(ex))

False

Maybe it's FP noise, no idea. Since it only affects "ex in CC" in a ticket branch

I tend to turn to more important things.

Reply all

Reply to author

Forward

0 new messages

Search

Clear search

Close search

Google apps

Main menu