Skip to main content

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

Project description

RMath Logo

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.

Phase 3: Intelligence & Fusion (v0.1.5) 🚀

The latest release introduces Single-Pass Parallel Kernels for optimizers and elementwise math.

Component Operation Gain vs Eager/PyTorch
Adam .step() 3.3x faster vs PyTorch
SGD .step() (with momentum) 2.0x faster vs PyTorch
Linear Fusion (x * 2 + 1) * 3 2.3x faster
Fused Reduction sum(sin(x)) 1.2x faster

Unified Lazy Engine (Loop Fusion)

RMath now supports deferred execution for both memory-based and disk-based arrays. Chain your operations with .lazy() to execute them in a single parallel pass through memory.

import rmath.array as ra

# 1. In-Memory Loop Fusion (3 passes -> 1 pass)
a = ra.randn(2000, 2000)
result = a.lazy().mul(2.0).sin().exp().execute()

# 2. Disk-Streaming Fusion (Math applied during load)
result = ra.LazyArray.open("data.csv").sigmoid().add(1.0).load()

Real-World Data Pipeline — rmath vs NumPy (v0.1.5)

Benchmarked on Windows (CPython 3.13, AMD64). 5 million row financial dataset.

Pipeline Step rmath Time rmath Mem NumPy Time NumPy Mem Speedup
Data Generation 0.30s 153 MB 1.31s 137 MB 4.3× faster
Data Cleaning 0.15s 0.5 MB 0.17s 4.8 MB 1.1× faster
Feature Engineering 0.07s 76 MB 0.12s 76 MB 1.8× faster
Descriptive Stats 0.26s 0.07 MB 0.25s 0.03 MB Comparable
Correlation Analysis 0.038s 0.04 MB 0.43s 0.13 MB 11.2× faster
Segmentation 0.47s 120 MB 0.93s 38 MB 2.0× faster
Linear Signal 0.16s 0.03 MB 0.13s 0.00 MB NumPy slight edge

rmath wins on 5 of 7 pipeline stages. Data cleaning uses 9× less memory than NumPy (0.5 MB vs 4.8 MB) thanks to zero-allocation filter_where. Full benchmark scripts in benchmarks/pipeline/.

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/

Author

Ayomide Adediran (@Ay-developerweb)

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.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

rmath_py-0.1.5-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

rmath_py-0.1.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

rmath_py-0.1.5-cp314-cp314-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rmath_py-0.1.5-cp313-cp313-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.13Windows x86-64

rmath_py-0.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

rmath_py-0.1.5-cp313-cp313-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rmath_py-0.1.5-cp312-cp312-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.12Windows x86-64

rmath_py-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rmath_py-0.1.5-cp312-cp312-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rmath_py-0.1.5-cp311-cp311-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.11Windows x86-64

rmath_py-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rmath_py-0.1.5-cp311-cp311-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rmath_py-0.1.5-cp310-cp310-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.10Windows x86-64

rmath_py-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rmath_py-0.1.5-cp310-cp310-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rmath_py-0.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rmath_py-0.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a3c958b5438286ece2f54f57017a73d9e72d5fb21006e17626f05e79137bde7
MD5 90605dc39d5ef4b124053e08b8d77688
BLAKE2b-256 56bb3147e5b99d7ac9436c7ef136f629af9f58bab5af596a380f8357f7426b75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 aaf59ca4addd67b9f351568d7b5dafb84efe377b41c74b3d520216e19a2759b2
MD5 833ef092af415f77dd2c8a8149caa8b2
BLAKE2b-256 1641e24cbc438d7a168072dc81d6d76a82eff11aa0c2eac346fcafbcd3101c99

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d3215f8be628421f1eda1b028a4e5d35f543b1e59ae8fdb59147b161787718a1
MD5 6325fd60bdebb38dd2009d9adbbac527
BLAKE2b-256 aff7846c21611208dce52fcb0cd7bc3d39a7325a40014167914aaee20b04d4a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a09af5fd88a52a7ca365f67c5b9055f47bc174c5807f67699d4eee1ac62294d
MD5 9807c61848813f3bf605e85d8ea27c31
BLAKE2b-256 df2397e1aacbf3739bb981bc5a770d30b17c56f0d9850bb3e2d7a8836576ae7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 27d1975c099d47e8d3c9781206d3581041142ad2eb0cf41d25ed1705a40057cd
MD5 11e15e2804205cf28273fc8e5f2cbbf4
BLAKE2b-256 8f4daa2c9c52395e1b4936b3350ab21af63d979740b49afe20339e1e39dcbc95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e2f84c2f90eecdbf3add5e464c2322e9364d42d20e88ff1b601b599b28465538
MD5 576cdcda1b7f75bcbde1567913aeb3f4
BLAKE2b-256 c917d76db1b2f2eb293fa69a75c713e6113a023c5e4ebc57868459824bb32503

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 541fb85beed6db00da75b38936602983cb22c79c7a3fc1cbe4eb205528d76d76
MD5 90cd9503fdae03e9ac89a62a7d2abd24
BLAKE2b-256 f1c7bb3f2d787b1433d1878749848a15bbc89ff2f24adac757ef62e4c425f1c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4b87a88e65024258e420d5663f32969ee95393bd9ec06d48b504bc7e36a637f4
MD5 3688f5cb220568e449d081245c7f8ae8
BLAKE2b-256 9fb91cf896d5c5e3dd5b680562f8d2968a684ba2dc19f7775c0185d456071bd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54617f7f2949827698eadeecd9cdb03339c1e20a11ecb1a13f7507348fdb866e
MD5 8337e5786211e6972094626613ba31c9
BLAKE2b-256 c5ea2a898bba4f69d67b6664157071154449458c0d3b4afaf551a8f46bb3540b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 706b4bfa27cb4609e31bf4e314770069a715634dd5d6b9f7682f0477b06ff71a
MD5 a8a3e530066defe5caaf3876e0ac7ade
BLAKE2b-256 f290c26019af7cbadd7336371742ef3bf44f48e205c62de93c6b053751fd8ace

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bd17c7bb742abb3dbf710ea26b2f4e75f9936bb45b880f969dcd8034e5b05f8c
MD5 c94fbe5016b9b8fa3a38ef4820151dcd
BLAKE2b-256 7a9b71281cfd428244257718f33e663a3aa0714b3c9efd1873ea080e218ea099

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1299e2b3c0b240db40bbc9f9005fb6d37ba6f86b2ac12e127699f0024ac43dcd
MD5 fd1beae293f6bd41dfd3b4d85658ef1a
BLAKE2b-256 dfa9af8e9c269909ecc2a5e049c1f1bfe7a8a9958cd413f467cd8aed747fbd74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 236d2f7334e0d7e98453402f344835dda9ebc098335017009959c8c984226891
MD5 a772fc06848de72d62f29f3801363e2f
BLAKE2b-256 1b49b44266199931918865d5d45bd9a67dbc87e507c8c6b47cf0d61ace491887

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 427618d7de41b7462247155955eab5bb7e978e30111dadb86cd211dfcf363bef
MD5 586da5849ea8326fd3d0e3db34856f98
BLAKE2b-256 c6f9900a1ae646a8c8bdaf8a56582ec522d7fd324c6787ada578cfb5c3fe1cae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3cef493a131377cd46c7cbfb231f4e7827033c47803d3e5809babafbac51cc1d
MD5 a6c3c1f91ef07408019600e1644204b5
BLAKE2b-256 c2e477fe446520e3e3c84387ff817e6896d230915179c24b50dc799b9da2c5f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3d098e7d07e441640a83e354e9abf1e8d57f627a53fa0b27554b97a51a2b870
MD5 683248af158a9e29f90c5c91f9620bf3
BLAKE2b-256 d4e3e6ac43aee10818f895d4dbb3ecf9106f0c79966fa0b56ff5906249c517d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 23a8bd989382349acced9a8c57913e8d5c4cb6cadbcd745557d926c60bc5dc3a
MD5 170b97bdeb6f43f696a3ebf1fd71d44e
BLAKE2b-256 82635e5e3e9299f8a6555954255c1b752f9a9bf21f35a28be7cfe69fbc03e6c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rmath_py-0.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd4f3bc9dcf42195fa4f6000435b0872b6d2d00c7a752e13becb16114743e1e9
MD5 a1bccd32f854c66466bece6693e64d3b
BLAKE2b-256 5d83ff1e089545c376169936bee913cabac52dbda9a93c84d051ba78c4cde82e

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