Skip to main content

Drop-in numerical accelerator for Python, powered by Rust.

Project description

RMath

Drop-in numerical accelerator for the Python computing ecosystem.

PyPI CI License Python


RMath is a high-speed accelerator that offloads heavy mathematical workloads to Rust, seamlessly integrating back into Python via PyO3. Array operations, linear algebra, statistics, calculus, autodiff, and signal processing all execute outside the GIL on a Rayon thread pool.

Drop-in accelerator, not a replacement. Interop with NumPy, PyTorch, JAX, pandas, and scikit-learn via zero-copy NumPy bridges.

Install

pip install rmath-py

Pre-built wheels are available for Windows, Linux, and macOS. No Rust toolchain required.

Architecture

rmath
│
├── Core Types
│   ├── Scalar          — atomic f64 math unit
│   ├── Vector          — 1D optimized operations
│   ├── Array           — N-dimensional compute engine
│   ├── Tensor          — autodiff-enabled (forward + reverse mode)
│   ├── Dual            — forward-mode automatic differentiation
│   └── LazyArray       — memory-efficient large-scale data
│
├── Math Domains
│   ├── linalg          — LU, QR, Cholesky, SVD (via faer)
│   ├── stats           — descriptive + inferential statistics
│   ├── geometry        — 3D transforms, quaternions, convex hull
│   ├── signal          — FFT, convolution, spectral analysis
│   └── special         — gamma, beta, error functions
│
├── ML & Autodiff
│   ├── nn              — activations, loss, normalization
│   ├── Tensor          — reverse-mode gradient tracking
│   └── Dual            — forward-mode differentiation
│
├── Utilities
│   ├── constants       — mathematical and physical constants
│   └── loop_range      — lazy pipeline engine
│
└── Interop
    ├── NumPy           — from_numpy / to_numpy
    ├── PyTorch         — from_torch / to_torch
    ├── JAX             — from_jax / to_jax
    └── pandas          — from_dataframe / to_dataframe

Modules

Module Description
rmath.array N-dimensional array with automatic storage tiering (stack / heap / mmap)
rmath.vector 1-D parallel engine — trig, reductions, sorting, filtering, complex numbers
rmath.scalar Precision f64 math — 80+ functions mirroring Python's math module
rmath.linalg Matrix solvers (LU, QR, Cholesky, SVD) via faer
rmath.stats Descriptive and inferential statistics — Welford's algorithm, distributions, regression
rmath.calculus Automatic differentiation (dual numbers), numerical integration, root-finding
rmath.geometry 3D transforms, quaternions, convex hull
rmath.signal FFT, convolution, spectral analysis
rmath.nn Activation functions (GELU, Softmax), loss, normalization layers
rmath.special Gamma, beta, and error functions
rmath.constants Mathematical and physical constants

Domain Examples

1. Scientific Computing / Numerical Analysis

Solving a linear system + residual validation

import rmath as rm

A = rm.Array([[4.0, 2.0], [1.0, 3.0]])
b = rm.Array([[1.0], [2.0]])

x = rm.linalg.solve(A, b)

# Validate: residual should be ~0
residual = A.matmul(x).sub(b).norm_frobenius()
print("Solution:", x)
print("Residual:", residual)

Eigendecomposition + reconstruction check

A = rm.Array([[2.0, 1.0], [1.0, 2.0]])

eigvals, eigvecs = rm.linalg.eigh(A)

# Reconstruct: A = V * Lambda * V^T
Lambda = rm.Array.zeros(2, 2)
Lambda[0, 0] = eigvals[0]
Lambda[1, 1] = eigvals[1]

reconstructed = eigvecs.matmul(Lambda).matmul(eigvecs.t())
error = A.sub(reconstructed).norm_frobenius()
print("Reconstruction error:", error)  # ~1e-16

2. Data Science / Data Analysis

Load, extract columns, correlate

import rmath as rm

data = rm.Array([[25, 50000], [30, 60000], [22, 45000], [35, 80000]])

ages = rm.Vector(data.get_col(0))
income = rm.Vector(data.get_col(1))

print("Mean age:", ages.mean())
print("Income std:", income.std_dev())

corr = rm.stats.correlation(ages, income)
print("Correlation:", corr)  # 0.98

3. Statistics / Research

Descriptive statistics

import rmath as rm

v = rm.Vector([2, 4, 4, 4, 5, 5, 7, 9])

print("Mean:", v.mean())          # 5.0
print("Variance:", v.variance())  # 4.57
print("Std Dev:", v.std_dev())    # 2.14

Hypothesis testing

group1 = rm.Vector([20, 22, 19, 24, 25])
group2 = rm.Vector([30, 29, 35, 32, 31])

t_stat, p_value = rm.stats.t_test_independent(group1, group2)
print("t-stat:", t_stat)   # -6.12
print("p-value:", p_value) # 0.001

Linear regression

x = rm.Vector([1, 2, 3, 4, 5])
y = rm.Vector([2, 4, 5, 4, 5])

result = rm.stats.linear_regression(x, y)
print(f"y = {result['slope']}*x + {result['intercept']}")
print(f"R² = {result['r_squared']}")

4. Financial / Economic Analysis

Return analysis

import rmath as rm

prices = rm.Vector([100, 102, 101, 105, 110])
diffs = prices.diff()  # [2, -1, 4, 5]
print("Price changes:", list(diffs))

Covariance matrix

data = rm.Array([
    [0.01, 0.02, 0.015],
    [0.03, 0.01, 0.02],
    [0.02, 0.025, 0.03],
])

cov = data.covariance()
print("Covariance matrix:", cov)  # 3x3

5. Machine Learning (Autograd)

Gradient computation

import rmath as rm

x = rm.Tensor([1.0, 2.0, 3.0], requires_grad=True)

y = (x * x).sum()
y.backward()

print("Gradients:", x.grad)  # [2.0, 4.0, 6.0]

Simple neural step

w = rm.Tensor.randn(3, requires_grad=True)
x = rm.Tensor([1.0, 2.0, 3.0])

y_pred = (w * x).sum()
target = rm.Tensor([10.0])
loss = ((y_pred - target) * (y_pred - target)).sum()
loss.backward()

print("Loss:", loss.data.to_flat_list()[0])
print("Gradients:", w.grad)

Built-in activations

x = rm.Array([-1.0, 0.0, 2.0])
print(x.relu())  # [0.0, 0.0, 2.0]

6. Calculus / Differentiation

Forward-mode autodiff (dual numbers)

import rmath.calculus as rc

x = rc.Dual(2.0, 1.0)  # value=2, seed=1

y = x.sin() * x.exp()

print("f(2)  =", y.value)       # 6.72
print("f'(2) =", y.derivative)  # 3.64

Numerical integration

import rmath as rm

result = rm.calculus.integrate_simpson(lambda x: x * x, 0, 1, 100)
print("Integral of x² from 0 to 1:", result)  # 0.3333...

7. Signal Processing

1D Convolution (FFT-accelerated)

import rmath as rm

signal = rm.Vector([1, 2, 3, 4])
kernel = rm.Vector([1, 0, -1])

filtered = rm.signal.convolve(signal, kernel, "full")
print(list(filtered))  # [1, 2, 2, 2, -3, -4]

FFT

signal = rm.Vector([1, 0, 0, 0])

fft_result = rm.signal.fft(signal)
print("Magnitudes:", list(fft_result.to_mags()))  # [1, 1, 1, 1]

8. Geometry

Distance & similarity

import rmath as rm

a = rm.Vector([1, 2, 3])
b = rm.Vector([4, 5, 6])

dist = rm.geometry.euclidean_distance(a, b)
cos_sim = rm.geometry.cosine_similarity(a, b)

print("Distance:", dist)            # 5.196
print("Cosine similarity:", cos_sim) # 0.975

9. Interoperability

Scikit-Learn Drop-in (Zero-Copy via __array__)

import rmath as rm
from sklearn.linear_model import LinearRegression

# 1. Generate data entirely in RMath (Rust)
X = rm.Array.randn(100, 1)  # 100 samples, 1 feature
Y = rm.Array.randn(100, 1)  # 100 targets

# 2. Pass RMath arrays natively into Scikit-Learn (Python)
model = LinearRegression()

# This "Just Works" because RMath natively exposes the __array__ protocol!
model.fit(X, Y)

print("Scikit-Learn R² Score:", model.score(X, Y))

NumPy roundtrip

import numpy as np
import rmath as rm

np_arr = np.array([[1.0, 2.0], [3.0, 4.0]])
rm_arr = rm.Array.from_numpy(np_arr)
back = rm_arr.to_numpy()

PyTorch bridge

import torch
import rmath as rm

t = torch.tensor([[1.0, 2.0]])
rm_arr = rm.Array.from_torch(t)
back = rm_arr.to_torch()

pandas integration

import pandas as pd
import rmath as rm

data = rm.Array([[1, 2], [3, 4], [5, 6]])
df = data.to_dataframe(columns=["x", "y"])
back = rm.Array.from_dataframe(df)

Performance

Benchmarked on Windows (CPython 3.13, AMD64). Medians of 20 runs, 3 warmup.

Vector (1-D) — 167/167 tests passed

Operation Size Speedup vs Python
sum_range 100K 6,076x
norm_l1 100K 142x
std_dev 100K 119x
dot 100K 43x
sin (elementwise) 100K 5.8x
sort 100K 4.6x

Average speedup: 50x over pure Python.

Array (N-D) — 161/161 tests passed

Operation Size Speedup vs NumPy
transpose 500x200 65x
from_numpy 500x200 38x
gelu 500x200 18x
tanh 500x200 5x
matmul 200x200 competitive

Average speedup: 3.2x over NumPy.

Tensor (Autograd) — 30/30 tests passed

Operation Size Speedup vs PyTorch
add (forward) 200x200 8.7x
reshape 200x200 6.6x
mul (forward) 200x200 6.2x
sigmoid (forward) 200x200 6.1x
add (backward) 200x200 5.1x
training_step 100x100 3.2x

Average speedup: 3.98x over PyTorch.

Numerical Accuracy

Algorithm Module Guarantee
Kahan compensated summation Vector + Array O(eps) error regardless of N
Welford's online variance Vector + Array Single-pass, no catastrophic cancellation
Parallel Kahan Array (N >= 8K) Chunked Kahan + merge, same accuracy as serial

How it works

Python ─── PyO3 FFI ──> Rust core (rayon + faer)
                            |
                 +----------+----------+
                 v          v          v
              Stack       Heap       Mmap
            (<=32 f64)  (Arc-shared) (lazy I/O)
  • GIL-free: All Vector reductions, operators, norms, sorting, and statistics release the GIL via py.allow_threads(). Tensor division backward pass runs in pure Rust with no Python::with_gil re-entry.
  • Storage tiering: Vectors with 32 or fewer elements live on the stack (zero allocation). Larger vectors use Arc<Vec<f64>> for cheap cloning.
  • Parallelism: Rayon parallel iterators activate at 8,192 elements (unified threshold across Vector and Array). Below that threshold, serial iterators avoid thread-pool overhead.
  • Autograd: Tensor reads data through Arc<RwLock> with no deep clones on .shape, .dtype, forward ops, or backward passes.
  • Interop: to_torch() and to_jax() route through NumPy arrays (single memcpy) instead of N individual Python float allocations.
  • Type stubs: Full .pyi stubs ship with the package for IDE autocompletion and type-checking.

Documentation

Full API reference: ay-developerweb.github.io/rmath/portal/

Contributing

RMath is built in Rust (src/) and exposed to Python via PyO3.

  • Rust source: src/ — core numerical engines
  • Python stubs: rmath/*.pyi — type annotations
  • Benchmarks: benchmarks/ — automated performance suite

License

MIT

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rmath_py-0.1.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

rmath_py-0.1.4-cp314-cp314-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.14Windows x86-64

rmath_py-0.1.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

rmath_py-0.1.4-cp314-cp314-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rmath_py-0.1.4-cp313-cp313-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.13Windows x86-64

rmath_py-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

rmath_py-0.1.4-cp313-cp313-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rmath_py-0.1.4-cp312-cp312-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.12Windows x86-64

rmath_py-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rmath_py-0.1.4-cp312-cp312-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rmath_py-0.1.4-cp311-cp311-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.11Windows x86-64

rmath_py-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rmath_py-0.1.4-cp311-cp311-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rmath_py-0.1.4-cp310-cp310-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.10Windows x86-64

rmath_py-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rmath_py-0.1.4-cp310-cp310-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rmath_py-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rmath_py-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file rmath_py-0.1.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c2361b3fe1f79737e674dff9f8bfad0174f16ab8e7912162f6e110851ae9e3d9
MD5 7cb9037cd8112248933ecc7b795c9cb2
BLAKE2b-256 a5a836ae6493c3159ba0d20ddab67daf6f71a940e193a14a32f3815d9d651a0b

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 9d1770fb7912fa8b7273140e3a48aedb81c10825d90a8a39502ed7d8e0ca5772
MD5 a55b55e64ea42bef6469ac07877d0d74
BLAKE2b-256 8ec68d1a8996f587d609590fb5ed34dff3723f6093aafbf6a1317812bc393295

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad576db8011e4503e7438c6a1c2fe9e943c5674838bcf0f9de65f14faf6e6ef6
MD5 746de61bb093a1363a235bdd1a018f18
BLAKE2b-256 dade811068705c58b5029ca36051738a66d1621771fbd078a283aa3b4afb6b5a

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea84dbed5ad8dd7529d8fe2f56919618831e7b9e469ebac19ddd217d03a088fb
MD5 756538fdba17091085108021b2973909
BLAKE2b-256 f8727152da2e42bf12c56ca41af71be35aea97e6c72bb54a8dbb60f6010e78cb

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9e31a29790e8ca062956740ef71bb6db10379eba4f603003a4ec7985e944e29d
MD5 fabfb8fc8aa9486f8b4086ba9270b44a
BLAKE2b-256 e8edc2ddf020c6bce2e919cec6349ccdcd9e9ac149b9854f0fddf4b1de441982

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c75fa332a187cd6348c383e54d8ec7c70969e14c5544fe82e263b44cd2f13725
MD5 bcb22604ed403aabefacdf789f46dbea
BLAKE2b-256 622fada6f3c1a5fe01deaf6b0e12036c461915a4233b313633f166728930b7ce

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76a94da5f78dbc1d724937558ca4c79cae62aaaa324d7aab3127dc4e79d4f018
MD5 c1c09333a332a09f0e452d5c4b22cd4b
BLAKE2b-256 d99fddadc061b5e53d22434d289885ef345570204b81dc5fb6528c07c1abdc28

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 28cf594e47976137ce434b2d53969cb3db9dbe96a8fc07ab095786fbbc4f1f21
MD5 62797b6173b032adf1b24f0e21b54dd6
BLAKE2b-256 1f51b4a95f0931ff2ba21d28d07955e00318b191cf992dedc36d298179a105fe

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 07b05f77529338e6e17c58b1398358afa710a3c9aeeb8a9f0c6edba96e192604
MD5 c44002d544b95decc367776e2884103a
BLAKE2b-256 ccdc586416e0f8feb4c08d8d1083e496b06da09b755b1657e025ca2113ac5cff

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ab8a81154826e904746722e50bc8145600357a044e5e6d74fed4640a36a806b
MD5 8a3990de3a7034d9ff9ad796a3685734
BLAKE2b-256 3cf6d8360716d7b058f582334aaee00390f6741c5349ff2eb32861378ef751d7

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3139499c147d2a80a859be3ffb23183a6686f3cc8287529d55ebf59ae030c728
MD5 ebcf024f139578ddb8025d6ee5922ebf
BLAKE2b-256 bd2b307101f5ff557bc7b92f3844892e8956d2eaa6b9b49d4437a915642b159b

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 239e09f5e6de75926e8f27136a45e9a2f7b26bfae858c2041633970e2cf9ab15
MD5 aa938ddc14299466e6a417f54bcb0a68
BLAKE2b-256 ec7b78bdad6dd983e25dcffda7f7308f09d84df523b7a4316f04ca71ef25117c

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 521403e42983ba1d5e3a2403de2620ef8e8caa78f5625379b24d0d229809e674
MD5 80ee4d1a271ad1747d5527b106b00f43
BLAKE2b-256 d169ae253c09cc719001257548a482245b737803884dd5d9a94671d6d5b37629

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5305fc9fa81a43cf94d11044ff7b59b32e063b34f477132a59dad511b298a364
MD5 bd81fe03f3c5ef362ade7382d9dab5ab
BLAKE2b-256 f8b55dce1320a2bd9bc95defdb3ec0e80ae99d7831798f85ed00a5ed608a5a5b

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b161b0beefce186e0cf363ade73a1ca0f798b11e437c67278a10cec5c132f56a
MD5 fe56679dce46175b04bcce91f1ba201d
BLAKE2b-256 687241f51c7f84e245e27786c587300c5c3d43e7d200c22a81da063525a0a566

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7685a9a26d06a9049779d3f004f426c80b5eebe980ad91e3004d01da96d7c4e
MD5 cf055c0ca9615cc27b8bd1d85a456463
BLAKE2b-256 c817b0887ce03721c6f7f3558a962dc619f99c7cf96721b24de31e6e53dbf5fc

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0268f609a99aba4ba64aa32a5d47db3c5e01959fa04b5633c1eb65a4cccd507
MD5 601c94dba9fe115231202dbd2eb13ed0
BLAKE2b-256 4c06035fa68293cc73d06e7296bee584b1e6e894e7291128cf220964aca8c144

See more details on using hashes here.

File details

Details for the file rmath_py-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rmath_py-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16ebf13315150fd064c222b3bf090833d6237bb5ceedef6a274bfb00e478d515
MD5 6975caf03dbe1822dd9c4d3d78793eb5
BLAKE2b-256 c842129403823cc8a9b99b2c6b53a5b1eda7bffc02508836a4729de93e1a92cd

See more details on using hashes here.

Supported by

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