Модуль рациональных чисел Pure Python для 2.5 - PullRequest
6 голосов
/ 30 ноября 2008

Кто-нибудь видел такую ​​вещь? Предпочтительны небольшие самодостаточные модули.

Ответы [ 3 ]

9 голосов
/ 01 декабря 2008

Модуль фракций из 2.6 может быть извлечен при необходимости. Возьмите fractions.py, numbers.py и abc.py; все чистые модули Python.

Вы можете получить отдельные файлы отсюда (ветка 2.6, 2.7 не работает): http://hg.python.org/cpython/branches

8 голосов
/ 30 ноября 2008

SymPy - это библиотека математических символов, полностью написанная на Python и полностью поддерживающая рациональные числа. Из учебника :

>>> from sympy import *
>>> a = Rational(1,2)

>>> a
1/2

>>> a*2
1

>>> Rational(2)**50/Rational(10)**50
1/88817841970012523233890533447265625

Существует также GMP для Python ( GMPY ), который, хотя и не является чистым Python, вероятно, более эффективен.

2 голосов
/ 01 декабря 2008

Еще одна вещь, которую стоит попробовать - Rat.py из демонстрационной папки в ветке обслуживания Python 2.5. Если я правильно понимаю, это папа 2,6 fractions. Это один модуль без зависимостей.

>>> from Rat import rat
>>> rat(1) / rat(3)
Rat(1,3)
>>> rat(1, 3) ** 2
Rat(1,9)

ОБНОВЛЕНИЕ : Нет, fractions.py примерно в 2,5 раза быстрее для моей задачи.

...