mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00

svn+ssh://pythondev@svn.python.org/python/trunk ........ r60752 | mark.dickinson | 2008-02-12 22:31:59 +0100 (Tue, 12 Feb 2008) | 5 lines Implementation of Fraction.limit_denominator. Remove Fraction.to_continued_fraction and Fraction.from_continued_fraction ........ r60754 | mark.dickinson | 2008-02-12 22:40:53 +0100 (Tue, 12 Feb 2008) | 3 lines Revert change in r60712: turn alternate constructors back into classmethods instead of staticmethods. ........ r60755 | mark.dickinson | 2008-02-12 22:46:54 +0100 (Tue, 12 Feb 2008) | 4 lines Replace R=fractions.Fraction with F=fractions.Fraction in test_fractions.py. This should have been part of the name change from Rational to Fraction. ........ r60758 | georg.brandl | 2008-02-13 08:20:22 +0100 (Wed, 13 Feb 2008) | 3 lines #2063: correct order of utime and stime in os.times() result on Windows. ........ r60762 | jeffrey.yasskin | 2008-02-13 18:58:04 +0100 (Wed, 13 Feb 2008) | 7 lines Working on issue #1762: Brought ./python.exe -m timeit -s 'from fractions import Fraction; f = Fraction(3, 2)' 'isinstance(3, Fraction); isinstance(f, Fraction)' from 12.3 usec/loop to 3.44 usec/loop and ./python.exe -m timeit -s 'from fractions import Fraction' 'Fraction(3, 2)' from 48.8 usec to 23.6 usec by avoiding genexps and sets in __instancecheck__ and inlining the common case from __subclasscheck__. ........ r60765 | brett.cannon | 2008-02-13 20:15:44 +0100 (Wed, 13 Feb 2008) | 5 lines Fix --enable-universalsdk and its comment line so that zsh's flag completion works. Thanks to Jeroen Ruigrok van der Werven for the fix. ........ r60771 | kurt.kaiser | 2008-02-14 01:08:55 +0100 (Thu, 14 Feb 2008) | 2 lines Bring NEWS.txt up to date from check-in msgs. ........ r60772 | raymond.hettinger | 2008-02-14 02:08:02 +0100 (Thu, 14 Feb 2008) | 3 lines Update notes on Decimal. ........ r60773 | raymond.hettinger | 2008-02-14 03:41:22 +0100 (Thu, 14 Feb 2008) | 1 line Fix decimal repr which should have used single quotes like other reprs. ........ r60785 | jeffrey.yasskin | 2008-02-14 07:12:24 +0100 (Thu, 14 Feb 2008) | 11 lines Performance optimizations on Fraction's constructor. ./python.exe -m timeit -s 'from fractions import Fraction' 'Fraction(3)` 31.7 usec/loop -> 9.2 usec/loop ./python.exe -m timeit -s 'from fractions import Fraction' 'Fraction(3, 2)'` 27.7 usec/loop -> 9.32 usec/loop ./python.exe -m timeit -s 'from fractions import Fraction; f = Fraction(3, 2)' 'Fraction(f)' 31.9 usec/loop -> 14.3 usec/loop ........ r60786 | jeffrey.yasskin | 2008-02-14 08:49:25 +0100 (Thu, 14 Feb 2008) | 5 lines Change simple instances (in Fraction) of self.numerator and self.denominator to self._numerator and self._denominator. This speeds abs() up from 12.2us to 10.8us and trunc() from 2.07us to 1.11us. This doesn't change _add and friends because they're more complicated. ........
93 lines
2.9 KiB
ReStructuredText
93 lines
2.9 KiB
ReStructuredText
|
|
:mod:`fractions` --- Rational numbers
|
|
=====================================
|
|
|
|
.. module:: fractions
|
|
:synopsis: Rational numbers.
|
|
.. moduleauthor:: Jeffrey Yasskin <jyasskin at gmail.com>
|
|
.. sectionauthor:: Jeffrey Yasskin <jyasskin at gmail.com>
|
|
.. versionadded:: 2.6
|
|
|
|
|
|
The :mod:`fractions` module defines an immutable, infinite-precision
|
|
Rational number class.
|
|
|
|
|
|
.. class:: Fraction(numerator=0, denominator=1)
|
|
Fraction(other_fraction)
|
|
Fraction(string)
|
|
|
|
The first version requires that *numerator* and *denominator* are
|
|
instances of :class:`numbers.Integral` and returns a new
|
|
``Fraction`` representing ``numerator/denominator``. If
|
|
*denominator* is :const:`0`, raises a :exc:`ZeroDivisionError`. The
|
|
second version requires that *other_fraction* is an instance of
|
|
:class:`numbers.Fraction` and returns an instance of
|
|
:class:`Rational` with the same value. The third version expects a
|
|
string of the form ``[-+]?[0-9]+(/[0-9]+)?``, optionally surrounded
|
|
by spaces.
|
|
|
|
Implements all of the methods and operations from
|
|
:class:`numbers.Rational` and is immutable and hashable.
|
|
|
|
|
|
.. method:: Fraction.from_float(flt)
|
|
|
|
This classmethod constructs a :class:`Fraction` representing the
|
|
exact value of *flt*, which must be a :class:`float`. Beware that
|
|
``Fraction.from_float(0.3)`` is not the same value as ``Rational(3,
|
|
10)``
|
|
|
|
|
|
.. method:: Fraction.from_decimal(dec)
|
|
|
|
This classmethod constructs a :class:`Fraction` representing the
|
|
exact value of *dec*, which must be a
|
|
:class:`decimal.Decimal`.
|
|
|
|
|
|
.. method:: Fraction.limit_denominator(max_denominator=1000000)
|
|
|
|
Finds and returns the closest :class:`Fraction` to ``self`` that
|
|
has denominator at most max_denominator. This method is useful for
|
|
finding rational approximations to a given floating-point number::
|
|
|
|
>>> Fraction('3.1415926535897932').limit_denominator(1000)
|
|
Fraction(355, 113)
|
|
|
|
or for recovering a rational number that's represented as a float::
|
|
|
|
>>> from math import pi, cos
|
|
>>> Fraction.from_float(cos(pi/3))
|
|
Fraction(4503599627370497L, 9007199254740992L)
|
|
>>> Fraction.from_float(cos(pi/3)).limit_denominator()
|
|
Fraction(1, 2)
|
|
|
|
|
|
.. method:: Fraction.__floor__()
|
|
|
|
Returns the greatest :class:`int` ``<= self``. Will be accessible
|
|
through :func:`math.floor` in Py3k.
|
|
|
|
|
|
.. method:: Fraction.__ceil__()
|
|
|
|
Returns the least :class:`int` ``>= self``. Will be accessible
|
|
through :func:`math.ceil` in Py3k.
|
|
|
|
|
|
.. method:: Fraction.__round__()
|
|
Fraction.__round__(ndigits)
|
|
|
|
The first version returns the nearest :class:`int` to ``self``,
|
|
rounding half to even. The second version rounds ``self`` to the
|
|
nearest multiple of ``Fraction(1, 10**ndigits)`` (logically, if
|
|
``ndigits`` is negative), again rounding half toward even. Will be
|
|
accessible through :func:`round` in Py3k.
|
|
|
|
|
|
.. seealso::
|
|
|
|
Module :mod:`numbers`
|
|
The abstract base classes making up the numeric tower.
|
|
|