High Precision Float (HPF) Platform
A pure Python implementation of a high-precision floating-point arithmetic class, designed to handle mathematical operations with enhanced precision beyond standard floating-point limitations.
Features
- High Precision: Arbitrary precision arithmetic for both integer and fractional parts.
- Multiple Initialization: Supports initialization from
str,int, andfloattypes. - Operator Overloading: Full support for
+,-,*,/,//, and comparisons. - Negative Values: Handles negative numbers with proper sign propagation.
- Custom Precision: Optional precision setting for division operations.
- String Representation: Clean string output with automatic trailing zero removal.
Installation
From PyPI
Using pip:
pip install hpf
From Source
- Use Source:
Simply include the hpf.py file in your project and import the class:
from hpf import HighPrecisionFloat # or 'from hpf import hpf, HPF(both OK)'
- Compile Yourself:
There are 2 methods:
- Use setup.py
git clone https://github.com/zprolab/hpf
cd hpf
pip install setuptools
setup.py install # Auto Install!
- Use build (recommend)
git clone https://github.com/zprolab/hpf
cd hpf
rm -rf ./dist
pip install setuptools build
python -m build # Auto Build!
pip install dist/*.whl
Usage
Test
python -m hpf
Initialization
from hpf import HighPrecisionFloat
Abbreviations
from hpf import HighPrecisionFloat as hpf
or
from hpf import HighPrecisionFloat as HPF
or
from hpf import hpf
or
from hpf import HPF
a = HighPrecisionFloat("3.14159265358979323846", precision=25)
b = HighPrecisionFloat(-42.75)
c = HighPrecisionFloat(1000)
Basic Arithmetic
x = HighPrecisionFloat("10.5")
y = HighPrecisionFloat("3.2")
print(x + y) # 13.7
print(x - y) # 7.3
print(x * y) # 33.6
print(x / y) # 3.28125
print(x // y) # 3
Comparison Operations
a = HighPrecisionFloat("100.001")
b = HighPrecisionFloat("100.002")
print(a < b) # True
print(a == b) # False
print(a >= b) # False
Sign Manipulation
num = HighPrecisionFloat("-123.45")
num = -num # Convert to positive
print(str(num)) # 123.45
num = +num # Pos marking (no-op)
print(str(num))
Precision Control
# Set precision during initialization
div1 = HighPrecisionFloat("22", precision=50)
div2 = HighPrecisionFloat("7", precision=50)
print(str(div1/div2))
Method Overview
Core Methods
__init__: Constructor with value parsing_add_abs/_sub_abs: Internal absolute addition/subtraction_mul_abs/_div_abs: Internal absolute multiplication/division_abs_greater: Absolute value comparison
(TODO) Operator Overloads
+,-,*,/,//==,!=, (TODO)<, (TODO)<=, (TODO)>, (TODO)>=
Utility Methods
__str__/__repr__: String representationneg()/pos(): Sign manipulation
Considerations
- Performance: Operations on very large numbers or high precision settings may impact performance.
- Division Precision: The
precisionparameter in division defaults to 10 decimal places. Increase this for more precise results. - Zero Handling: Trailing fractional zeros are automatically removed in string representation.
License
MIT License - See LICENSE file for details.
Author
Chenyun Z.
Created: Oct 27 2024
Last Updated: Feb 18 2025
Something...
PyPI is a great invention to make package-managing easier!
GitHub Action is also a great invention to let we needn't to write python -m build again and again!
Metadata
Release files for hpf 0.3.14.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hpf-0.3.14.1.tar.gz | 6.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hpf-0.3.14.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.9 kB
Release files / hpf-0.3.14.1.tar.gz
| Download URL | hpf-0.3.14.1.tar.gz |
|---|---|
| Size | 6.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
429c7d557a8a77e39494c65cf30830d2d4ef6c2ee74ed6fb505c8a3b2367d282
|
|
BLAKE2b-256 checksum How to use checksums |
1600f2ce02215d05183dcb4406cdec9e657226c503c24793880306eabb49fa62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Release files / hpf-0.3.14.1-py3-none-any.whl
| Download URL | hpf-0.3.14.1-py3-none-any.whl |
|---|---|
| Size | 6.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d472516d1262741db24e5f16443c791eb03e3358aaba50b880d67e9ff6c882b7
|
|
BLAKE2b-256 checksum How to use checksums |
00d2c8f6dea080c9ad00cad7e715ae63d7f7fcdd34b1b42716e43426589660e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|