Skip to main content

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, and float types.
  • 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

  1. 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)'
  1. 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 representation
  • neg()/pos(): Sign manipulation

Considerations

  1. Performance: Operations on very large numbers or high precision settings may impact performance.
  2. Division Precision: The precision parameter in division defaults to 10 decimal places. Increase this for more precise results.
  3. 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)

Source distribution for hpf 0.3.14.1
File Size Uploaded
hpf-0.3.14.1.tar.gz 6.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hpf 0.3.14.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.3.14.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page