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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Source

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