.. _development-python-bigfloat:
任意精度演算ライブラリ bigfloat
=================================
C 言語で書かれた任意精度浮動小数点演算のライブラリ
`GNU MPFR Library `_
を Python から使用できるライブラリの 1 つに
`bigfloat `_
パッケージがある。
Ubuntu へのインストール
-------------------------
bigfloat パッケージのインストールには
MPFR ライブラリが必要なため注意。
.. code-block:: console
$ sudo apt install libmpfr-dev
$ pip install bigfloat
使用例
--------------
.. code-block:: python
>>> from bigfloat import BigFloat
>>> BigFloat(2)
BigFloat.exact('2.00000000000000000000000000000000000', precision=113)
>>> BigFloat.fromhex('0x1.8p+0')
BigFloat.exact('1.50000000000000000000000000000000000', precision=113)
>>> '{:a}'.format(BigFloat.fromhex('0x1.8p+0'))
'0x1.8p+0'
>>> '{:a}'.format(BigFloat.fromhex('0x1.fb15fa86d92b228b6596fdb93fp+0') + BigFloat.fromhex('0x1.22738c56c3ecf61e3f58931ec2p+0'))
'0x3.1d8986dd9d1818a9a4ef90d801p+0'
>>> '{:a}'.format(BigFloat.fromhex('0x1.fb15fa86d92b228b6596fdb93fp+0') - BigFloat.fromhex('0x1.22738c56c3ecf61e3f58931ec2p+0'))
'0xd.8a26e30153e2c6d263e6a9a7dp-4'
>>> '{:a}'.format(BigFloat.fromhex('0x1.fb15fa86d92b228b6596fdb93fp+0') * BigFloat.fromhex('0x1.22738c56c3ecf61e3f58931ec2p+0'))
'0x2.3f53c6a82f11712dad9c5fd34db6p+0'
>>> '{:a}'.format(BigFloat.fromhex('0x1.fb15fa86d92b228b6596fdb93fp+0') / BigFloat.fromhex('0x1.22738c56c3ecf61e3f58931ec2p+0'))
'0x1.bef0545a14fda729d96fa6624b59p+0'