Metadata-Version: 2.1
Name: quicktions
Version: 1.11
Summary: Fast fractions data type for rational numbers. Cythonized version of 'fractions.Fraction'.
Home-page: https://github.com/scoder/quicktions
Author: Stefan Behnel
Author-email: stefan_ml@behnel.de
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 6 - Mature
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Cython
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Office/Business :: Financial
Classifier: License :: OSI Approved :: Python Software Foundation License
License-File: LICENSE

Python's ``Fraction`` data type is an excellent way to do exact money
calculations and largely beats ``Decimal`` in terms of simplicity,
accuracy and safety.  Clearly not in terms of speed, though, given
the cdecimal accelerator in Py3.3+.

``quicktions`` is an adaptation of the original ``fractions`` module
(as included in CPython 3.7) that is compiled and optimised with
`Cython <http://cython.org/>`_ into a fast, native extension module.

Compared to the standard library ``fractions`` module in Py2.7 and
Py3.4, ``quicktions`` is currently about 10x faster, and still about
6x faster than the current version in Python 3.5.  It's also about
15x faster than the (Python implemented) ``decimal`` module in Py2.7.

For documentation, see the Python standard library's ``fractions``
module:

https://docs.python.org/3/library/fractions.html

ChangeLog
=========

1.11 (2019-12-??)
-----------------

* Fix ``OverflowError`` when parsing string values with long decimal parts.


1.10 (2019-08-23)
-----------------

* ``hash(fraction)`` is substantially faster in Py3.8+, following an optimisation
  in CPython 3.9 (https://bugs.python.org/issue37863).

* New method ``fraction.as_integer_ratio()``.


1.9 (2018-12-26)
----------------

* Substantially faster normalisation (and therefore instantiation) in Py3.5+.

* ``//`` (floordiv) now follows the expected rounding behaviour when used with
  floats (by converting to float first), and is much faster for integer operations.

* Fix return type of divmod(), where the first item should be an integer.

* Further speed up mod and divmod operations.


1.8 (2018-12-26)
----------------

* Faster mod and divmod calculation.


1.7 (2018-10-16)
----------------

* Faster normalisation and fraction string parsing.

* Add support for Python 3.7.

* Built using Cython 0.29.


1.6 (2018-03-23)
----------------

* Speed up Fraction creation from a string value by 3-5x.

* Built using Cython 0.28.1.


1.5 (2017-10-22)
----------------

* Result of power operator (``**``) was not normalised for negative values.

* Built using Cython 0.27.2.


1.4 (2017-09-16)
----------------

* Rebuilt using Cython 0.26.1 to improve support of Python 3.7.


1.3 (2016-07-24)
----------------

* repair the faster instantiation from Decimal values in Python 3.6

* avoid potential glitch for certain large numbers in normalisation under Python 2.x


1.2 (2016-04-08)
----------------

* change hash function in Python 2.x to match that of ``fractions.Fraction``


1.1 (2016-03-29)
----------------

* faster instantiation from float values

* faster instantiation from Decimal values in Python 3.6


1.0 (2015-09-10)
----------------

* ``Fraction.imag`` property could return non-zero

* parsing strings with long fraction parts could use an incorrect scale


0.7 (2014-10-09)
----------------

* faster instantiation from float and string values

* fix test in Python 2.x


0.6 (2014-10-09)
----------------

* faster normalisation (and thus instantiation)


0.5 (2014-10-06)
----------------

* faster math operations


0.4 (2014-10-06)
----------------

* enable legacy division support in Python 2.x


0.3 (2014-10-05)
----------------

* minor behavioural fixes in corner cases under Python 2.x
  (now passes all test in Py2.7 as well)


0.2 (2014-10-03)
----------------

* cache hash value of Fractions


0.1 (2014-09-24)
----------------

* initial public release


