Skip to main content

Fast approximate math functions: log, exp, sin, cos

Project description

approxmath is a Python library of fast, approximate math functions for operations on NumPy arrays. On average it is 4-5x faster than NumPy and has drop-in replacement functions for log, exp, cos, and sin.

The approximations were originally made by Jacques-Henri Jourdan and are explained on Cambium’s blog.

Performance & Accuracy

approxmath vs NumPy performance

approxmath vs NumPy performance

If your program doesn’t depend on the full precision of floating point operations, the performance-accuracy trade-off will probably be worth it, increasing FLOPS throughput 4-5x. However, in some instances numerical instability will result: for example, approxmath.log(1.0) is nearly, but not exactly 0.0.

Function

Relative Accuracy

ops / second

exp

3e-9

647 M/sec

log

5e-9

896 M/sec

cos

2e-10

470 M/sec

sin

2e-9

463 M/sec

Benchmarks were run on a 2019 MacBook Pro (1.4 GHz Quad-Core Intel Core i5), with Python 3.9.9 and NumPy 1.21.4.

Drop-in Replacement for NumPy

import approxmath.np as npa
import numpy as np

npa.sin(np.array([-np.pi/2, 0.0, np.pi/2]))
# array([-1.,  0.,  1.])

npa.log(np.array([1.0, np.e, np.e**2]))
# array([4.53119942e-09, 1.00000000e+00, 2.00000000e+00])

npa.cos(np.array([-2*np.pi/3, 0.0, 2*np.pi/3]))
# array([-0.5,  1. , -0.5])

npa.exp(np.array([-1., 0., 1.]))
# array([0.36787944, 1.        , 2.71828183])

Drop-in Replacement for Aesara Tensor

import approxmath.aesara as att
import aesara.tensor as tt

Functional equivalents:

Aesara

Approxmath

Relative Speed-Up

tt.exp

att.exp

15x

tt.log

att.log

15x

tt.cos

att.cos

13x

tt.sin

att.sin

13x

Installation

$ pip install approxmath

approxmath is released under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

approxmath-2.0.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

approxmath-2.0.0-py3.9-macosx-10.15-x86_64.egg (11.4 kB view details)

Uploaded Source

File details

Details for the file approxmath-2.0.0.tar.gz.

File metadata

  • Download URL: approxmath-2.0.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.9

File hashes

Hashes for approxmath-2.0.0.tar.gz
Algorithm Hash digest
SHA256 9aa8fe3b5aa62938a95c35a7b2897b0a56d4f60af0fcfed492e28f78fef19a99
MD5 ea1646593ce64ede7aad8d16e197b1b7
BLAKE2b-256 965ef2ac2595876f166ff73e129bdff941de0e3e73c37d3bd399a16ec3fa4172

See more details on using hashes here.

File details

Details for the file approxmath-2.0.0-py3.9-macosx-10.15-x86_64.egg.

File metadata

  • Download URL: approxmath-2.0.0-py3.9-macosx-10.15-x86_64.egg
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.9

File hashes

Hashes for approxmath-2.0.0-py3.9-macosx-10.15-x86_64.egg
Algorithm Hash digest
SHA256 7d384fd6da17bb320231c289db6c5ef03c9ce3b1ec9bc77a8096339fa5a4f93e
MD5 89a4b9a7474b45288d32491bd14a0e99
BLAKE2b-256 d00df29cbbf1d769f53cabb30821287be6c19ae0ffdace193678471f850e37eb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page