#16385: Fix rounding ZZ -> Python float
------------------------------------+------------------------
Reporter: jdemeyer | Owner:
Type: defect | Status: new
Priority: major | Milestone: sage-6.3
Component: basic arithmetic | Resolution:
Keywords: | Merged in:
Authors: Jeroen Demeyer | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: | Stopgaps:
------------------------------------+------------------------
Description changed by jdemeyer:
Old description:
> Consider the following conversions:
> A. Sage `Integer` -> Python `float` (or Sage `RDF`)
> B. Python `int`/`long` -> Python `float`
> C. Sage `Integer` -> Sage `RR`
> D. C `unsigned long` -> C `double`
>
> Conversion A rounds to zero, while the others round to nearest (by
> default). We should make A consistent with the rest:
>
> {{{
> sage: int(float(ZZ(10^17-1)))
> 99999999999999984
> sage: int(float(int(10^17-1)))
> 100000000000000000
> sage: int(RR(10^17-1))
> 100000000000000000
> sage: cython("""print <unsigned long>(<double> (%sUL))""" % (10^17-1))
> 100000000000000000
> }}}
>
> Currently, `Integer` -> `float` uses `mpz_get_d()` which rounds to zero.
> Doing the conversion via `mpfr` should fix this.
New description:
Consider the following conversions:
A. Sage `Integer` -> Python `float` (or Sage `RDF`)
B. Python `int`/`long` -> Python `float`
C. Sage `Integer` -> Sage `RR`
D. C `unsigned long` -> C `double`
Conversion A rounds to zero, while the others round to nearest (by
default). We should make A consistent with the rest:
{{{
sage: int(float(ZZ(10^17-1)))
99999999999999984
sage: int(float(int(10^17-1)))
100000000000000000
sage: int(RR(10^17-1))
100000000000000000
sage: cython("""print <unsigned long>(<double> (%sUL))""" % (10^17-1))
100000000000000000
}}}
Currently, `Integer` -> `float` uses `mpz_get_d()` which rounds to zero.
We should fix this, similar to #14416.
--
--
Ticket URL: <http://trac.sagemath.org/ticket/16385#comment:3>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.