Skip to main content

Portable mixed-precision math, linear-algebra, & retrieval library with 2000+ SIMD kernels for x86, Arm, RISC-V, LoongArch, Power, & WebAssembly

Project description

NumKong for Python

NumKong for Python is the main high-level SDK in the project. It targets the gap between numpy and low-level native kernels: you keep buffer-protocol interoperability and shape-aware outputs, but you stop giving up mixed precision, widened accumulators, packed reuse, and backend-specific optimizations every time you leave float64. It combines NumPy-friendly buffers with native mixed-precision kernels, zero-copy tensor views, packed and symmetric matrix operations, sparse helpers, geometric mesh alignment, and MaxSim. The API feels NumPy-shaped with familiar scalar, batched, and all-pairs entrypoints, while Tensor keeps shape, dtype, and strides visible through a memoryview-backed container. Low-precision dtypes (BFloat16, Float8, Float6, packed bits) flow through the same API, and dense, packed, and symmetric kernels release the GIL around native work.

Ecosystem Comparison

Feature NumKong NumPy/SciPy PyTorch
Operation families dots, distances, binary, probability, geospatial, curved, mesh, sparse, MaxSim, elementwise, reductions, cast, trig dots, distances, elementwise, reductions, some probability via cdist dots, distances, elementwise, reductions
Precision BFloat16 through sub-byte — Float8, Float6, Int4, packed bits; automatic widening; Kahan summation; 0 ULP in Float32/Float64 Float16, partial BFloat16; no auto-widening; standard accuracy Float16, BFloat16, partial Float8; explicit AMP required; standard accuracy
Runtime SIMD dispatch auto-selects best ISA per-thread at runtime on x86, ARM, RISC-V compile-time only CPU: compile-time; CUDA: runtime
Packed matrix, GEMM-like pack once, reuse across query batches np.dot/@ — no persistent packing torch.mm — no persistent distance-oriented packing
Symmetric kernels, SYRK-like skip duplicate pairs, up to 2x speedup for self-distance pdist computes one triangle; cdist recomputes both X @ X.T recomputes both triangles
Output parameter out= Yes — all major entrypoints Yes — most ufuncs and functions; SciPy: some functions only Yes for torch.mm, torch.matmul; No for torch.cdist
Fast CPython calling convention Yes — direct METH_FASTCALL Yes — vectorcall in 2.0+ No — tensor dispatch overhead
GIL release batched, packed, and symmetric kernels some ops only most ops

Quickstart

import numpy as np
import numkong as nk

a, b = np.random.randn(1536).astype(np.float32), np.random.randn(1536).astype(np.float32)
dot = nk.dot(a, b)  # widened accumulation, not same-dtype
print(dot)

Installation

From PyPI:

python -m pip install numkong

From a local checkout:

python -m pip install .

Quick runtime check:

python -c "import numkong as nk; print(nk.get_capabilities())"

Wheel Compatibility and Building from Source

Pre-built wheels are available on PyPI for Linux (x86_64, aarch64, riscv64, plus i686, ppc64le, s390x), macOS (x86_64, arm64), and Windows (AMD64, ARM64). Python 3.9 through 3.14 is supported, including free-threading variants (3.13t, 3.14t). Every wheel is built with NK_DYNAMIC_DISPATCH=1, so a single wheel covers all CPU generations on a given architecture.

When building from source, the compiler requirements depend on the platform. On macOS x86 only AVX2 is available; on macOS ARM NEON is always present, but SME requires Apple M4+ with Xcode 16+ (AppleClang 16+). RISC-V builds require Clang and LLD because GCC lacks zvfh, zvfbfwma, and zvbb support. On Windows, MSVC 19.44+ (Visual Studio 2022 17.14+) is recommended for full AVX-512 with FP16/BF16/VNNI. Build parallelism is controlled by NK_BUILD_PARALLEL, which defaults to min(cpu_count, 4) and should be lowered in memory-constrained containers. There is no OpenMP dependency. Python-side parallelism uses concurrent.futures with GIL-free kernels.

NK_BUILD_PARALLEL=2 pip install . --no-build-isolation

Dot Products

Dot products are their own family because storage type, conjugation rules, and output widening matter.

import numpy as np
import numkong as nk

a = (np.random.randn(256) + 1j * np.random.randn(256)).astype(np.complex64)
b = (np.random.randn(256) + 1j * np.random.randn(256)).astype(np.complex64)

dot = nk.dot(a, b)   # numpy.dot(a, b)
vdot = nk.vdot(a, b) # numpy.vdot(a, b)

print(dot, vdot)

Real low-precision inputs can also be routed through explicit dtype tags when the storage buffer itself is raw bytes.

Dense Distances

The dense distance entrypoints cover sqeuclidean, euclidean, and angular. The first important difference from NumPy or SciPy is that the accumulator policy is not forced to match the storage dtype.

import numpy as np
import numkong as nk

a = np.random.randn(768).astype(np.float16)
b = np.random.randn(768).astype(np.float16)

sqeuclidean = nk.sqeuclidean(a, b)
euclidean = nk.euclidean(a, b)
angular = nk.angular(a, b)

For float16, a naive same-dtype implementation is exactly the kind of path that loses precision or widens too late. NumKong's API makes the widening policy part of the kernel contract.

Output Control: out=, dtype=, and out_dtype=

Most distance and dot-product entrypoints accept out=, dtype=, and out_dtype= keyword arguments. Passing them avoids dynamic memory allocations for temporary objects.

import numpy as np
import numkong as nk

queries = np.random.randn(100, 768).astype(np.float32)
database = np.random.randn(100, 768).astype(np.float32)

# Pre-allocated output with out=
out = nk.zeros((100,), dtype="float32")
nk.sqeuclidean(queries, database[:100], out=out)  # writes in-place, returns None

# Explicit input dtype for raw byte buffers
raw = np.frombuffer(some_bytes, dtype=np.uint16)
nk.dot(raw, raw, dtype=nk.bfloat16)  # reinterpret uint16 as bf16

# Output dtype override
nk.euclidean(queries[0], database[0], out_dtype="float32")  # accumulate in f64, downcast result

When out= is provided, the function writes results in-place and returns None. The out array must be pre-allocated with the correct shape and a supported dtype. For custom float types (bfloat16, float16, float8_e4m3, float8_e5m2, float6_e2m3, float6_e3m2), type objects are preferred over strings — they are faster to dispatch and provide IDE autocomplete:

nk.dot(a, b, dtype=nk.bfloat16) # works faster
nk.dot(a, b, dtype="bfloat16")  # works a bit slower

Set Similarity

Packed-binary metrics operate on packed bits. That is why the right NumPy equivalent uses np.packbits, not bool arrays fed to scalar Python code.

import numpy as np
import numkong as nk

a_bits = np.random.randint(0, 2, size=256, dtype=np.uint8)
b_bits = np.random.randint(0, 2, size=256, dtype=np.uint8)
a, b = np.packbits(a_bits), np.packbits(b_bits)

hamming = nk.hamming(a, b, dtype="uint1")
jaccard = nk.jaccard(a, b, dtype="uint1")

Integer set Jaccard works on sorted ascending arrays of integer identifiers. Both inputs must be sorted in ascending order for correct results.

set_a = np.array([1, 3, 5, 7, 9], dtype=np.uint32)  # must be sorted ascending
set_b = np.array([3, 5, 8, 9, 10], dtype=np.uint32)  # must be sorted ascending
jaccard_sets = nk.jaccard(set_a, set_b) # |A ∩ B| / |A ∪ B|
assert 0.0 < jaccard_sets < 1.0, "|A ∩ B| / |A ∪ B| should be in (0, 1)"

Probability Metrics

Probability divergences deserve their own section because they are not just "one more distance".

import numpy as np
import numkong as nk

p = np.array([0.2, 0.3, 0.5], dtype=np.float32)
q = np.array([0.1, 0.3, 0.6], dtype=np.float32)

kl_forward, kl_reverse = nk.kullbackleibler(p, q), nk.kullbackleibler(q, p)
assert kl_forward != kl_reverse, "KLD is asymmetric"

js_forward, js_reverse = nk.jensenshannon(p, q), nk.jensenshannon(q, p)
np.testing.assert_allclose(js_forward, js_reverse, atol=1e-6)  # JSD is symmetric

Geospatial Metrics

Geospatial kernels take four coordinate arrays. Inputs are in radians. Outputs are in meters.

import numpy as np
import numkong as nk

# Statue of Liberty (40.6892°N, 74.0445°W) → Big Ben (51.5007°N, 0.1246°W)
liberty_lat, liberty_lon = np.array([0.7101605100], dtype=np.float64), np.array([-1.2923203180], dtype=np.float64)
big_ben_lat, big_ben_lon = np.array([0.8988567821], dtype=np.float64), np.array([-0.0021746802], dtype=np.float64)

vincenty = nk.vincenty(liberty_lat, liberty_lon, big_ben_lat, big_ben_lon)    # ≈ 5,589,857 m (ellipsoidal, baseline)
haversine = nk.haversine(liberty_lat, liberty_lon, big_ben_lat, big_ben_lon)  # ≈ 5,543,723 m (spherical, ~46 km less)

# Vincenty in f32 — drifts ~2 m from f64
liberty_lat32 = liberty_lat.astype(np.float32)
liberty_lon32 = liberty_lon.astype(np.float32)
big_ben_lat32 = big_ben_lat.astype(np.float32)
big_ben_lon32 = big_ben_lon.astype(np.float32)
vincenty_f32 = nk.vincenty(liberty_lat32, liberty_lon32, big_ben_lat32, big_ben_lon32)  # ≈ 5,589,859 m (+2 m drift)

Curved Metrics

Curved-space kernels use an extra metric tensor or inverse covariance and should not be mixed into the Euclidean section.

import numpy as np
import numkong as nk

# Complex bilinear form: aᴴ M b
a = (np.ones(16) + 1j * np.zeros(16)).astype(np.complex64)
b = (np.zeros(16) + 1j * np.ones(16)).astype(np.complex64)
m = np.eye(16, dtype=np.complex64)
bilinear = nk.bilinear(a, b, m)

# Real Mahalanobis distance: √((a−b)ᵀ M⁻¹ (a−b))
x = np.ones(32, dtype=np.float32)
y = np.full(32, 2.0, dtype=np.float32)
inv_cov = np.eye(32, dtype=np.float32)
mahalanobis = nk.mahalanobis(x, y, inv_cov)

Scalar Types and Low-Precision Formats

NumKong exposes two different low-precision stories in Python. It exposes Python scalar objects for a few formats. And it exposes tensor dtypes for the broader buffer-oriented path.

The six scalar types have stable payload sizes even though Python object headers are not:

Type Bits Bytes Range Inf NaN
nk.float16 1+5+10 2 ±65504 yes yes
nk.bfloat16 1+8+7 2 ±3.4×10³⁸ yes yes
nk.float8_e4m3 1+4+3 1 ±448 no yes
nk.float8_e5m2 1+5+2 1 ±57344 yes yes
nk.float6_e2m3 1+2+3 1 ±7.5 no no
nk.float6_e3m2 1+3+2 1 ±28 no no

The Bits column shows sign + exponent + mantissa bit counts. The Bytes column is the stable payload size; float8_* and float6_* both store 1 byte because the sub-byte formats are padded to byte alignment.

The full object footprint is interpreter-dependent. Use sys.getsizeof(nk.float16(1.0)) if you need the heap footprint of the Python wrapper object itself. Use Tensor.itemsize and Tensor.nbytes for the stable payload sizes of array storage.

ml_dtypes matters here because NumKong explicitly interoperates with the formats that NumPy still does not model well. The test suite compares bfloat16, float8_e4m3, float8_e5m2, float6_e2m3, and float6_e3m2 behavior against ml_dtypes where that comparison is meaningful.

Promotion is intentional. Mixed exotic floats are routed through wider compute types rather than pretending a same-width accumulator is good enough.

ml_dtypes Interoperability

NumKong accepts ml_dtypes arrays directly — no .view(np.uint8) workaround needed:

import ml_dtypes
a = np.random.randn(100, 768).astype(np.float32).astype(ml_dtypes.bfloat16)
b = np.random.randn(100, 768).astype(np.float32).astype(ml_dtypes.bfloat16)
result = nk.cdist(a, b, "dot")  # just works

NumKong scalars also work as NumPy dtype specifiers:

arr = np.array([1.0, 2.0, 3.0], dtype=nk.bfloat16)
float(arr[0])  # → 1.0

Type name mapping between the two libraries:

ml_dtypes NumKong Status
ml_dtypes.bfloat16 nk.bfloat16 / "bfloat16" Identical format
ml_dtypes.float8_e4m3 nk.float8_e4m3 / "e4m3" Identical (IEEE E4M3)
ml_dtypes.float8_e4m3fn nk.float8_e4m3 / "e4m3" Identical (E4M3FN = no inf)
ml_dtypes.float8_e5m2 nk.float8_e5m2 / "e5m2" Identical format
ml_dtypes.float6_e2m3fn nk.float6_e2m3 / "e2m3" Identical (MX E2M3)
ml_dtypes.float6_e3m2fn nk.float6_e3m2 / "e3m2" Identical (MX E3M2)
ml_dtypes.float8_e4m3fnuz Rejected: different bias, NaN, and zero
ml_dtypes.float8_e5m2fnuz Rejected: different NaN and zero encoding
ml_dtypes.float8_e4m3b11fnuz Rejected: bias=11, incompatible encoding
ml_dtypes.float8_e8m0fnu Not supported: exponent-only MX scale format
ml_dtypes.float8_e3m4 Not supported: no NumKong kernel
ml_dtypes.float4_e2m1fn Not supported: 4-bit MX float
ml_dtypes.int4 "int4" Compatible via buffer protocol
ml_dtypes.uint4 "uint4" Compatible via buffer protocol
ml_dtypes.int2 Not supported
ml_dtypes.uint2 Not supported

Tensor Objects and Buffer Interop

Tensor is a memoryview-backed object with NumPy-like metadata. It is the central container for strided views, transpose, reshape, flatten, and axis reductions.

import numpy as np
import numkong as nk

t = nk.Tensor(np.arange(12, dtype=np.float32).reshape(3, 4))

print(t.shape, t.dtype, t.ndim, t.strides, t.itemsize, t.nbytes)
print(np.asarray(t))      # zero-copy array view when layout allows it
print(t.T.shape)          # transposed Tensor view
print(t.reshape(2, 6).shape)
print(t.flatten().shape)

# Slicing — row, column, and scalar access
row0 = t[0, :]            # first row, shape (4,)
col2 = t[:, 2]            # third column, strided view, shape (3,)
val  = t[1, 2]            # scalar element access → 6.0

# Reductions compose with sliced views
idx = col2.argmin()        # index of the minimum in the third column
mn, i0, mx, i1 = col2.minmax()

The important layout rules are:

  • Tensor preserves shape and byte strides.
  • Transpose and slicing can produce non-contiguous views.
  • General reductions accept those views.
  • Matrix-style packed kernels require row-contiguous left operands.
  • Packed and symmetric outputs require C-contiguous out buffers.

Memory Layout Requirements

API family Input requirement Output requirement
Dense distances (dot, euclidean, etc.) Rows must be contiguous (strides[last] <= itemsize). Strided rows (sliced columns) are rejected. out= can have any stride along dim 0, but inner dim must be contiguous.
cdist Same as dense distances out= must be rank-2 with shape (a.count, b.count)
Elementwise (scale, blend, fma) Arbitrary strides (strided views are supported) out= must match input shape; strides are preserved
Packed matrix (dots_packed) Left operand: rank-2, contiguous rows, no negative strides Output: C-contiguous with expected dtype
Symmetric (dots_symmetric) Contiguous rows out=: C-contiguous square matrix
Tensor reductions (sum, min, argmin, etc.) Arbitrary strides (strided views supported) N/A (returns scalar or reduced tensor)

All-Pairs APIs and cdist

cdist is the NumPy/SciPy-shaped all-pairs entrypoint. It handles rectangular matrix pairs and symmetric self-distance cases.

import numpy as np
import numkong as nk

queries = np.random.randn(100, 768).astype(np.float32)
database = np.random.randn(10_000, 768).astype(np.float32)

pairwise = nk.angular(queries, database[:100])             # rectangular broadcasted pairwise call
all_pairs = nk.cdist(queries, database, metric="angular")  # scipy.spatial.distance.cdist analogue

assert np.asarray(pairwise).shape == (100, 100)
assert np.asarray(all_pairs).shape == (100, 10_000)

The intended large-scale parallel model for packed and symmetric kernels is external partitioning with row ranges, not a hidden threads= argument.

Elementwise Operations

Elementwise arithmetic and fused operations are their own family. They share the tensor infrastructure but should not be collapsed into the reduction or matrix sections.

import numpy as np
import numkong as nk

a = np.arange(8, dtype=np.float32)
b = np.arange(8, dtype=np.float32)[::-1].copy()

scaled = nk.scale(a, alpha=2.0, beta=1.0)     # 2 * a + 1
blended = nk.blend(a, b, alpha=0.25, beta=0.75)
fused = nk.fma(a, b, a, alpha=1.0, beta=1.0)  # a * b + a

assert np.asarray(scaled).shape == (8,)
assert np.asarray(fused).shape == (8,)

Moments Reductions

Moments reductions return (sum, sum_of_squares). The key property is that NumKong does not force you into same-storage accumulation.

import numpy as np
import numkong as nk

x = np.full(4096, 255, dtype=np.uint8)

nk_sum, nk_sumsq = nk.moments(nk.Tensor(x))
naive_sum = np.sum(x, dtype=np.uint8)      # overflows immediately
naive_sumsq = np.sum(x * x, dtype=np.uint8) # also overflows

print(nk_sum, nk_sumsq, naive_sum, naive_sumsq)
assert nk_sum > int(naive_sum)
assert nk_sumsq > int(naive_sumsq)

Same-width accumulation is a bad default for low-precision storage.

Min/Max Reductions

Min/max reductions are in a separate section because they cover strided reduction cases. NumKong provides SIMD-accelerated strided reductions that are not common in other libraries.

import numpy as np
import numkong as nk

matrix = nk.Tensor(np.array([
    [ 3.0,  0.0, 7.0],
    [ 1.0,  2.0, 5.0],
    [ 4.0, -1.0, 6.0],
], dtype=np.float32))

second_column = matrix[:, 1]  # strided view into a row-major Nx3 tensor

idx = second_column.argmin()
mn, i0, mx, i1 = second_column.minmax()

assert idx == 2
assert int(i0) == 2
assert float(np.asarray(mn)) == -1.0

Fresh measurement for the rewritten docs: on an Apple M2 Pro, np.argmin(matrix[:, 1]) on a row-major 2,000,000 x 3 float32 array took about 1.63 ms median. The equivalent NumKong Tensor(... )[:, 1].argmin() took about 0.67 ms median. That is about 2.45x faster on this strided reduction case.

Sparse Operations and Intersections

Sparse helpers cover both sorted-index intersections and weighted sparse dot products.

import numpy as np
import numkong as nk

idx_a, idx_b = np.array([1, 3, 5, 7], dtype=np.uint32), np.array([3, 4, 5, 8], dtype=np.uint32)
intersection_size = nk.intersect(idx_a, idx_b) # len(np.intersect1d(idx_a, idx_b))
assert intersection_size == 2, "indices 3 and 5"

val_a, val_b = np.array([1.0, 2.0, 3.0, 4.0], dtype=np.float32), np.array([5.0, 6.0, 7.0, 8.0], dtype=np.float32)
sparse_dot = nk.sparse_dot(idx_a, val_a, idx_b, val_b)
assert sparse_dot > 0, "weighted dot over shared indices"

Packed Matrix Kernels for GEMM-Like Workloads

Packed matrix kernels are the right tool when the right-hand side is reused across many query batches. This is the GEMM-like story.

import numpy as np
import numkong as nk

left = np.random.randn(128, 768).astype(np.float32)
right = np.random.randn(10_000, 768).astype(np.float32)

right_packed = nk.dots_pack(right, dtype="float32")  # pack once, reuse many times
scores = nk.dots_packed(left, right_packed)          # equivalent to left @ right.T

assert scores.shape == (128, 10_000)
assert right_packed.nbytes == nk.PackedMatrix.packed_size(10_000, 768, dtype="float32")

Important runtime rules from the current implementation:

  • a must be rank-2
  • a must have contiguous rows
  • negative strides are rejected for these matrix kernels
  • out, when provided, must be C-contiguous with the expected dtype
  • start_row and end_row split the left operand rows

The arithmetic advantages are:

  • one-time packing of B
  • one-time internal layout conversion and depth padding
  • norm reuse for angulars_packed and euclideans_packed
  • no repeated scan of the original right-hand-side layout

Packing itself does not require aligned caller buffers. The packed object owns its internal payload and handles the layout under the hood.

Tensor @ PackedMatrix is also supported and maps to the same packed dot-product path.

Symmetric Kernels for SYRK-Like Workloads

Symmetric kernels solve a different problem from packed cross-matrix kernels. They compute self-similarity or self-distance matrices. This is the SYRK-like story.

import numpy as np
import numkong as nk

vectors = np.random.randn(1024, 768).astype(np.float32)
out = nk.zeros((1024, 1024), dtype="float64")

nk.dots_symmetric(vectors, out=out, start_row=0, end_row=256)
nk.dots_symmetric(vectors, out=out, start_row=256, end_row=512)

assert out.shape == (1024, 1024)

This family has different economics from packed GEMM-like work. It avoids duplicate (i, j) and (j, i) evaluations. It is naturally partitioned by row windows of one square output.

angulars_symmetric and euclideans_symmetric also benefit from reuse of dot-product-derived work inside the symmetric sweep. That is why these APIs are faster than a nested Python loop over angular(a[i], a[j]).

Geometric Mesh Alignment

Mesh alignment returns a structured result object. The current implementation exposes rotation, scale, rmsd, a_centroid, and b_centroid.

import numpy as np
import numkong as nk

source = np.array(
    [[0.0, 0.0, 0.0],
     [1.0, 0.0, 0.0],
     [0.0, 1.0, 0.0]],
    dtype=np.float32,
)

result = nk.kabsch(source, source.copy())
assert np.asarray(result.rotation).shape == (3, 3)
assert float(np.asarray(result.scale)) == 1.0

# Umeyama with known 2x scaling
target = source * 2.0
result = nk.umeyama(source, target)
assert float(np.asarray(result.rmsd)) < 1e-6, "umeyama should recover exact alignment"
assert abs(float(np.asarray(result.scale)) - 2.0) < 0.01, "umeyama should recover 2x scale"

That field-level check is the right style for this API family. It tells the reader exactly what the result object owns.

MaxSim and ColBERT-Style Late Interaction

MaxSim is the late-interaction primitive used by systems such as ColBERT. It is not generic matrix multiplication.

import numpy as np
import numkong as nk

queries = np.random.randn(32, 128).astype(np.float32)
documents = np.random.randn(192, 128).astype(np.float32)

q = nk.maxsim_pack(queries, dtype="float32")
d = nk.maxsim_pack(documents, dtype="float32")
score = nk.maxsim_packed(q, d)

assert np.isfinite(score)
assert q.nbytes == nk.MaxSimPackedMatrix.packed_size(32, 128, dtype="float32")

Capabilities, GIL Behavior, and Parallel Partitioning

Capability detection is explicit:

import numkong as nk

caps = nk.get_capabilities()
print({k: v for k, v in caps.items() if v})

The current implementation releases the GIL around the native dense metric calls and around the packed and symmetric matrix kernels. The repository also has threading tests for packed and symmetric row-range partitioning.

GEMM-like packed work and SYRK-like symmetric work should be documented differently:

import concurrent.futures
import numpy as np
import numkong as nk

left = np.random.randn(4096, 768).astype(np.float32)
right = np.random.randn(8192, 768).astype(np.float32)
packed = nk.dots_pack(right, dtype="float32")
out = nk.zeros((4096, 8192), dtype="float64")  # out must be pre-allocated with correct shape and dtype

def packed_chunk(start, end):
    nk.dots_packed(left, packed, out=out, start_row=start, end_row=end) # split left rows against one shared packed RHS

with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
    for start in range(0, 4096, 1024):
        pool.submit(packed_chunk, start, min(start + 1024, 4096))
import concurrent.futures
import numpy as np
import numkong as nk

vectors = np.random.randn(4096, 768).astype(np.float32)
out = nk.zeros((4096, 4096), dtype="float64")  # out must be pre-allocated with correct shape and dtype

def symmetric_chunk(start, end):
    nk.dots_symmetric(vectors, out=out, start_row=start, end_row=end) # split row windows of one square output

with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
    for start in range(0, 4096, 1024):
        pool.submit(symmetric_chunk, start, min(start + 1024, 4096))

OpenMP and other native schedulers still matter in lower layers. For Python, the intended user-facing story is external partitioning around the GIL-free kernels you actually use.

Addressing External Memory

NumKong implements the Python buffer protocol for zero-copy interop with NumPy, PyTorch, and other buffer-aware libraries. Two additional primitives cover pointer-level workflows: data_ptr reads the integer address out of any Tensor, and from_pointer() wraps any integer address back into one.

data_ptr returns the raw address, suitable for passing into ctypes, CUDA, or any FFI boundary. from_pointer(address, shape, dtype, *, strides=None, owner=None) creates a non-owning Tensor view. The optional owner keeps the source object alive for the lifetime of the view.

import numpy as np
import numkong as nk

# Round-trip through an integer address
matrix = nk.zeros((3, 4), dtype='float32')
address = matrix.data_ptr
matrix_view = nk.from_pointer(address, (3, 4), 'float32', owner=matrix)

# Wrap a NumPy array with zero copies
embeddings = np.random.randn(1024).astype(np.float32)
embeddings_view = nk.from_pointer(embeddings.ctypes.data, (1024,), 'float32', owner=embeddings)
nk.dot(embeddings, embeddings_view)  # same underlying data

PyTorch tensors already implement the buffer protocol, so most functions accept them directly. For explicit pointer-level control, or to go the other direction, the same primitives apply:

import torch

query = torch.randn(512)
nk.dot(query, query)  # buffer protocol, zero copy

# Explicit pointer wrap
query_view = nk.from_pointer(query.data_ptr(), tuple(query.shape), 'float32', owner=query)

# NumKong → PyTorch: 1D via buffer protocol, N-D via numpy bridge
flat = torch.frombuffer(memoryview(nk_tensor), dtype=torch.float32)
shaped = torch.as_tensor(np.asarray(nk_tensor))

CUDA unified memory, pinned buffers, and mmap'd files all work the same way — any CPU-accessible pointer is valid.

import ctypes, mmap

# CUDA unified memory (ensure CPU accessibility first)
cudart = ctypes.CDLL("libcudart.so")
unified_ptr = ctypes.c_void_p()
cudart.cudaMallocManaged(ctypes.byref(unified_ptr), 4096, 1)
cudart.cudaDeviceSynchronize()
unified = nk.from_pointer(unified_ptr.value, (1024,), 'float32')

# Memory-mapped file
with open("data.bin", "r+b") as f:
    mapping = mmap.mmap(f.fileno(), 0)
    mapped = nk.from_pointer(ctypes.addressof(
        ctypes.c_char.from_buffer(mapping)),
        (1024,), 'float32', owner=mapping)

NumKong: Mixed Precision for All

Portable mixed-precision math, linear-algebra, & retrieval library with 2'000+ SIMD kernels for x86, Arm, RISC-V, LoongArch, Power, & WebAssembly, leveraging rare algebraic transforms with both 1D & 2D registers like AMX & SME, covering 15+ numeric types from 4-bit integers & 6-bit floats to 128-bit complex numbers, validated against 118-bit extended-precision baselines with saturation, casting, & rounding edge-case coverage, in a 5-100x smaller binary than other BLAS-like alternatives, co-designed with Tensor abstractions in C++, Python, Rust, JavaScript, GoLang, & Swift.

NumKong banner

Latency, Throughput, & Numerical Stability

Most libraries return dot products in the same type as the input — Float16 × Float16 → Float16, Int8 × Int8 → Int8. This leads to quiet overflow: a 2048-dimensional i8 dot product can reach ±10 million, but i8 maxes out at 127. NumKong promotes to wider accumulators — Float16 → Float32, BFloat16 → Float32, Int8 → Int32, Float32 → Float64 — so results stay in range.

Input NumPy + OpenBLAS PyTorch + MKL JAX NumKong
░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░
f64 2.0 gso/s, 1e-15 err 0.6 gso/s, 1e-15 err 0.4 gso/s, 1e-14 err 5.8 gso/s, 1e-16 err
f32 1.5 gso/s, 2e-6 err 0.6 gso/s, 2e-6 err 0.4 gso/s, 5e-6 err 7.1 gso/s, 2e-7 err
bf16 0.5 gso/s, 1.9% err 0.5 gso/s, 1.9% err 9.7 gso/s, 1.8% err
f16 0.2 gso/s, 0.25% err 0.5 gso/s, 0.25% err 0.4 gso/s, 0.25% err 11.5 gso/s, 0.24% err
e5m2 0.7 gso/s, 4.6% err 0.5 gso/s, 4.6% err 7.1 gso/s, 0% err
i8 1.1 gso/s, overflow 0.5 gso/s, overflow 0.5 gso/s, overflow 14.8 gso/s, 0% err

Single 2048-d dot product on Intel Sapphire Rapids, single-threaded. Each cell shows gso/s, mean relative error vs higher-precision reference. gso/s = Giga Scalar Operations per Second — a more suitable name than GFLOP/s when counting both integer and floating-point work. NumPy 2.4, PyTorch 2.10, JAX 0.9.

A fair objection: PyTorch and JAX are designed for throughput, not single-call latency. They lower execution graphs through XLA or vendored BLAS libraries like Intel MKL and Nvidia cuBLAS. So here's the same comparison on a throughput-oriented workload — matrix multiplication:

Input NumPy + OpenBLAS PyTorch + MKL JAX NumKong
░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░
f64 65.5 gso/s, 1e-15 err 68.2 gso/s, 1e-15 err ~14.3 gso/s, 1e-15 err 8.6 gso/s, 1e-16 err
f32 140 gso/s, 9e-7 err 145 gso/s, 1e-6 err ~60.5 gso/s, 1e-6 err 37.7 gso/s, 4e-7 err
bf16 851 gso/s, 1.8% err ~25.8 gso/s, 3.4% err 458 gso/s, 3.6% err
f16 0.3 gso/s, 0.25% err 140 gso/s, 0.37% err ~26.1 gso/s, 0.35% err 103 gso/s, 0.26% err
e5m2 0.4 gso/s, 4.6% err ~26.4 gso/s, 4.6% err 398 gso/s, 0% err
i8 0.4 gso/s, overflow 50.0 gso/s, overflow ~0.0 gso/s, overflow 1279 gso/s, 0% err

Matrix multiplication (2048 × 2048) × (2048 × 2048) on Intel Sapphire Rapids, single-threaded. gso/s = Giga Scalar Operations per Second, same format. NumPy 2.4, PyTorch 2.10, JAX 0.9, same versions.

For f64, compensated "Dot2" summation reduces error by 10–50× compared to naive Float64 accumulation, depending on vector length. For f32, widening to Float64 gives 5–10× lower error. The library ships as a relatively small binary:

Package Size Parallelism & Memory Available For
PyTorch + MKL 705 MB Vector & Tile SIMD, OpenMP Threads, Hidden Allocs Python, C++, Java
JAX + jaxlib 357 MB Vector SIMD, XLA Threads, Hidden Allocs Python
NumPy + OpenBLAS 30 MB Vector SIMD, Built-in Threads, Hidden Allocs Python
mathjs 9 MB No SIMD, No Threads, Many Allocs JS
NumKong 5 MB Vector & Tile SIMD, Your Threads, Your Allocs 7 languages

Every kernel is validated against 118-bit extended-precision baselines with per-type ULP budgets across log-normal, uniform, and Cauchy input distributions. Tests check triangle inequality, Cauchy-Schwarz bounds, NaN propagation, overflow detection, and probability-simplex constraints for each ISA variant. Results are cross-validated against OpenBLAS, Intel MKL, and Apple Accelerate. A broader throughput comparison is maintained in NumWars.

Quick Start

Language Install Compatible with Guide
C / C++ CMake, headers, & prebuilt Linux, macOS, Windows, Android include/README.md
Python pip install Linux, macOS, Windows python/README.md
Rust cargo add Linux, macOS, Windows rust/README.md
JS npm install & import Node.js, Bun, Deno & browsers javascript/README.md
Swift Swift Package Manager macOS, iOS, tvOS, watchOS swift/README.md
Go go get Linux, macOS, Windows via cGo golang/README.md

What's Inside

NumKong covers 17 numeric types — from 6-bit floats to 64-bit complex numbers — across dozens of operations and 30+ SIMD backends, with hardware-aware defaults: Arm prioritizes f16, x86 prioritizes bf16.

Language Bindings

Operation C 99 & C++ 23 Python Rust JavaScript Swift GoLang
Vector Ops
Dot Product
Spatial Metric
Set Similarity
Geospatial ·
Mesh Alignment · · ·
Sparse Products · · ·
Probability Divergences ·
Curved Spaces · · ·
Many-to-Many Vector Ops
"Dots" Products
"Spatials" Metrics
"Sets" Similarities ·
MaxSim Scoring ·
Scalar Ops
Cast · ·
Reduce · · ·
Each · · ·
Trigonometry · · ·

Design Decisions

  • Avoid loop unrolling and scalar tails.
  • Don't manage threads and be compatible with any parallelism models.
  • Don't manage memory and be compatible with arbitrary allocators & alignment.
  • Don't constrain ourselves to traditional BLAS-like Matrix Multiplication APIs.
  • Don't throw exceptions and pass values by pointers.
  • Prefer saturated arithmetic and avoid overflows, where needed.
  • Cover most modern CPUs with flexible dispatch and wait for them to converge with GPUs.

The rest of this document unpacks the functionality and the logic behind the design decisions.

Auto-Vectorization & Loop Unrolling

Most "optimized SIMD code" is a 2–4x unrolled data-parallel for-loop over f32 arrays with a serial scalar tail for the last few elements:

float boring_dot_product_f32(float const *a, float const *b, size_t n) {
    __m256 sum0 = _mm256_setzero_ps(), sum1 = _mm256_setzero_ps();
    size_t i = 0;
    for (; i + 16 <= n; i += 16) {
        sum0 = _mm256_fmadd_ps(_mm256_loadu_ps(a + i), _mm256_loadu_ps(b + i), sum0);
        sum1 = _mm256_fmadd_ps(_mm256_loadu_ps(a + i + 8), _mm256_loadu_ps(b + i + 8), sum1);
    }
    float result = _mm256_reduce_add_ps(_mm256_add_ps(sum0, sum1));
    for (; i < n; i++) result += a[i] * b[i]; // serial tail
    return result;
}

This kind of unrolling has been a common request for NumKong, but the library avoids it by design.

Modern CPUs already "unroll" in hardware. Out-of-order engines with reorder buffers of 320–630 entries (Zen 4: 320, Golden Cove: 512, Apple Firestorm: ~630) can keep a dozen of loop iterations in-flight simultaneously. The physical register file is much larger than the ISA-visible architectural registers — Skylake has ~180 physical integer registers behind 16 architectural GPRs, and ~168 physical vector registers behind 32 architectural ZMMs. The register renaming unit maps the same zmm0 in iteration N and iteration N+1 to different physical registers, extracting cross-iteration parallelism automatically — exactly the benefit that source-level unrolling was historically supposed to provide.

Unrolling works against NumKong's goals. Every unrolled copy is a distinct instruction in the binary. With 1,500+ kernel endpoints across 30+ backends, even 2x unrolling would inflate the .text section by megabytes — directly impacting install size for Python wheels, NPM packages, and Rust crates. Larger loop bodies also increase instruction-cache and micro-op-cache pressure; Agner Fog also recommends:

"avoid loop unrolling where possible in order to economize the use of the micro-op cache".

A loop that spills out of the uop cache falls back to the slower legacy decoder, making the "optimized" version slower than the compact original. For a header-only library, unrolling also compounds compilation time: register allocation is NP-hard (reducible to graph coloring), and unrolling multiplies the number of simultaneously live ranges the allocator must consider, increasing compile time super-linearly across every translation unit that includes the headers.

Serial tails are a correctness hazard. The leftover elements after the last full SIMD chunk run through a scalar loop that silently drops FMA fusion, compensated accumulation, and saturating arithmetic — producing results with different numerical properties than the SIMD body. NumKong often uses masked loads instead (_mm512_maskz_loadu_ps on AVX-512, predicated svld1_f32 on SVE), processing every element through the same arithmetic path regardless of alignment. It's not exactly orthogonal to loop-unrolling, but makes a different kernel layout more compatible.

The gains come from elsewhere. On Intel Sapphire Rapids, NumKong was benchmarked against auto-vectorized code compiled with GCC 12. GCC handles single-precision float well, but struggles with _Float16 and other mixed-precision paths:

Kind GCC 12 f32 GCC 12 f16 NumKong f16 f16 improvement
Inner Product 3,810 K/s 192 K/s 5,990 K/s 31 x
Cosine Distance 3,280 K/s 336 K/s 6,880 K/s 20 x
Euclidean Distance ² 4,620 K/s 147 K/s 5,320 K/s 36 x
Jensen-Shannon Divergence 1,180 K/s 18 K/s 2,140 K/s 118 x

NumKong's f16 kernels are faster than GCC's f32 output — not because of unrolling, but because they use F16C conversion instructions, widening FMA pipelines, and compensated accumulation that compilers do not synthesize from a plain for loop. The same story repeats for bf16, e4m3, i8, and i4: these types require algorithmic transformations — lookup tables, algebraic domain shifts, asymmetric VNNI tricks — that live beyond the reach of auto-vectorization.

Parallelism & Multi-Threading

BLAS libraries traditionally manage their own thread pools. OpenBLAS spawns threads controlled by OPENBLAS_NUM_THREADS, Intel MKL forks its own OpenMP runtime via MKL_NUM_THREADS, and Apple Accelerate delegates to GCD (Grand Central Dispatch). This works in isolation — but the moment your application adds its own parallelism (joblib, std::thread, Tokio, GCD, OpenMP), you get thread oversubscription: MKL spawns 8 threads inside each of your 8 joblib workers, producing 64 threads on 8 cores, thrashing caches and stalling on context switches. The Python ecosystem has built entire libraries just to work around this problem, and scikit-learn's documentation devotes a full page to managing the interaction between joblib parallelism and BLAS thread pools.

NumKong takes a different position: the numerics layer should not own threads. Modern hardware makes the "spawn N threads and split evenly" model increasingly untenable:

  • Server-grade CPUs have hundreds of cores split across sockets, chiplets, and tiles, resulting in dozens of physical NUMA domains with vastly different memory access latencies. A thread pool that ignores NUMA topology will spend more time on remote memory stalls than on arithmetic.
  • Consumer-grade CPUs pack heterogeneous Quality-of-Service core types on the same die — Intel P-cores and E-cores run at different frequencies and sometimes support different ISA extensions. A naive work-split gives equal chunks to fast and slow cores, and the whole task stalls waiting for the slowest partition.
  • Real-time operating systems in robotics and edge AI cannot afford to yield the main thread to a BLAS-managed pool. These systems need deterministic latency, not maximum throughput.

Instead, NumKong exposes row-range parameters that let the caller partition work across any threading model. For GEMM-shaped dots_packed, this is straightforward — pass a slice of A's rows and the full packed B to compute the corresponding slice of C. For SYRK-shaped dots_symmetric, explicit start_row / end_row parameters control which rows of the symmetric output matrix a given thread computes. The GIL (Global Interpreter Lock) is released around every kernel call, making NumKong compatible with concurrent.futures, multiprocessing, or any other parallelism model:

import concurrent.futures, numkong as nk, numpy as np

vectors, num_threads = np.random.randn(1000, 768).astype(np.float32), 4
output = nk.zeros((1000, 1000), dtype="float32")

def compute_slice(t):
    start = t * (len(vectors) // num_threads)
    end = start + len(vectors) // num_threads if t < num_threads - 1 else len(vectors)
    nk.dots_symmetric(vectors, out=output, start_row=start, end_row=end)

with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as pool:
    list(pool.map(compute_slice, range(num_threads)))

For users who want a ready-made low-latency thread pool without the oversubscription baggage of OpenMP, we built ForkUnion — a minimalist fork-join library for C, C++, and Rust that avoids mutexes, CAS atomics, and dynamic allocations on the critical path, with optional NUMA pinning on Linux.

Memory Allocation & Management

BLAS libraries typically allocate internal buffers during GEMM — OpenBLAS packs matrices into L2/L3-sized panels via per-thread buffer pools backed by mmap or shmget. This hidden allocation has caused real problems: 14 lock/unlock pairs per small GEMM call throttling 12-thread scaling to 2x, silently incorrect results from thread-unsafe allocation in np.dot, and deadlocks after fork() due to mutex state not being reset in child processes. The BLASFEO library was created specifically for embedded model-predictive control where malloc during computation is unacceptable.

NumKong never allocates memory. Following the same philosophy as Intel MKL's packed GEMM API (cblas_sgemm_pack_get_sizecblas_sgemm_packcblas_sgemm_compute), NumKong exposes typed three-phase interfaces — nk_dots_packed_size_*nk_dots_pack_*nk_dots_packed_* — where the caller owns the buffer and NumKong only fills it.

The reason GEMM libraries repack matrices at all is that every hardware target has a different preferred layout — Intel AMX expects B in a VNNI-interleaved tile format (pairs of BFloat16 values packed into DWORDs across the K dimension), while Arm SME wants column vectors for its FMOPA outer-product instructions. Since GEMM is $O(N^3)$ and repacking is $O(N^2)$, the cost is asymptotically free — but the allocation and locking overhead is not.

NumKong's nk_dots_pack_* family performs five transformations beyond simple reordering:

  • Type pre-conversion — mini-floats (E4M3, BFloat16, etc.) are upcast to the compute type once during packing, not on every GEMM call. This amortizes the conversion cost across all rows of A that will be multiplied against the packed B.
  • SIMD depth padding — rows are zero-padded to the SIMD vector width (16 for AVX-512 Float32, 64 for AVX-512 Int8), allowing inner loops to load without boundary checks.
  • Per-column norm precomputation — squared norms ($|b_j|^2$) are computed and stored alongside the packed data, so distance kernels (angulars_packed, euclideans_packed) can reuse them without a separate pass.
  • ISA-specific tile layout — AMX packing interleaves BFloat16 pairs into 16×32 tiles matching TDPBF16PS expectations; SME packing arranges vectors at SVE granularity for FMOPA outer products; generic backends use simple column-major with depth padding.
  • Power-of-2 stride breaking — when the padded row stride is a power of 2, one extra SIMD step of padding is added. Power-of-2 strides cause cache set aliasing where consecutive rows map to the same cache sets, effectively shrinking usable L1/L2 capacity — stride-256 traversals can be ~10x slower than stride-257.
import numkong as nk, numpy as np

right_matrix = np.random.randn(1000, 768).astype(np.float16)
right_packed = nk.dots_pack(right_matrix, dtype=nk.float16)                        # pack once
for query_batch in stream: results = nk.dots_packed(query_batch, right_packed)    # reuse many times

Why Not Just GEMM? The Evolution of Matrix Multiplication APIs

The classic BLAS GEMM computes $C = \alpha A B + \beta C$ for Float32/Float64 matrices. It covers many use cases, but LLM inference, vector search, and quantum simulation expose three ways in which the traditional interface falls short.

Frozen weights justify separating packing from computation. During LLM inference, a very large share of GEMM calls use a static weight matrix — weights don't change after loading. This makes offline repacking a one-time cost amortized over the entire serving lifetime: NVIDIA's TurboMind explicitly splits GEMM into offline weight packing (hardware-aware layout conversion) and online mixed-precision computation, and Intel MKL's packed GEMM API exposes the same two-phase pattern. NumKong's nk_dots_pack_*nk_dots_packed_* path follows this philosophy — pack the weight matrix once, reuse it across all queries.

Mixed precision demands more than an epilogue addition. Modern transformer layers operate in a precision sandwich: weights stored in BFloat16/Float8, GEMM accumulated in Float32, output downcast back to BFloat16 for the next layer. Between GEMM calls, LayerNorm or RMSNorm re-normalizes hidden states, so the next layer is often much closer to an angular or normalized similarity computation than to a plain raw dot product. nGPT takes this to its logical conclusion: all vectors live on the unit hypersphere, and every matrix-vector product is a pure angular distance. This means many "GEMM" workloads in production are semantically closer to many-to-many angular distance computation — which is exactly what NumKong's angulars_packed and euclideans_packed kernels compute directly, fusing norm handling and type conversion into a single pass.

The GEMM-for-distances trick has real costs. A common shortcut in vector search is to decompose pairwise Euclidean distance as $|a - b|^2 = |a|^2 + |b|^2 - 2 \langle a, b \rangle$, precompute norms, and call sgemm for the inner-product matrix. Both FAISS and scikit-learn use this approach — and both document its limitations. Scikit-learn's docs warn of "catastrophic cancellation" in the subtraction; this has caused real bugs with ~37% error on near-identical Float32 vectors. The $O(N^2)$ postprocessing pass (adding norms, square roots, divisions) is not free either — NVIDIA's RAFT measured a 20–25% speedup from fusing it into the GEMM epilogue. Even FAISS switches to direct SIMD when the query count drops below 20. The standard BLAS interface was never designed for sub-byte types either — no vendor supports Int4, and sub-byte types cannot even be strided without bit-level repacking.

Some operations need more than GEMM + postprocessing. NumKong implements several GEMM-shaped operations where the "epilogue" is too complex for a simple addition:

  • Bilinear forms ($a^T C b$) in quantum computing compute a scalar expectation value — the naive approach materializes an $N$-dimensional intermediate vector $Cb$, but NumKong's typed nk_bilinear_* kernels stream through rows of $C$ with nested compensated dot products, never allocating beyond registers. For complex-valued quantum states, where the intermediate would be a 2N-element complex vector, the savings double.
  • MaxSim scoring for ColBERT-style late-interaction retrieval computes $\sum_i \min_j \text{angular}(q_i, d_j)$ — a sum-of-min-distances across token pairs. A GEMM would produce the full $M \times N$ similarity matrix, but NumKong's typed nk_maxsim_packed_* kernels fuse a coarse Int8-quantized screening with full-precision angular refinement on winning pairs only, packing both query and document matrices to use all 4 SME tiles as accumulators. PLAID and maxsim-cpu have independently shown that dedicated MaxSim kernels can outperform the GEMM decomposition by 5–10x.

NumKong treats these as first-class operations — dots_packed, euclideans_packed, angulars_packed, typed nk_bilinear_* kernels, and typed nk_maxsim_packed_* kernels — rather than decomposing everything into GEMM + postprocessing.

Precision by Design: Saturation, Rounding, & Float6 Over Float8

Floating-point arithmetic on computers is not associative: $(a + b) + c \neq a + (b + c)$ in general, and upcasting to wider types is not always sufficient. NumKong makes operation-specific decisions about where to spend precision and where to economize, rather than applying one rule uniformly.

Saturation depends on the operation. A reduction over a 4 GB array of i8 values contains ~4 billion elements — but Int32 wrapping overflow occurs after just ~17 million Int8 summands ($127 \times 16.9\text{M} > 2^{31}$). Reductions in NumKong use saturating arithmetic because the input can be arbitrarily long. Matrix multiplications don't need saturation because GEMM depth rarely exceeds tens of thousands — well within Int32 range. x86 provides no saturating 32-bit SIMD add (only byte/word variants), so NumKong implements saturation via overflow detection with XOR-based unsigned comparison on platforms that lack native support.

Square roots & special math ops are platform-specific. Angular distance requires $1/\sqrt{|a|^2 \cdot |b|^2}$ — but the cost of computing this normalization varies dramatically across hardware. x86 VSQRTPS takes ~12 cycles, followed by VDIVPS at ~11 cycles — totalling ~23 cycles for a precise 1/sqrt(x). The VRSQRT14PS alternative starts with a 14-bit estimate in ~4 cycles, then one Newton-Raphson iteration ($y = y \cdot (1.5 - 0.5 x y^2)$, ~4 more cycles) reaches full Float32 precision — roughly 3x faster. ARM's FRSQRTE provides only ~8 bits, requiring two Newton-Raphson iterations to match. NumKong selects the iteration count per platform so the final ULP bound is consistent across ISAs, rather than exposing different precision to different users.

E2M3 and E3M2 can outperform E4M3 and E5M2. 6-bit MX formats can be scaled to exact integers, enabling integer accumulation that avoids E5M2's catastrophic cancellation risk. This works because E2M3's narrower exponent range means every representable value maps to an integer after a fixed shift — no rounding, no cancellation. See Mini-Floats for a worked example.

Every such decision — saturation thresholds, Newton-Raphson iteration counts, integer vs floating-point paths — is documented per operation and per type in the module-specific READMEs.

Calling Convention & Error Handling

NumKong never throws exceptions, never sets errno, and never calls setjmp/longjmpexceptions bloat call sites with unwind tables and are invisible to C, Python, Rust, Swift, Go, and JavaScript FFI; errno is thread-local state whose storage model varies across C runtimes. Instead, every function takes inputs as const pointers, writes outputs through caller-provided pointers, and returns void:

void nk_dot_f32(nk_f32_t const *a, nk_f32_t const *b, nk_size_t n, nk_f64_t *result);
void nk_dot_bf16(nk_bf16_t const *a, nk_bf16_t const *b, nk_size_t n, nk_f32_t *result);

Pointers eliminate implicit casts for types with platform-dependent storage — this is why they matter for half-precision types. nk_f16_t and nk_bf16_t resolve to native __fp16 / __bf16 when available but fall back to unsigned short otherwise — if passed by value, the compiler would silently apply integer promotion instead of preserving the bit pattern. Passing by pointer keeps the representation opaque: kernels read raw and convert explicitly when needed, so the same binary works regardless of whether the compiler understands _Float16.

The only place that requires error signaling is dynamic dispatch — looking up the best kernel for the current CPU at runtime. When no kernel matches, the dispatcher sets the capabilities mask to zero and fills the function pointer with a family-specific error stub such as nk_error_dense_ from c/dispatch.h and c/numkong.c that writes 0xFF into the output — NaN for floats, −1 for signed integers, TYPE_MAX for unsigned.

Compile-Time and Run-Time Dispatch

NumKong provides two dispatch mechanisms. Compile-time dispatch selects the fastest kernel supported by the target platform at build time — thinner binaries, no indirection overhead, but requires knowing your deployment hardware. Run-time dispatch compiles every supported kernel into the binary and picks the best one on the target machine via nk_capabilities() — one pointer indirection per call, but a single binary runs everywhere. The run-time path is common in DBMS products (ClickHouse), web browsers (Chromium), and other upstream projects that ship to heterogeneous fleets.

All kernel names follow the pattern nk_{operation}_{type}_{backend}. If you need to resolve the best kernel manually, use nk_find_kernel_punned with a nk_kernel_kind_t, nk_dtype_t, and a viable capabilities mask:

nk_metric_dense_punned_t angular = 0;
nk_capability_t used = nk_cap_serial_k;
nk_find_kernel_punned(
    nk_kernel_angular_k, nk_f32_k,            // what functionality? for which input type?
    nk_capabilities(),                        // which capabilities are viable?
    (nk_kernel_punned_t *)&angular, &used);   // the kernel found and capabilties used!

The first call to nk_capabilities() initializes the dispatch table; all subsequent calls are lock-free.

Numeric Types

Float64 & Float32: IEEE Precision

Float64 — NumKong uses compensated summation that tracks numerical errors separately. On serial paths, we use Neumaier's algorithm (1974), an improvement over Kahan-Babuška that correctly handles cases where added terms are larger than the running sum, achieving $O(1)$ error growth instead of $O(n)$. On SIMD paths with FMA support, we implement the Dot2 algorithm (Ogita-Rump-Oishi, 2005), maintaining separate error compensators for both multiplication and accumulation via TwoProd and TwoSum operations. The accuracy differences are visible in the benchmark tables above — compensated Float64 suits scientific computing where numerical stability matters more than raw speed.

Float32 — SIMD implementations load Float32 values, upcast to Float64 for full-precision multiplication and accumulation, then downcast only during finalization. This avoids catastrophic cancellation at minimal cost since modern CPUs have dedicated Float64 vector units operating at nearly the same throughput as Float32. The same compensated accumulation strategy applies to Mahalanobis distance, bilinear forms, and KL/JS divergences.

// Dot2 TwoProd: Capture multiplication rounding error
h = a * b;
r = fma(a, b, -h);  // Extracts rounding error

// Dot2 TwoSum: Capture addition rounding error
t = sum + product;
e = (sum - t) + product;  // Compensator term

BFloat16 & Float16: Half Precision

BFloat16 — not an IEEE 754 standard type, but widely adopted for AI workloads. BFloat16 shares Float32's 8-bit exponent but truncates the mantissa to 7 bits, prioritizing dynamic range over precision (±3.4×10³⁸ with coarser granularity). On old CPUs, upcasting BFloat16 to Float32 requires just an unpack and left-shift by 16 bits (essentially free); on newer CPUs, both Arm and x86 provide widening mixed-precision dot products via DPBF16PS (AVX-512 on Genoa/Sapphire Rapids) and BFDOT (NEON on ARMv8.6-A Graviton 3+). NumKong's Float8 types (E4M3/E5M2) upcast to BFloat16 before using DPBF16PS, creating a three-tier precision hierarchy: Float8 for storage, BFloat16 for compute, Float32 for accumulation.

Float16 — IEEE 754 half-precision with 1 sign bit, 5 exponent bits (bias=15), and 10 mantissa bits, giving a range of ±65504. Float16 prioritizes precision over range (10 vs 7 mantissa bits), making it better suited for values near zero and gradients during training. On x86, older CPUs use F16C extensions (Ivy Bridge+) for fast Float16 → Float32 conversion; Sapphire Rapids+ adds native AVX-512-FP16 with dedicated Float16 arithmetic. On Arm, ARMv8.4-A adds FMLAL/FMLAL2 instructions for fused Float16 → Float32 widening multiply-accumulate, reducing the total latency from 7 cycles to 4 cycles and achieving 20–48% speedup over the separate convert-then-FMA path.

Platform BFloat16 Path Step Float16 Path Step
x86
Diamond, '26 ↓ Genoa 32 VDPPHPS widening dot 32
Sapphire, '23 ↓ Genoa 32 ↓ Skylake 16
Genoa, '22 VDPBF16PS widening dot 32 ↓ Skylake 16
Skylake, '15 SLLI + VFMADD 16 VCVTPH2PS + VFMADD 16
Haswell, '13 SLLI + VFMADD 8 VCVTPH2PS + VFMADD 8
Arm
Apple M2+, '22 BFDOT widening dot 8 ↓ FP16FML 8
Graviton 3+, '21 SVBFDOT widening dot 4–32 SVCVTSVFMLA 4–32
Apple M1, '20 ↓ NEON 8 FMLAL widening FMA 8
Graviton 2, '19 ↓ NEON 8 FCVTL + FMLA 4
Graviton 1, '18 SHLL + FMLA 8 bit-manip → FMLA 8
RISC-V
RVV+Zvfbfwma VFWMACCBF16 widening FMA 4–32 ↓ RVV 4–32
RVV+Zvfh ↓ RVV 4–32 VFWMACC widening FMA 4–32
RVV shift + VFMACC 4–32 convert + VFMACC 4–32

BFloat16 shares Float32's 8-bit exponent, so upcasting is a 16-bit left shift (SLLI on x86, SHLL on Arm) that zero-pads the truncated mantissa — essentially free. Float16 has a different exponent width (5 vs 8 bits), requiring a dedicated convert: VCVTPH2PS (x86 F16C) or FCVTL (Arm NEON). Widening dot products (VDPBF16PS, BFDOT, FMLAL) fuse the conversion and multiply-accumulate into one instruction. Sapphire Rapids has native VFMADDPH for Float16 arithmetic, but NumKong does not use it for general dot products — Float16 accumulation loses precision. It is only used for mini-float (E2M3/E3M2) paths where periodic flush-to-Float32 windows keep error bounded. The table above covers only vector dot-product paths - GEMMs also leverage Arm SME and Intel AMX instructions. Beyond x86, Arm, and RISC-V, NumKong also ships LoongArch, WebAssembly, and PowerPC backends, also excluded from the table.

Mini-Floats: E4M3, E5M2, E3M2, & E2M3

Format Bits Range NumKong Promotion Rules Support in GPUs
E5M2FN 8 ±57344 BFloat16 → Float32 H100+, MI300+
E4M3FN 8 ±448 BFloat16 → Float32 H100+, MI300+
E3M2FN 6 → 8 ±28 B- & Float16 → Float32, Int16 → Int32 only block-scaled
E2M3FN 6 → 8 ±7.5 B- & Float16 → Float32, Int8 → Int32 only block-scaled
Scaled NVFP4 4 ±6 B200+
Scaled MXFP4 4 ±6 B200+, MI325+

Block scaling. NumKong does not implement block-scaled variants (MXFP4, NVFP4, or block-scaled E3M2/E2M3). Block scaling couples elements through a shared exponent per block, introducing structural bias into a fundamentally uniform operation. NumKong treats each element independently; block-scaled inputs should be dequantized before processing.

FNUZ variants. AMD MI300 (CDNA 3) uses FNUZ encoding (negative-zero-is-NaN) rather than the OCP standard. MI350+ and NVIDIA H100/B200 both use OCP-standard E4M3FN/E5M2FN. NumKong follows the OCP convention; FNUZ inputs require conversion before processing.

8-bit floats (E4M3 & E5M2) follow the OCP FP8 standard. E4M3FN (no infinities, NaN only) is preferred for training where precision near zero matters; E5M2FN (with infinities) provides wider dynamic range for inference. On x86 Genoa/Sapphire Rapids, E4M3/E5M2 values upcast to BFloat16 via lookup tables, then use native DPBF16PS for 2-per-lane dot products accumulating to Float32. On Arm Graviton 3+, the same BFloat16 upcast happens via NEON table lookups, then BFDOT instructions complete the computation.

Platform E5M2 Path Step E4M3 Path Step
x86
Diamond, '26 VCVTBF82PH → F16 + VDPPHPS 32 VCVTHF82PH → F16 + VDPPHPS 32
Genoa, '22 → BF16 + VDPBF16PS 32 ↓ Ice Lake 64
Ice Lake, '19 ↓ Skylake 16 octave LUT + VPDPBUSD 64
Skylake, '15 rebias → F32 FMA 16 rebias → F32 FMA 16
Haswell, '13 rebias → F32 FMA 8 rebias → F32 FMA 8
Arm
NEON+FP8DOT, '26 native FDOT 16 native FDOT 16
NEON+FP16FML, '20 SHL → F16 + FMLAL 16 LUT → F16 + FMLAL 16
NEON, '18 SHL + FCVTL + FMA 8 → F16 + FCVTL + FMA 8
RISC-V
RVV+Zvfbfwma rebias → BF16 + VFWMACCBF16 4–32 LUT → BF16 + VFWMACCBF16 4–32
RVV+Zvfh SHL → F16 + VFWMACC 4–32 LUT → F16 + VFWMACC 4–32
RVV rebias → F32 + VFMACC 4–32 LUT → F32 + VFMACC 4–32

E5M2 shares Float16's exponent bias (15), so E5M2 → Float16 conversion is a single left-shift by 8 bits (SHL 8). E4M3 on Ice Lake uses "octave decomposition": the 4-bit exponent splits into 2 octave + 2 remainder bits, yielding 7 integer accumulators post-scaled by powers of 2.

6-bit floats (E3M2 & E2M3) follow the OCP MX v1.0 standard. Their smaller range allows scaling to exact integers that fit in i8/i16, enabling integer VPDPBUSD/SDOT accumulation instead of the floating-point pipeline. Float16 can also serve as an accumulator, accurately representing ~50 products of E3M2FN pairs or ~20 products of E2M3FN pairs before overflow. On Arm, NEON FHM extensions bring widening FMLAL dot-products for Float16 — both faster and more widely available than BFDOT for BFloat16.

Platform E3M2 Path Step E2M3 Path Step
x86
Sierra Forest, '24 ↓ Haswell 32 VPSHUFB + VPDPBSSD 32
Alder Lake, '21 ↓ Haswell 32 VPSHUFB + VPDPBUSD 32
Ice Lake, '19 VPERMW + VPMADDWD 32 VPERMB + VPDPBUSD 64
Skylake, '15 VPSHUFB + VPMADDWD 64 VPSHUFB + VPMADDUBSW 64
Haswell, '13 VPSHUFB + VPMADDWD 32 VPSHUFB + VPMADDUBSW 32
Arm
NEON+FP8DOT, '26 → E5M2 + FDOT 16 → E4M3 + FDOT 16
NEON+DotProd, '19 VQTBL2 + SMLAL 16 VQTBL2 + SDOT 16
NEON, '18 → F16 + FCVTL + FMA 16 → F16 + FCVTL + FMA 16
RISC-V
RVV I16 gather LUT + VWMACC 4–32 U8 gather LUT + VWMACC 4–32

E3M2/E2M3 values map to exact integers via 32-entry LUTs (magnitudes up to 448 for E3M2, 120 for E2M3), enabling integer accumulation with no rounding error. On NEON+FP8DOT, E3M2 is first promoted to E5M2 and E2M3 to E4M3 before the hardware FDOT instruction. Sierra Forest and Alder Lake use native VPDPBSSD (signed×signed) and VPDPBUSD (unsigned×signed) respectively for E2M3.

E4M3 and E5M2 cannot use the integer path. E4M3 scaled by 16 reaches 7,680 — too large for Int8, barely fitting Int16 with a 128-entry table. E5M2's range (±57,344) makes the scaled product exceed Int32 entirely. Without the integer path, E5M2 falls back to Float32 accumulation — where its 2-bit mantissa (only 4 values per binade) creates a catastrophic cancellation risk that E2M3's integer path avoids completely:

i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6
aᵢ 0.00122 20480 −0.00122 1.5 −3072 −640 0.00146
bᵢ −40 320 −1280 −7.63e⁻⁵ 0.000427 10240 −4.58e⁻⁵
aᵢ·bᵢ −0.04883 6553600 1.5625 −0.000114 −1.3125 −6553600 ≈ 0

Why Float32 accumulation fails here. The accurate sum of these 7 products is ≈ 0.201. A vfmaq_f32 call accumulates 4 lanes at a time; the first batch already carries values around ±6.5 M. At that magnitude the Float32 ULP is 0.5 — so the small meaningful terms (−0.049, 1.563, −1.313, −0.0001) are all below one ULP and get absorbed during lane reduction. The large terms then cancel exactly to zero, and the information is gone. Final Float32 result: 0.0 instead of 0.201.

Int8 & Int4: Integer Types

Both signed and unsigned 8-bit and 4-bit integers are supported with Int32 accumulation to prevent overflow. A notable optimization is the VNNI algebraic transform: on Ice Lake+ with AVX-512 VNNI, the native DPBUSD instruction is asymmetric (unsigned × signed → signed), but NumKong uses it for both Int8×Int8 and UInt8×UInt8. For signed Int8×Int8, we convert the signed operand to unsigned via XOR with 0x80, compute DPBUSD(a⊕0x80, b) = (a+128)×b, then subtract a correction term 128×sum(b) to recover the true result. For unsigned UInt8×UInt8, we XOR the second operand to make it signed, compute DPBUSD(a, b⊕0x80) = a×(b-128), then add correction 128×sum(a) via the fast SAD instruction.

Int4 values pack two nibbles per byte, requiring bitmask extraction: low nibbles (byte & 0x0F) and high nibbles (byte >> 4). For signed Int4, the transformation (nibble ⊕ 8) - 8 maps the unsigned range [0,15] to signed range [−8,7]. Separate accumulators for low and high nibbles avoid expensive nibble-interleaving and allow SIMD lanes to work in parallel.

// Asymmetric transform for i8×i8 using DPBUSD (unsigned×signed)
a_unsigned = a XOR 0x80;           // Convert signed→unsigned
result = DPBUSD(a_unsigned, b);    // Computes (a+128)×b
correction = 128 * sum(b);         // Parallel on different port
final = result - correction;       // True a×b value

Binary: Packed Bits

The u1x8 type packs 8 binary values per byte, enabling Hamming distance and Jaccard similarity via population-count instructions. On x86, VPOPCNTDQ (Ice Lake+) counts set bits in 512-bit registers directly; on Arm, CNT (NEON) operates on 8-bit lanes with a horizontal add. Results accumulate into u32 — sufficient for vectors up to 4 billion bits. Binary representations are the most compact option for locality-sensitive hashing and binary neural network inference.

Complex Types

NumKong supports four complex types — f16c, bf16c, f32c, and f64c — stored as interleaved real/imaginary pairs. Complex types are essential in quantum simulation (state vectors, density matrices), signal processing (FFT coefficients, filter design), and electromagnetic modeling. The dot operation computes the unconjugated dot product $\sum a_k b_k$, while vdot computes the conjugated inner product $\sum \bar{a}_k b_k$ standard in physics and signal processing.

For complex dot products, NumKong defers sign flips until after the accumulation loop: instead of using separate FMA and FMS (fused multiply-subtract) instructions for the real component, we compute $a_r b_r + a_i b_i$ treating all products as positive, then apply a single bitwise XOR with 0x80000000 to flip the sign bits. This avoids execution port contention between FMA and FMS, letting dual FMA units stay occupied.

for (...) { // Complex multiply optimization: XOR sign flip after the loop
    sum_real = fma(a, b, sum_real);   // No sign flip in loop
    sum_imag = fma(a, b_swapped, sum_imag);
}
sum_real = xor(sum_real, 0x80000000);  // Single XOR after loop

Reading Materials

Beyond the READMEs in this repository, there are several standalone articles covering different evolution steps and features of this library.

License

Feel free to use the project under Apache 2.0 or the Three-clause BSD license at your preference.

Download files

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

Source Distribution

numkong-7.4.5.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

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

numkong-7.4.5-cp314-cp314t-win_arm64.whl (502.5 kB view details)

Uploaded CPython 3.14tWindows ARM64

numkong-7.4.5-cp314-cp314t-win_amd64.whl (582.1 kB view details)

Uploaded CPython 3.14tWindows x86-64

numkong-7.4.5-cp314-cp314t-musllinux_1_2_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

numkong-7.4.5-cp314-cp314t-musllinux_1_2_s390x.whl (2.9 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ s390x

numkong-7.4.5-cp314-cp314t-musllinux_1_2_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ppc64le

numkong-7.4.5-cp314-cp314t-musllinux_1_2_i686.whl (2.9 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

numkong-7.4.5-cp314-cp314t-musllinux_1_2_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

numkong-7.4.5-cp314-cp314t-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

numkong-7.4.5-cp314-cp314t-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

numkong-7.4.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (3.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.4.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.4.5-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

numkong-7.4.5-cp314-cp314t-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

numkong-7.4.5-cp314-cp314t-macosx_10_15_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

numkong-7.4.5-cp314-cp314-win_arm64.whl (501.5 kB view details)

Uploaded CPython 3.14Windows ARM64

numkong-7.4.5-cp314-cp314-win_amd64.whl (579.3 kB view details)

Uploaded CPython 3.14Windows x86-64

numkong-7.4.5-cp314-cp314-musllinux_1_2_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

numkong-7.4.5-cp314-cp314-musllinux_1_2_s390x.whl (2.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

numkong-7.4.5-cp314-cp314-musllinux_1_2_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

numkong-7.4.5-cp314-cp314-musllinux_1_2_i686.whl (2.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

numkong-7.4.5-cp314-cp314-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

numkong-7.4.5-cp314-cp314-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

numkong-7.4.5-cp314-cp314-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

numkong-7.4.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (3.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.4.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.4.5-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

numkong-7.4.5-cp314-cp314-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

numkong-7.4.5-cp314-cp314-macosx_10_15_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

numkong-7.4.5-cp313-cp313t-win_arm64.whl (479.8 kB view details)

Uploaded CPython 3.13tWindows ARM64

numkong-7.4.5-cp313-cp313t-win_amd64.whl (562.0 kB view details)

Uploaded CPython 3.13tWindows x86-64

numkong-7.4.5-cp313-cp313t-musllinux_1_2_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

numkong-7.4.5-cp313-cp313t-musllinux_1_2_s390x.whl (2.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ s390x

numkong-7.4.5-cp313-cp313t-musllinux_1_2_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ppc64le

numkong-7.4.5-cp313-cp313t-musllinux_1_2_i686.whl (2.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

numkong-7.4.5-cp313-cp313t-musllinux_1_2_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

numkong-7.4.5-cp313-cp313t-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

numkong-7.4.5-cp313-cp313t-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

numkong-7.4.5-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (3.2 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.4.5-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.4 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.4.5-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

numkong-7.4.5-cp313-cp313t-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

numkong-7.4.5-cp313-cp313t-macosx_10_13_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13tmacOS 10.13+ x86-64

numkong-7.4.5-cp313-cp313-win_arm64.whl (478.9 kB view details)

Uploaded CPython 3.13Windows ARM64

numkong-7.4.5-cp313-cp313-win_amd64.whl (559.6 kB view details)

Uploaded CPython 3.13Windows x86-64

numkong-7.4.5-cp313-cp313-musllinux_1_2_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

numkong-7.4.5-cp313-cp313-musllinux_1_2_s390x.whl (2.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

numkong-7.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

numkong-7.4.5-cp313-cp313-musllinux_1_2_i686.whl (2.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

numkong-7.4.5-cp313-cp313-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

numkong-7.4.5-cp313-cp313-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

numkong-7.4.5-cp313-cp313-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

numkong-7.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.4.5-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

numkong-7.4.5-cp313-cp313-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numkong-7.4.5-cp313-cp313-macosx_10_13_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

numkong-7.4.5-cp312-cp312-win_arm64.whl (478.9 kB view details)

Uploaded CPython 3.12Windows ARM64

numkong-7.4.5-cp312-cp312-win_amd64.whl (559.6 kB view details)

Uploaded CPython 3.12Windows x86-64

numkong-7.4.5-cp312-cp312-musllinux_1_2_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

numkong-7.4.5-cp312-cp312-musllinux_1_2_s390x.whl (2.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

numkong-7.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

numkong-7.4.5-cp312-cp312-musllinux_1_2_i686.whl (2.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

numkong-7.4.5-cp312-cp312-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

numkong-7.4.5-cp312-cp312-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

numkong-7.4.5-cp312-cp312-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

numkong-7.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (3.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.4.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

numkong-7.4.5-cp312-cp312-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numkong-7.4.5-cp312-cp312-macosx_10_13_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

numkong-7.4.5-cp311-cp311-win_arm64.whl (478.9 kB view details)

Uploaded CPython 3.11Windows ARM64

numkong-7.4.5-cp311-cp311-win_amd64.whl (559.2 kB view details)

Uploaded CPython 3.11Windows x86-64

numkong-7.4.5-cp311-cp311-musllinux_1_2_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

numkong-7.4.5-cp311-cp311-musllinux_1_2_s390x.whl (2.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

numkong-7.4.5-cp311-cp311-musllinux_1_2_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

numkong-7.4.5-cp311-cp311-musllinux_1_2_i686.whl (2.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

numkong-7.4.5-cp311-cp311-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

numkong-7.4.5-cp311-cp311-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

numkong-7.4.5-cp311-cp311-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

numkong-7.4.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.4.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.4.5-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

numkong-7.4.5-cp311-cp311-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numkong-7.4.5-cp311-cp311-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

numkong-7.4.5-cp310-cp310-win_arm64.whl (478.8 kB view details)

Uploaded CPython 3.10Windows ARM64

numkong-7.4.5-cp310-cp310-win_amd64.whl (559.3 kB view details)

Uploaded CPython 3.10Windows x86-64

numkong-7.4.5-cp310-cp310-musllinux_1_2_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

numkong-7.4.5-cp310-cp310-musllinux_1_2_s390x.whl (2.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

numkong-7.4.5-cp310-cp310-musllinux_1_2_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

numkong-7.4.5-cp310-cp310-musllinux_1_2_i686.whl (2.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

numkong-7.4.5-cp310-cp310-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

numkong-7.4.5-cp310-cp310-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

numkong-7.4.5-cp310-cp310-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

numkong-7.4.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (3.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.4.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.4.5-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

numkong-7.4.5-cp310-cp310-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numkong-7.4.5-cp310-cp310-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file numkong-7.4.5.tar.gz.

File metadata

  • Download URL: numkong-7.4.5.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5.tar.gz
Algorithm Hash digest
SHA256 08ba372de44b08ecb989d8f3afdfe33857b92346033b85ff6721faa4588f4852
MD5 e0924d6100362caf6eca98ebf68a5af3
BLAKE2b-256 39d126a52f88c4a8332b6ac7b36f25aa1c44f5aa10815d5752da0e2e856b107f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5.tar.gz:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 502.5 kB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 cade09507b2c72e3b9da48ab536991a2720a5a8c306245d33f3ec14f4535d5b1
MD5 589bba1b826cd0d2270a39a7a207ef60
BLAKE2b-256 2a30ce4db932cc846bf1f75468b7c263da8b1ead3d3dee119c232f0e3b81d5ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 582.1 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 b43f0fa77a7c7393e847a7ac35870e4b07eb5e79a2054c0c7db7bc6945e89e51
MD5 3ade4a5cd4ee08fc9637216864b3f93f
BLAKE2b-256 26375ff0fed3cf55ddb58e930ff8a39c53b8e8f399114c613880b171948d1efa

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ed4d0229577838241cec1af2c0654c5f1e6e1fab4910857a606586311f8c2b01
MD5 bba8fe0c00a3e696d9f0a09a6fae0d0c
BLAKE2b-256 f22dad357bd9fc43d8a00c89b205f00d3647feb86c651ece0097a01f7a97ade2

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 de5783ff3ff921202f446679acc8a4f09b9e307168aae843b3ad5c42a0b6f598
MD5 bd5d74b3afdc9797c47728a8c0818f34
BLAKE2b-256 735e5b585d7e325fb033e6fc97013160abbb676fd21a60a5e6175cf3016a8867

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 84d202d9a312a9e47e5a39e8ce6d4a5fb58362121e4994bb9bf0fd27a8501965
MD5 a80bfd9a32cad051ba26b72becad93ea
BLAKE2b-256 7735e094ab48644d4915bf0bf7d1c3093e70456f8ee3899279aba2d33fd36df6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9d61fd530770cbf0918bbc541eaa9c88d5c3dd2667fc7c68f241fd121a333a30
MD5 7efc1944685a8c55929fed5677eec684
BLAKE2b-256 4fe03ab6cbe6e8316a9685358e86501b89efb3571d6998532976a48e37683cdd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7c496cb127a0f0e6d2ba502fd80fa007337f433462e6062c350fa0d7ad084e5d
MD5 0c9a11f7c6a0670a05d7e749a67755e9
BLAKE2b-256 19f66ab99d8b72d578414ca54b7effb640076d9116871218e459248018d0734b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f22ea0d9428fc1d49461d09af0bfc6b761690d59275717e4ba2d3af5adada749
MD5 da70d417153a2e8f8f43636f3d4aed2b
BLAKE2b-256 07aa2f38f62c50c27748564e9d2215081f1b46a19a873cedef502a78446c0053

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b59f92066920ca3f511e6226dfdec00348ad5576b9f16e38366cd72fd4a04b6a
MD5 5ed9b6e7e5cbc2071e86c374ed386cc9
BLAKE2b-256 63eaea713fe4fc12c74a11e8a5c1e08016de54eb4ac0da1b48e141265d0a40b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 e97040671bff836b22efeffe2f237a6a0152bc4a39eabf33943ccb1421204835
MD5 836aff3cc7d1db889f050aae7ab21410
BLAKE2b-256 7cd8e80963053d2a39ac539a6c3042a5ff8525a257e8f9f1ea25469600683a9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 ef8e1b440f6f5ab86e207531888bbde837240a2f19d3339ce400a5bc9279ba46
MD5 84a2af751b4eb9ce6615df476c6463ee
BLAKE2b-256 ebebb584b0f9af2a25ea572f4945edd1235922114a303f9ea9f8bc3cbb302d52

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 8f61894f7faf6ce64892a77b668cf36aaa3c08954d0f25014c7e55a5045e0e51
MD5 f16f89e8d72e28f65189e83f6eff143c
BLAKE2b-256 aa1cd392d2177404a08f37deaa27b3041a5e123d96b3de31b2ad9459e19e78eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46bad2fcd6d4b7b127c3e394334655e57a00edcd257529761e2fbd6a92a84ce3
MD5 119239945d7bb18a2869eaa4d78b67b6
BLAKE2b-256 b2baf1c0c886bd994b2714815d50bcbd1a12b0037e4e111dd6fe94f222a7e9fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1e26a0547420c7fb5ef0bbf180e325d38f8243d8d873ea90948b6d228887e230
MD5 5fdb74276ae584171788eafbb368016a
BLAKE2b-256 85213f733ae543714c7f485622e111dc91d1005e596641d0ec5ef8c7a384c19e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 501.5 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 29db5f8c3abb20d659716eb6021bfbb9641c322af495cfbe2cf2fbfcba7e0bb1
MD5 fca98b863b132d254fcca79874551fd8
BLAKE2b-256 b33dd07f1f653aed5297c863e83f71baf2417105ff00d4309036657e2e38c059

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 579.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c85c27e60a6ca5a517fea36d003504e21a2f54067ec957e8b3cd288dc8cc3b8c
MD5 4b373b362e4c659ce094c3a97a507868
BLAKE2b-256 8e29c676dda73f1b501dbe6d120e6a796eec97bd8af5c3a41ce47e7a761106e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b593b1982874f486cb9cd56737d50e17475687419e2bb369c8361e7ae7eb595b
MD5 f14b0694500c6ad825e15b3abc3dcc5a
BLAKE2b-256 75424c39694a471d34786eb7b6f82605a7dddc552395392f7fbb224dde8e58ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 c9efb3574c9acdb44eab5da8d8b63cefbc58df632ca18e4c9119010895640877
MD5 86562bfaba20357e6a67cad9754af962
BLAKE2b-256 e69ebfc74479e6947ef8bd742c4353722cba3371dca80cefa1e24310c044f305

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 702ab69ba46a92488ac0606503a21e7d976b06be4a7d17a1c5de8532c65ecf1d
MD5 4509e05f24b40b0969121a409e8af357
BLAKE2b-256 b297a20b4d14e68ce5c90fb5e456093447607bb32c7ed606b36b23b94f193795

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ddae96bd1f41afeaa93b8f1bb1eeba260b78a1047781f186b77676ec6bd704ff
MD5 172cd8690df3e7fecd1e6461c10972df
BLAKE2b-256 15422a65e52549c49126a62be03155ec843946a7b99894f71040a8d88a19613c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d874e90be72b83fe9992a75b9cac7a8848b90878f4109b34280f2d52466db325
MD5 d4bf4a3925805eefab9e49b2ab2ca23a
BLAKE2b-256 bfbcd7aea8ae8900f0cc11f15e7bf345d9b80084267832dc253a4ec4f6d3b3a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e5dd6d38a5beaaddef457097eab2d7cb15c42820ca13c97b33b644b000c27e43
MD5 359f567cde47705ad14306005b7aaeb6
BLAKE2b-256 ddc37b2d83d642acfb8f12f70efd23774e6bad37172492fc8af69c18797499f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6cfe9cea6671646d9dac6c6d388811eee8b5a12790fd217948c1ebc58e58c8ca
MD5 1c4e7613ed70d312446af86bcdfa3b0f
BLAKE2b-256 3f890477ae1a5dfa5f13e9b2fea2517327466e454c63e7b451c232fbfa42489f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 482c2505094fb923e6ce33d57e8f6ba6a0d63ec48e1e0194ffd095688710ae11
MD5 e3d4634b9df6ea33156d26dd4594e732
BLAKE2b-256 f13e9d7150d2714035bc082a36ac9f2a15618d4caa0e8a08a00990ca461b540b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 4e1465d6cbacf5b80ef19576212c2036246ce04de615749d467b02da420c889b
MD5 3a4378fbfae16a541347ac5d8c0a88cd
BLAKE2b-256 f4562f2a399f055068858528ddef2c90a36b3e89310f014adfdb2823be32c966

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 62c9f42de995dce347b84740e717b0a66600a7d6787dc2bd74de8538a02687a9
MD5 f07ba491f587849d8b8f2f445eb064d0
BLAKE2b-256 546ec10da60b3bdeab665e34bf4b344d9a4a5f8074f6a84db2cabf7fca751446

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02c6c8d5fc67385d2163af67621d50a60e0ea848741714cefea8616c62e20179
MD5 7ac85eb7d9d2a8bf6d64d99f5e4abffb
BLAKE2b-256 7c06c3ac57360a4e4fe53db297942ab6ea6f38438626f2d08d4a37827b106d44

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1bc809c0bbf1793356081352379818f7b3aaeae24a33064afb046f82af1a0b68
MD5 fee82fc7cebc80b45a11f95adbc42816
BLAKE2b-256 b5acf66cb482cd57dd86a110dd3d872881e4204487b876c487ab50250f56a606

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp313-cp313t-win_arm64.whl
  • Upload date:
  • Size: 479.8 kB
  • Tags: CPython 3.13t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 844c75c77d69f064d613ffe824aec3f8a8ac2abf5d7d6b2857453ad210c33b20
MD5 89cc9ad08923983ae9779a08625e685b
BLAKE2b-256 cf3dd2c6e3f3ab14bb3925636e1464df0a9ac5fc1c94e56b3307c353f07a7c9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 562.0 kB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 f676f156fe0d6a188aab5b8911c3455e861500e7a88066e5cf6fb4f3b61e2c94
MD5 b15ca22aec88f78fd8bb60f1be9c6764
BLAKE2b-256 ca45029daef9e78c1f76b45319c42df0b56260254c62fd678532a029bfe00dac

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9de02541e4fe15c3d5c11600c7e3fd3db3ae6f74db7d01816a49b10afae33e0b
MD5 5762773617d580e092323f37bfeb02d9
BLAKE2b-256 a41fb520b9b868fb9ea140426440ffcf64f6b7b0548183310d7ccb12ed9a1bf4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 6d64d7e1fa0164473746dbccfe3155cc9c618c29da23929fe1944902e3e0ad8e
MD5 c290c0ac614005b3272e5baeafd66c94
BLAKE2b-256 8bbfdf6c83fc31ef826936a1d4f0a0d022616ba62aa5bf07b3f63d9ca71b2326

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 d4fa764438064563fd8720946d37b79f04a5473875ca4cef27428019e263116f
MD5 56011881a244a159c6b5b0c7bd0ce6a9
BLAKE2b-256 5de500e6d4a55ed0ec1cd27814d963015896fd326f7a1403164b869e0a07595d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 18a238b9aa35697e0ef88802426c2b73cf484431cdc13c71e2efff85e3cd2ed4
MD5 49424bb3037eb624b9443ef3817cd883
BLAKE2b-256 39714e21d2e7267ec11bc951e6362ab19622c5459c118e952c633cc7156918df

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b55a5725f6cd105098b92ad18518951bdad27c76472e984e84357712034f88f6
MD5 e1a3cde4545547abc070ecedd1b61466
BLAKE2b-256 7f8761aa067d0639823035202ea58e27ea517e82845510ed0223594a89dc5cda

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 003ad545db8b9be9344d1427a4f022c3f8e9b81763279a26eb9c5d326f09ea50
MD5 f1b41fc21d8500d4d9bd8394648bd085
BLAKE2b-256 4712ece98ad96f99ed0b5c7c3c82507f6c2bec02d61c00279329de87a261315a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 be27ed8baca17eba2833df247386bd044fe58ee89f134f0b717d8a6b31ff63ab
MD5 2f736cefcf90c947286f9692f6d8d72b
BLAKE2b-256 4b376ae49294f132d155f9c8bf14aa0182a80b970c6b2af112e8e119a2bedce0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 caeb7a8e735044941bd8eec54ddf50c7fffe7cba746794aace41e00953a64c8b
MD5 9ce7950f789982c09d48dcc1621c6bf1
BLAKE2b-256 73c7915fa15c4fe803fdc8ad04647566fa458576e3a36dd6ab240c9a9c57df4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 9c5171efe0eec98c009f337a265ff88365aa0d9404ce561b85cb966acb6fd70d
MD5 854d51fce06e877d4682fca08113ec46
BLAKE2b-256 88d25d8c4171b7312906e720691f3269d7caa8897185df53a5a43b5eb46db0b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 f4412264b52f4d00326e814ba47eaccb74c33520e224786a98ba5aa0f2dc7396
MD5 084c1cc93c8486e7d2ad0abec08ff627
BLAKE2b-256 e0a0280a2e4e3f1da7da502cd81b3b4b17d614825f61222f219778b1f067bcdd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3946ea8d2b0df4e26e386f417af0fc93c0b5711644b6c6c90e29b97b7f661529
MD5 56e8b7e3d38c719bd7d1795c6626f9ce
BLAKE2b-256 9c42589319df792444d7426cb9767b7ecfda56b2ff7032d06b0a8719a4616911

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 3ab7cc21874013c2bb492ad0fa5e0af6f7299d4a5e4a351ef9842994df7b8c65
MD5 eaf280d5e2459a4d8e3b6066ee83e7f3
BLAKE2b-256 d6e2353bb1a945df208da085c63aee68f291b2221717ba97d6b1d192b0d33630

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313t-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 478.9 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 f0f4dcd33f500bf8860f2f18fd34e9cdda5237aa8a5fc9e9e4178f39b169f877
MD5 ef9f95699f5f630465818e824ce1b7f8
BLAKE2b-256 e65237b0328adbe6cdab12a78ae183896db3d40e4364d76ad886e9dc9bd74752

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 559.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bdf153ac12acf03a617a3feeeead7b3bf01389fb0cac05ce263a02c9011f8ed5
MD5 a08f48de3a4fcc6268b98fc22f19c30a
BLAKE2b-256 79dbb476dd425301e34531defb65d7bab8a70408f93e670c19123825e69b9d26

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b51eac7719ab36894a51e1369d8e4de0c73cf5e7a15b89c68bc849241cbdbfb8
MD5 f35101b05639f28aa44d5dc06380cf56
BLAKE2b-256 1943ec56421a8a549e1c247b773138b8a4f463d61dc6bebfc75a10ad452da425

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 1b0db242cd7c9e9ae8ad7577221ed4ff6fba28f1029fe17075a03d87ba40664d
MD5 c2eaca4675062cc52b6ebe540c0a04a1
BLAKE2b-256 2ecbc60220c4bc5b5a33717562e990e61e4ad676c0616c5554345b2950606582

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 c5adac1bc0ca7a5d71cfce847bd55c2427b9524b4c0c7327a33a0c5928f11871
MD5 72d15d472d42cccee8c3b4c12a9a00cf
BLAKE2b-256 6028a9f893a42b3d5864f90eeb82d21b3613e2b98411c332938653dc38d0d86c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 680bc2da7078ebcd145958ff3e0ea9aec134d8e6366a320dd2e429b2e2f6d9ec
MD5 3973d4f9132d7d266cb5e9175bd3de62
BLAKE2b-256 49d7ec87e3bfeee0b893f1824f8a6c0f2ee36579cc2875016a0538df9c8190dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 93da5f2e4eaabbd667d45d2a6cb5180be320d831c9f0251b573f7a525c823b11
MD5 94b7931be8973d2fc6f497e69eda4290
BLAKE2b-256 55bb93acdded89d866a4706aefa4c90e9e7b7ea34731216a09dc98cdc4b553e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 be060a29e6641c2b8c915776a1c5e7ae4573009f4ead5d0af6ed8e5b87a0f75e
MD5 cacf753320a7e18d1da382225ad1f025
BLAKE2b-256 f672de743d3383ff78f64c15deb2358b406f66513214239be1d04b084a2774ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 29347a4e017c111a9f2554d1a85ea0436b92dc4d7ba367a2616cd4101168d1a9
MD5 79f086a7a403a5b7f11bb17127e78e14
BLAKE2b-256 861cba69c3dd49f004d2b2b160584acab24b4bd6b67acbf72d64bdebf1bf885b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 56b68290d93f8cf3e65aacdb99a906d671bd7f0dc1310e92c214d88578fa4a2f
MD5 76d9e0805d067910f0716d5d1e843b2b
BLAKE2b-256 2643ffe86b3e35b1b0bca83aaee21fdc33ffbe1b3e7ddda9d69714c02a7d8632

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 433694407ae337079426f0efb2c285c28d2eda9ed35b17b1a251e0aa201fdfbb
MD5 c5e6a0fbe7a5a76ffe5db82125f6a8ce
BLAKE2b-256 1f65367e58be313cab1255be1bf28524d182f2783f0bcaaa5d3a48cefa9cf2ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 773ebd034ba56a4bee24fb6e25f61de044b5084728d98e7eae38f4843998adc2
MD5 e01fb6152a94895881d46e528f1abe7b
BLAKE2b-256 a485f22635a5d540f0259e0fd27942d8d4b9a34770805fb38af8855d922492ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d2cfa7564b9926660418c84b49c716b4d5fc50a947e719e12140e63b53b94dc
MD5 c9cc9a10681aa41bfa0dc894abf3fff6
BLAKE2b-256 0071a746a02beae74f7ee62f2bd304ef9f74b232b009c5739a0cd406002af423

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9d6d089fc0b84f44395d0f3f4e83d6b3d7f428846fc95e8e4f74e08cf8a02cec
MD5 bf0fe08790ad7d2a6bdb7385bb68a380
BLAKE2b-256 37bd953ad97042762e366906fc020f19ac1639f0b7859a307a494ac17ef84274

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 478.9 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 4d4d7c4d264420b175e6e6fcdfa1ac87ed7bf09bf0bf46c1194ed8948650914e
MD5 c6b8bb9da9460a8ae844e71963f5ed7e
BLAKE2b-256 cb8c1057d5858b548aa9be5f2f21e40ccdd01b8c223918dd301a53c8f74f4e8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 559.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6f23c92c2ab3cd07a4668393fa43af8c30cfbe7814da127ab4ba69c1f01758cb
MD5 5fb18a961492350bf22165b351dcd72c
BLAKE2b-256 602790cccee3b4186ce15543c18da1770d094a5da8a17b0df6bb53164e4d89f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f6642c31aed7aca1aff368772e66c41bbdfdda72d86c4f8a4ba61d203afe8a46
MD5 7ac2a03730a5a27accef97b5e293adb5
BLAKE2b-256 d18bb5f1b9bd15bff8e9051f1b689c9e67243d7323d59c610987533e569717f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 592357313c50ef59c84834aa59c866ebc4183deebd44de3197b76ce4677fa360
MD5 cfe683225089efae84803997f842bba8
BLAKE2b-256 06725791725be4efc1c5df096d844aef88c3b3582b85b5be7852afec9fd7636f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 668acff07dc50a04b8f6ef35f81f8e0a6f48bacdb13173c59551f6702be0479f
MD5 3a28d9544f7a748f18b7ffb5a149ae71
BLAKE2b-256 92190c6bbd9f971e23fc5c2fa21eb0aa72860cfb884339e0e3f9b53008014c32

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 327908e289aaea4257a736c110360c4ca3767d4f6daf7d260a97de32da47c6f9
MD5 1b38e6099497444aa67423919eb2ff45
BLAKE2b-256 d22e839858a97c67104cf783761253dff883715eeac38912d0d69817c1575d06

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c52a46520df6ea93bb9f63d2cdf88502b8a1848741a4cb1978cafc84ea0f8bce
MD5 9f21b04ca205ce4eade3f37dafc752ca
BLAKE2b-256 bb2e2b07c04bfea4cfec84e4dfd06b77cb31f2f57430e6b355cf5ec7b8b972f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c9dd3425b232b02ac32cce08197d7279eec44248c79f5f71f60d60ed24bc5fdb
MD5 e0b3752b33acbcd412cb0dab8305ea61
BLAKE2b-256 d472dfc5ae195390fa47660a57b88c79b3e0b78c9b50824129bd9baad2f5f2c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 49309b14023b78f4a8316ba3364907be55cdbd4b1400cdd1765ca6d6dfa92c7d
MD5 95a61b988ebb9088eb4462340de1a13c
BLAKE2b-256 b72b73d61914ae35f8d2295bb6357da16eca6b7ed6fe4e03502bcd8349642e32

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 1cecff2ca15f86194f0802e66dad9408b1dab77136e126fa9e1e49c2b55a2bc4
MD5 450aacc45144b53e51bcfe02ee25cceb
BLAKE2b-256 6a4df70069c208afec85a35000ed8c03dea2d958c60ec6a3ea48b2fa0b44369c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 789a08ca47ba45605ba0194e576219fcd33e7ab05c86e8e9b8bab2595f32b6bd
MD5 b21e65d4cf448285d5e444f5839653df
BLAKE2b-256 bacfcb664e4de7244896f1eccdba64155b85d78cd722fff10af4dbd0c91d98aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 14a3cf6717a96f4c5a5d9275936b953b532b1c5bd6d8d91515e788105bdc4d33
MD5 7b2be8523ab80e0fca9f943115be18f8
BLAKE2b-256 db068f5ca4384a3279df2149c307a38a68454fd5c211c05fe12e6410efe6f5d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 004c27d552142528fa357dc5f686027f2e8f37a026c6a6fbdb0679390df0960e
MD5 dd764c62f7a2c9d01bd73e829e8ab44f
BLAKE2b-256 951713def6b7183d75d948563fb0bbf9763b7031efcd2fd4432442a4973aca26

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a15c208dd02e5fe4a947dfa65f0268e467d9722c40c61448f4e4b03e3d95b896
MD5 d12d1d8fc7e26f84bfd884a8f691dfcb
BLAKE2b-256 49a127b0a04328b716baee5047f4b43fe8c6e3ff891863cd399c3f024359c527

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 478.9 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 1c547410543104d146f857a950ee4167ef1073840217ea765be7afb3d2115b06
MD5 c2e6688d3d21a6433b4fcfc15e4dcc0f
BLAKE2b-256 e01cebe9878d2c2664f6d26625d3a27bafea2fbf72f3de3ea5a70134be336b93

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 559.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d721fb9fe7d937ac4991167fe5989b76faace2fbac6c14e3b7aaf4444f8bde56
MD5 e3c5a656aade940e551233049b7a32a2
BLAKE2b-256 d0a9744a3e306a8b202bd56beec33ddae01405009e78b0eafbc408dfdceabc99

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c730f0f27336077d139b41b3823247dc7fb439a2eeb3eb131252c75daf7360a5
MD5 ea71fe16d3ed2ea70f2a874c4940658d
BLAKE2b-256 96036e2fff942371a308ad00c1ee89db31f9cbd67b3d0525db35bb47e2bc09cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 563d4695ca08b099f7a1c951f2260cf1a43a073706e3beece5cf4f897c08e8a1
MD5 787490e256f44953b416dffbb8f12f0e
BLAKE2b-256 2c9bac3896f6937249e98cbe3e529a8d72028aac51c4380b9ae4a377ba2900c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 84e37522501b5d9e0ec68a55f0a7b4ef4a3506c4e7d0c3f78cad0d4081ceb193
MD5 0a7515f30ac896fdf7d0b103be4d553b
BLAKE2b-256 22fc1c3062c6eb8bbbec06dd26bcfaa88784e2d6fb2b7782fc8f99e1696cb4a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e55dace0d8f661295b87e5ba92f5327ed3e3fb49db0de56a0d80f479c050d2b2
MD5 10deea11aa55d860357a51d1bc58937b
BLAKE2b-256 615788ff4e13acd42d7cd72b74e336af6223b2a3dd61f4b52f5983f5db724f76

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dfd1af2368aa1fffcd72837808c4970e28406b6aeac0e5c078b7906e7b9a349e
MD5 42230cf337ff43b93698d46b2b042852
BLAKE2b-256 faf287e64c362ced72229409d91c32d3d99d65df6df716b318ec1052076cb218

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e412515be154df8e51aa4e5694dc5338a5087a0ee77aa2f782631a27934c5c2e
MD5 603c8900471b982b036eab4118c834c4
BLAKE2b-256 7ce119178829ad3df889fbfc4206c6999cd474cfc473ab9c8c9a51a516cdb850

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 909c29b3f599813aa7a00fc48b11fef411ab54dfd43d5fc78c2f6e77e5ecc946
MD5 a46b591834b14d75d910727cceec927c
BLAKE2b-256 c4172b318d3cf656831e034b9c44443e810780c5027b8acea3f149ab39e11060

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 cc557772d431925ad6233147545da9435a8c9560f5369370338de5f277c20c69
MD5 93b83965ba919ba3bf9bd195eb557258
BLAKE2b-256 f6767c5cf8b0dd3654b1cf6213c59f3519567a92d69a0833a4af8cdc3cb240ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 7fa6f62820e873057a1f9397c3a71fab52e0ad1d97fc6b0d831706c159026446
MD5 ca9bc56548c5f91cafc18ade59ae9479
BLAKE2b-256 74bda2d9308cf6cb694a2d3dfb2b101dcf703bca2d736f8222ff38cc918202d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 410560af41c4c679141dcd28b1f61df76ac792d56a57adb43018e78196228f9a
MD5 f9795b349a0236e268883e0a48c83ac2
BLAKE2b-256 91e69adffde445af67f893ac1ca7c188b3830e589de6cb564e5b351f840d5f0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3615bcda470167f04feb392498ecb6d7077f422007c14075d98787ff12091579
MD5 cc85111639f7d2341b6467e06a3fe588
BLAKE2b-256 8f84e955fcb0b275a33d35ce8f2369299019595fbe1cb99833d39e243a931420

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c2d069c6a344d27e6fbc6b100ac22c0df2ca9bee50fe91cc46ef447c316c2b93
MD5 a4b7ea383cbfdb336efde949ee4dc18e
BLAKE2b-256 b465497b3032bf772178ed5af01e2df3aa912d50f750b0ccacfe6eb781a0f672

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 478.8 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 d086029d8ea65e2fe295d3694a3b032ecc973c9f2ce195685e005f2faf966fef
MD5 daed290f2a6eb71ec8c11c56c85fea59
BLAKE2b-256 a273c61bc37307d420cade01662f396f83de8dbf88eaf8303ddd982ee0b118f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: numkong-7.4.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 559.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for numkong-7.4.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cc567fc67ce55d194dc894794eab98bc63bdd8766b9492d89cade1292bdfbede
MD5 2e0b193b72ea1f037e6324d83ca58d8e
BLAKE2b-256 c5a0534985b53d36a4c605c69bb86f0e8794b2efecaed8cb84e84e8f953e4b29

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 401c3b60716fa1ace0d7f2916c64cf2449a65e3e028fe88dd328a9b77f840b72
MD5 b90510d3672a29e05aaabaed8f19143a
BLAKE2b-256 3a1a963328e1c92643616890a10b27b902710d193f2dd9e4cfd57f98f4148364

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 74a4d389db187b338beee9c6d75f8cb3055c1b52ae2a24f866a575cd76a36ea3
MD5 51eb193c09bb6527a8f766c751c24f6c
BLAKE2b-256 c37796a2ea621d3ec84f58a75dc20d196b7593cd5283f8992f618f0c34650d91

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 729439480e93fa1deb2487fb0069b9a6cf99fbbec11a5fafd6ff450f6bbe0181
MD5 edb107e2d10d89e4954bab3bb0c984ec
BLAKE2b-256 ec3c7157a467a95bbdfe340681b72389cbfe262e454cdd0469e2ddd3c95d08f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 eb551dcaa66861a0e769d5bdb688e6dc0f79c1af82c900adf45c3c1fe5360d8e
MD5 397deb7de5a05effdcb4c74f8deb6398
BLAKE2b-256 b624969103335338fe138d10692b74b30770a4a4a4204eecb18ec4e6036aa945

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b2b6ba2473bf20c92725ba932aac3a06954a5aa514c9dad83dc812f3ef4ebbc4
MD5 dec5877d168e21c05262c728f45929ce
BLAKE2b-256 ee7a0999e1ea10a53639420f8f1d7c4f6c66fd3c666936a43eb3142d26051a5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 47b2e9b774ac8b99246ac6ef238e384d6a2c2c708629753982ac65049a47fbf4
MD5 50c6006ba03e34975c3a91c34f72c525
BLAKE2b-256 0e61c5996acbf9f195bf595c379fa7e6e4f32278b250425cba0ef410aa47e528

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a668f58f1d935949a8707061f4a6a18ddf2cb35fddd57dff5921ddceca24054a
MD5 63d64fac734fe659972574312d33dfce
BLAKE2b-256 28679fd7ed952aef2167fd25b25db21ab29d83069e5be7815cb9de21b1018e9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 d981bf0874908cee7e379c2d7730589180272edb6f2785754c5678b6e0244e11
MD5 97bc73928217441729a371c2e427df0e
BLAKE2b-256 8da9368fbac5f508e10b6932c123d74baf29d302d6c9a324b145b53ab4b57e16

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 0172e5ee34d5539c13e8226b509313df45db9909961456e0ce284763f3016770
MD5 64a5ca3193f8fcdff2060c31818754f4
BLAKE2b-256 8144ebf5d1288ae851cce9a48eb1b264e9b3dfd0cf3e4325eb07aa0fc55883c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 de7283ce8721d7c885a731b7f91486dbb51785906ce6c64181f793ad8d138544
MD5 b4cd3f26008fce8ec62444e4fffeff5e
BLAKE2b-256 64434962da1457ca05c9b6badc74198fda8678feac982ccccf803444f4a82730

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c2b1b6e507dc826ee34bfdb47a1c30f5f87087ba12cf507a6b162de0225c653
MD5 87f9a80ba25555d0c0388ac699397d34
BLAKE2b-256 615947272e771c184c1032ab224c3a8e8ca2f9b608a7f246f8c62d24ec654ebb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.4.5-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.4.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 32a323781547138f60b51922f021673e2c413a3262036331b6da1ce5a657b83f
MD5 824010883597ff8c81523e07f0f5e9d4
BLAKE2b-256 3d844e30710f1aff7a1fc43a8e977e96a041cd4a3d03aef25791e6556595909d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.4.5-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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