Ticket #14448: trac_14448_sign_of_mantissa-tm.2.patch

File trac_14448_sign_of_mantissa-tm.2.patch, 2.8 KB (added by tmonteil, 8 years ago)

Patch updated so that it quotes this trac ticket

  • sage/rings/real_double.pyx

    # HG changeset patch
    # User Thierry Monteil <sage at lma.metelu.net>
    # Date 1366017951 -7200
    # Node ID d9c77acd3d151ed23763d5cdb2e44d3f98ba00c5
    # Parent  c8ae9724d3cfad1837a130d50ac5c83a811ec221
    #14448: fix incorrect sign in sign_mantissa_exponent() methods.
    
    diff --git a/sage/rings/real_double.pyx b/sage/rings/real_double.pyx
    a b cdef class RealDoubleElement(FieldElemen 
    10461046
    10471047        EXAMPLES::
    10481048
    1049             sage: a=RDF(exp(1.0)); a
     1049            sage: a = RDF(exp(1.0)); a
    10501050            2.71828182846
    1051             sage: sign,mantissa,exponent=RDF(exp(1.0)).sign_mantissa_exponent()
     1051            sage: sign,mantissa,exponent = RDF(exp(1.0)).sign_mantissa_exponent()
    10521052            sage: sign,mantissa,exponent
    10531053            (1, 6121026514868073, -51)
    1054             sage: sign*mantissa*(2**exponent)==a
     1054            sage: sign*mantissa*(2**exponent) == a
    10551055            True
    10561056
     1057        The mantissa is always a nonnegative number::
     1058
     1059            sage: RDF(-1).sign_mantissa_exponent()
     1060            (-1, 4503599627370496, -52)
     1061
    10571062        TESTS::
    10581063
    10591064            sage: RDF('+0').sign_mantissa_exponent()
  • sage/rings/real_mpfr.pyx

    diff --git a/sage/rings/real_mpfr.pyx b/sage/rings/real_mpfr.pyx
    a b cdef class RealNumber(sage.structure.ele 
    29182918
    29192919        EXAMPLES::
    29202920
    2921             sage: R=RealField(53)
    2922             sage: a=R(exp(1.0)); a
     2921            sage: R = RealField(53)
     2922            sage: a = R(exp(1.0)); a
    29232923            2.71828182845905
    2924             sage: sign,mantissa,exponent=R(exp(1.0)).sign_mantissa_exponent()
    2925             sage: sign,mantissa,exponent
     2924            sage: sign, mantissa, exponent = R(exp(1.0)).sign_mantissa_exponent()
     2925            sage: sign, mantissa, exponent
    29262926            (1, 6121026514868073, -51)
    2927             sage: sign*mantissa*(2**exponent)==a
     2927            sage: sign*mantissa*(2**exponent) == a
    29282928            True
    29292929
     2930        The mantissa is always a nonnegative number (see :trac:`14448`)::
     2931
     2932            sage: RR(-1).sign_mantissa_exponent()
     2933            (-1, 4503599627370496, -52)
     2934
    29302935        We can also calculate this also using `p`-adic valuations::
    29312936
    2932             sage: a=R(exp(1.0))
    2933             sage: b=a.exact_rational()
     2937            sage: a = R(exp(1.0))
     2938            sage: b = a.exact_rational()
    29342939            sage: valuation, unit = b.val_unit(2)
    29352940            sage: (b/abs(b), unit, valuation)
    29362941            (1, 6121026514868073, -51)
    cdef class RealNumber(sage.structure.ele 
    29612966            mantissa = Integer()
    29622967            exponent = mpfr_get_z_exp(mantissa.value, self.value)
    29632968
    2964         return sign, mantissa, Integer(exponent)
     2969        return sign, sign*mantissa, Integer(exponent)
    29652970
    29662971    def exact_rational(self):
    29672972        """