Metadata-Version: 2.4
Name: pympf
Version: 1.0.5
Summary: An arbitrary precision IEEE-754 implementation in Python
Home-page: https://github.com/florianschanda/PyMPF
Author: Florian Schanda
Author-email: florian@schanda.org.uk
License: GPL-3.0-or-later
Project-URL: Bug Tracker, https://github.com/florianschanda/PyMPF/issues
Project-URL: Documentation, https://florianschanda.github.io/PyMPF/
Project-URL: Source Code, https://github.com/florianschanda/PyMPF
Keywords: ieee-754,float,floating point
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: System :: Emulators
Requires-Python: >=3.8, <4
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-python
Dynamic: summary

# PyMPF
This is an arbitrary precision IEEE-754 floating point implementation.

The main motivation is correctness and test-case generation, so a
number of things might seem a bit strange. This library has a bunch of
limitations and should never be used if you want things to be
fast. [MPFR](https://www.mpfr.org/),
[SoftFloat](https://www.jhauser.us/arithmetic/SoftFloat.html), or
[SymFPU](https://github.com/martin-cs/symfpu) is what you want.

Why "yet another" implementation?
  - This library supports RNA (MPFR does not)
  - This library supports subnormals and infinities (MPFR does, but only with
    tricks)
  - This library uses IEEE or SMTLIB terminology where possible (MPFR tends to
    stick to more "maths" terminology)
  - This library is implemented completely in Python unlike gmpy, mpmath, etc.
  - This library is an independent implementation so can be used to check
    Z3/SymFPU
  - This library uses a stupid but simple algorithm to do rounding

The main use of this library is random test-case generation for
SMT-LIB. It has been used to validate the FP implementations of CVC4,
CVC5, Z3, MathSAT, BitWuzla, SONOLAR, Alt-Ergo, Colibri, goSAT, and
xsat; and has found bugs in all of them ;)

# SMT-LIB random testcase generator
See https://github.com/florianschanda/smtlib_schanda

# Requirements
Python 3.8 or later.

# Documentation
This is very much work in progress and entirely incomplete (I just
started adding this).

* [PyMPF API Documentation](https://florianschanda.github.io/PyMPF/)

# Installation
This package is available on PyPI. To install simply run:

```
$ pip3 install PyMPF
```

# License and Copyright
Everything in this repository is licensed under the GNU GPL v3.

Key copyright holders that contributed to this library are:
* Florian Schanda
* Altran UK Limited
* Zenuity AB
