Skip to main content

Portable mixed-precision BLAS-like vector math library for x86 and ARM

Project description

NumKong for Python

NumKong for Python is the broadest 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 is highly recommended to avoid 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="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.

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 important selling point is not just speed. It 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 deserve a separate section because they expose an unusual backend strength. NumKong accelerates several strided reduction cases that users do not normally expect to be fast.

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 honest and mechanical:

  • 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 the honest reason these APIs are more attractive than a naive 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.

NumKong: Mixed Precision for All

NumKong (previously SimSIMD) delivers mixed-precision numerics that are often faster and more accurate than standard BLAS libraries — in a 5 MB binary, across C, C++, Rust, Python, Go, JavaScript, and Swift. Over 1500 hand-tuned SIMD kernels for x86, Arm, RISC-V, and WASM power Unum's open-source USearch search engine and the DBMS & AI products built on it.

NumKong banner

Latency, Throughput, & Numerical Stability Together in a Tiny Package

Most libraries return dot products in the same type as the input — Float16 × Float16 → Float16, Int8 × Int8 → Int8. That's a recipe for silent data corruption: 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 never overflow, and it's still faster.

Single 2048-d dot product on Intel Sapphire Rapids (Xeon 8468), single-threaded, CPU-only packages. 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. Median of 5 runs × 500 K calls each. NumPy 2.4, PyTorch 2.10, JAX 0.9.

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

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:

Matrix multiplication (2048 × 2048) × (2048 × 2048), single-threaded, same machine. JAX/XLA numbers divided by 16 cores (XLA ignores thread restrictions). NumKong uses dots_packed (pre-packed GEMM). Same format: gso/s, mean relative error.

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

For f64, NumKong's compensated "Dot2" summation is 10–50× more accurate than naive Float64 accumulation, depending on vector length. For f32, widening to Float64 gives 5–10× lower error. For smaller types and especially integers, the gap is even more dramatic. And all of that fits into one of the smallest binaries in the industry:

Package Size Parallelism & Memory Available For
PyTorch + MKL + oneDNN 705 MB Vector & Tile SIMD, OpenMP Threads, Internal Allocs Python, C++, Java
JAX + jaxlib 357 MB Vector SIMD, XLA Threads, Internal Allocs Python
NumPy + OpenBLAS 30 MB Vector SIMD, Built-in Threads, Internal Allocs Python
mathjs 9 MB No SIMD, No Threads, Countless Allocs JS
NumKong 5 MB Vector & Tile SIMD, Your Threads, Your Allocs C, C++, Rust, Python, Go, JS, Swift

But kernels and precision are only part of the story — the larger investment is test coverage: every kernel is validated against 118-bit extended-precision baselines with per-type ULP budgets across log-normal, uniform, and Cauchy input distributions, enforcing triangle inequality, Cauchy-Schwarz bounds, NaN propagation, overflow detection, and probability-simplex constraints for every ISA variant in the table above, cross-validated against OpenBLAS, Intel MKL, and Apple Accelerate to catch regressions that no single reference can. A broader throughput comparison is maintained in NumWars.

Quick Start

Language Install Compatible with Guide
C / C++ CMake, headers, or 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
JavaScript npm install or import remote Node.js, Bun, Deno & any browser 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 spans 16 numeric types — from exotic GPU-only 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.


┌──────────────────────────────┬────────────────┬───────────────────────────┬────────────┐
│          Operations          │   Datatypes    │         Backends          │ Ecosystems │
├──────────────────────────────┼────────────────┼───────────────────────────┼────────────┤
│ Vector-Vector                │ Bits & Intsx86                       │ Core       │
│ dot · angular · euclidean    │ u1 · u4 · u8   │ Haswell · Alder Lake      │ C 99       │
│ hamming · kld · jsd · …      │ i4 · i8        │ Sierra Forest · Skylake   │            │
│                              │                │ Ice Lake · Genoa · Turin  │ Primary    │
│ Matrix-MatrixMini-floats    │ Sapphire Rapids ·         │ C++ 23     │
│ dots_packed · dots_symmetric │ e2m3 · e3m2    │ Granite Rapids            │ Python 3   │
│ euclideans_packed · …        │ e4m3 · e5m2    │                           │ Rust       │
│                              │                │ Arm                       │            │
│ Quadratic                    │ Half & Classic │ NEON · NEONHalf · NEONFhm │ Additional │
│ bilinear · mahalanobis       │ f16 · bf16     │ NEONBFDot · NEONSDot      │ Swift · JS │
│                              │ f32 · f64      │ SVE · SVEHalf · SVEBfDot  │ Go         │
│ Geospatial & Geometric       │                │ SVESDot · SVE2            │            │
│ haversine · vincenty         │ Complex        │ SME · SMEF64 · SMEBI32    │ Tools      │
│ rmsd · kabsch · umeyama · …  │ f16c · bf16c   │                           │ Tests      │
│                              │ f32c · f64c    │ RISC-VBenchmarks │
│ Bespoke                      │                │ RVV · RVVHalf             │ NumWars    │
│ fma · blend · sin · cast     │                │ RVVBf16 · RVVBB           │            │
│ reduce_moments · sparse_dot  │                │                           │            │
│ maxsim · intersect · …       │                │ WASM                      │            │
│                              │                │ V128Relaxed               │            │
└──────────────────────────────┴────────────────┴───────────────────────────┴────────────┘

Not every combination is implemented — only the ones that unlock interesting new opportunities. The icelake level doesn't get a dot_bf16 variant, for example, and falls through to dot_bf16_skylake. Every operation has a serial fallback, but even types no CPU supports today get optimized via lookup tables and bit-twiddling hacks rather than scalar loops.

Design Decisions

In general there are a few principles that NumKong follows:

  • 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 historically the most commonly requested optimization for NumKong, and it's intentionally avoided.

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 actively hurts at NumKong's scale. 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 real performance gap is elsewhere. On Intel Sapphire Rapids, NumKong was benchmarked against auto-vectorized code compiled with GCC 12. GCC handles single-precision float competently, 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 no compiler will 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. 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 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 Fork Union — 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="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's a powerful primitive, but the workloads that dominate modern compute — LLM inference, vector search, quantum simulation — expose three ways in which the traditional GEMM 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 enable all 4 SME tiles as accumulators (+33% throughput vs dots_packed). PLAID and maxsim-cpu have independently shown that dedicated MaxSim kernels 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 the standard advice — "upcast to wider types" — often isn't enough, and always costs performance. NumKong makes opinionated, operation-specific decisions about where to spend precision and where to economize, rather than applying one IEEE 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 — a ~3x speedup. 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 deviates from most BLAS-like libraries by leveraging 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 gains are visible in the benchmark tables above — compensated Float64 is ideal for 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 the universal recommendation 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 Elem/Op Float16 Path Elem/Op
x86
Sapphire Rapids (2023) ↓ Genoa 32 ↓ Skylake 16
Genoa (2022) VDPBF16PS widening dot 32 ↓ Skylake 16
Skylake (2015) SLLI + VFMADD 16 VCVTPH2PS + VFMADD 16
Haswell (2013) SLLI + VFMADD 8 VCVTPH2PS + VFMADD 8
Arm
Graviton 3 (2021) SVBFDOT widening dot 4–32 SVCVTSVFMLA 4–32
Apple M2+ (2022) BFDOT widening dot 8 ↓ FP16FML 8
Apple M1 (2020) ↓ NEON 8 FMLAL widening FMA 8
Graviton 2 (2019) ↓ NEON 8 FCVTL + FMLA 4
Graviton 1 (2018) SHLL + FMLA 8 bit-manip → FMLA 8

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.

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

Format Bits Range NumKong Promotion Strategy Support in GPUs
E5M2FN 8 ±57344 BFloat16 → Float32 H100, B200, MI300, MI325
E4M3FN 8 ±448 BFloat16 → Float32 H100, B200, MI300, MI325
E3M2FN 6 → 8 ±28 BFloat16 & Float16 → Float32, Int16 → Int32 only block-scaled support
E2M3FN 6 → 8 ±7.5 BFloat16 & Float16 → Float32, Int8 → Int32 only block-scaled support
Block-scaled NVFP4 4 ±6 B200
Block-scaled MXFP4 / E2M1 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.

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.

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 i = 7
aᵢ 0.00122 20480 −0.00122 1.5 −0.00586 −3072 −640 0.00146
bᵢ −40 320 −1280 −7.63e⁻⁵ 0 0.000427 10240 −4.58e⁻⁵
aᵢ·bᵢ −0.04883 6553600 1.5625 −0.000114 0 −1.3125 −6553600 ≈ 0

Why Float32 accumulation fails here. The accurate sum of these 8 products is ≈ 0.201. After two vfmaq_f32 calls, the 4 accumulator lanes hold pairwise products: lanes 1 and 2 carry 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 pairwise 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. The most sophisticated optimization is the VNNI algebraic transform: on Ice Lake+ with AVX-512 VNNI, the native DPBUSD instruction is asymmetric (unsigned × signed → signed), yet NumKong exploits 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 eliminates execution port contention, allowing dual FMA units to run at full capacity.

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

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.0.0.tar.gz (1.0 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.0.0-cp314-cp314t-win_arm64.whl (616.4 kB view details)

Uploaded CPython 3.14tWindows ARM64

numkong-7.0.0-cp314-cp314t-win_amd64.whl (979.4 kB view details)

Uploaded CPython 3.14tWindows x86-64

numkong-7.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ s390x

numkong-7.0.0-cp314-cp314t-musllinux_1_2_ppc64le.whl (2.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

numkong-7.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

numkong-7.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

numkong-7.0.0-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.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numkong-7.0.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.7 MB view details)

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

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

numkong-7.0.0-cp314-cp314t-macosx_10_15_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

numkong-7.0.0-cp314-cp314-win_arm64.whl (615.1 kB view details)

Uploaded CPython 3.14Windows ARM64

numkong-7.0.0-cp314-cp314-win_amd64.whl (976.9 kB view details)

Uploaded CPython 3.14Windows x86-64

numkong-7.0.0-cp314-cp314-musllinux_1_2_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

numkong-7.0.0-cp314-cp314-musllinux_1_2_ppc64le.whl (2.8 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.14musllinux: musl 1.2+ i686

numkong-7.0.0-cp314-cp314-musllinux_1_2_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

numkong-7.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

numkong-7.0.0-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.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numkong-7.0.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.7 MB view details)

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

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

Uploaded CPython 3.14macOS 11.0+ ARM64

numkong-7.0.0-cp314-cp314-macosx_10_15_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

numkong-7.0.0-cp313-cp313t-win_arm64.whl (580.0 kB view details)

Uploaded CPython 3.13tWindows ARM64

numkong-7.0.0-cp313-cp313t-win_amd64.whl (938.3 kB view details)

Uploaded CPython 3.13tWindows x86-64

numkong-7.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ s390x

numkong-7.0.0-cp313-cp313t-musllinux_1_2_ppc64le.whl (2.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

numkong-7.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

numkong-7.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

numkong-7.0.0-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.0.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numkong-7.0.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.7 MB view details)

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

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

numkong-7.0.0-cp313-cp313t-macosx_10_13_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13tmacOS 10.13+ x86-64

numkong-7.0.0-cp313-cp313-win_arm64.whl (579.2 kB view details)

Uploaded CPython 3.13Windows ARM64

numkong-7.0.0-cp313-cp313-win_amd64.whl (936.1 kB view details)

Uploaded CPython 3.13Windows x86-64

numkong-7.0.0-cp313-cp313-musllinux_1_2_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

numkong-7.0.0-cp313-cp313-musllinux_1_2_ppc64le.whl (2.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

numkong-7.0.0-cp313-cp313-musllinux_1_2_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

numkong-7.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

numkong-7.0.0-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.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numkong-7.0.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.7 MB view details)

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

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

Uploaded CPython 3.13macOS 11.0+ ARM64

numkong-7.0.0-cp313-cp313-macosx_10_13_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

numkong-7.0.0-cp312-cp312-win_arm64.whl (579.2 kB view details)

Uploaded CPython 3.12Windows ARM64

numkong-7.0.0-cp312-cp312-win_amd64.whl (936.1 kB view details)

Uploaded CPython 3.12Windows x86-64

numkong-7.0.0-cp312-cp312-musllinux_1_2_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

numkong-7.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl (2.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.12musllinux: musl 1.2+ i686

numkong-7.0.0-cp312-cp312-musllinux_1_2_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

numkong-7.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

numkong-7.0.0-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.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numkong-7.0.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.7 MB view details)

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

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

Uploaded CPython 3.12macOS 11.0+ ARM64

numkong-7.0.0-cp312-cp312-macosx_10_13_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

numkong-7.0.0-cp311-cp311-win_arm64.whl (579.2 kB view details)

Uploaded CPython 3.11Windows ARM64

numkong-7.0.0-cp311-cp311-win_amd64.whl (935.7 kB view details)

Uploaded CPython 3.11Windows x86-64

numkong-7.0.0-cp311-cp311-musllinux_1_2_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

numkong-7.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl (2.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

numkong-7.0.0-cp311-cp311-musllinux_1_2_i686.whl (2.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

numkong-7.0.0-cp311-cp311-musllinux_1_2_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

numkong-7.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

numkong-7.0.0-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.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numkong-7.0.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.7 MB view details)

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

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

Uploaded CPython 3.11macOS 11.0+ ARM64

numkong-7.0.0-cp311-cp311-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

numkong-7.0.0-cp310-cp310-win_arm64.whl (579.3 kB view details)

Uploaded CPython 3.10Windows ARM64

numkong-7.0.0-cp310-cp310-win_amd64.whl (935.8 kB view details)

Uploaded CPython 3.10Windows x86-64

numkong-7.0.0-cp310-cp310-musllinux_1_2_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

numkong-7.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl (2.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

numkong-7.0.0-cp310-cp310-musllinux_1_2_i686.whl (2.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

numkong-7.0.0-cp310-cp310-musllinux_1_2_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

numkong-7.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

numkong-7.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (3.1 MB view details)

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

numkong-7.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numkong-7.0.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (2.7 MB view details)

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

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

Uploaded CPython 3.10macOS 11.0+ ARM64

numkong-7.0.0-cp310-cp310-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for numkong-7.0.0.tar.gz
Algorithm Hash digest
SHA256 e6591ed4f3434f022781cc49443751681d9b987d43179bd77edaaa2aaa88a93e
MD5 60bbb162b5d6171fccedd91d9d4c3404
BLAKE2b-256 f4b0aed851949956e38131c7dc0efd55473bf4f00aa0a5d091216c85db184238

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0.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.0.0-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 616.4 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.0.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 22b3a4b5f45b19cf0afbb21b1b98f2b4610df75131ffb8e9e9190437aad2f2c1
MD5 361580e5039084fda9e0cf688875205a
BLAKE2b-256 e691c8f164bcdd854570e4e1b6e6edc73d7dcf48e8f17e9eff84046a61278051

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 979.4 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.0.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 23a0714009bc1522d565b03d6c67d32f7f215a2d5cb235025b5f2b10a0f719a2
MD5 3f8711463fc0fd9789d6fdf51f01371a
BLAKE2b-256 d491f3d9c6e3a47ae115d3de3976c221d9b2c3915d641301893439ecb5855e6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9460326cb0c6235708170d2786bc58aa594ab87044323c54eb97e77567b9d615
MD5 d575ed285b79326dc5022ab34fefea53
BLAKE2b-256 a141eded264baf05a68ffc9196e1774fa62509f1da02a5114b9a29f9277c368a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 a37d3e2b3843d5e5fb496f63094fe04abfded6fe543baa3e88905bc6bbe52ea4
MD5 f5c098a2597714fd7599b6844acd9060
BLAKE2b-256 e796c7a5c986b0e6eaac2e97838277159d2e261e5cabb17853c5a643599f6180

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 74dd69adbb887d606f805e0ce8f0854bb6971d0b2709d71e92be397e926f031a
MD5 078e236e934a923ed5cc10cb44439cdc
BLAKE2b-256 089c3c9da607202aa16dd8e7ac86ba38c3ad6b2cfa7e10d7e46fe5643bb5a352

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 56afa4809be617742e0e1b3b67ebb92c0f610aeabcd485275f61ecd0a192f3c6
MD5 4645652def115ed17bf7b9f4b686ac15
BLAKE2b-256 fde7571b0c8da5a6b3eb8f53715673d23873a9275ff2c58c45531034d9747ac6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2db873c92e8b77409245f0b02967ed14efc3da1cab0a6521a07daf9f915ba52e
MD5 9518ae8aae30e6cc843c27f7f5897e65
BLAKE2b-256 526dea5a75bbb65f6a2a834e95296f350818bc0c51326cff605747c1fb714828

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3e5d770d4d0d2f6b921e5ea0330eddd718b0902fb653ff7341b3720e0a574190
MD5 dede04a38d8ce5d0f6bf5e45414f5d27
BLAKE2b-256 276b2289bc5ab336804960cc1294a84d6425bb81112113ebc0261187c3100036

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.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.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 55b68c7b3c064dbc28957725d5c42ee327419a2e47dc974d9845b33a3cc1b55a
MD5 578fea2695771ff8c6add3efe9e38ee5
BLAKE2b-256 bdfae8d6717f06b9bfef86fef78d7e7f877118e0f270f4e25190394017eb7a5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 3ec985c0ab6169ae6f98361077efc81a1a6a90de0abbf9780dace338d23f1025
MD5 0e992f61d113e743aa9b321cc40b4b80
BLAKE2b-256 be0788ecaebfe004404179fdccf5608b17c7052be6bce6b9e5b598dd23ee2df1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fe32526d7aa61207884ce39a29a83f5ccc1620be2d7ddc53bccffebc441643d8
MD5 6e8ec951dde62479ba8d685c39397c63
BLAKE2b-256 eb1fb62934d38b19ebcf0b3fa3d16d89782b0598983c7bd627d6a16f7e30bd0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.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.0.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 ceb6263c554ec38daa7cc413a57d162f05f2e87c728a00ba73344f0325f64e84
MD5 6d5c14eb50b13327155dd237c20ef8d1
BLAKE2b-256 e12a29498c8a844c1acc4ff1a8c6bf5947bd808211399abe6ab9869e64ffdfae

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc3e65ef618fdf2ad45f8c62fe1ec664c415150045af70f5b94e7cac849f6df9
MD5 785f3539c0511b72c8194ad731e29101
BLAKE2b-256 540643cc37426e48982652a72867cac8333e78dcff25346db4a793612a74e88d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 86345ee93d2acb5edb2fa4968004884d4a84b79921c7d0845d310bbb08aaba16
MD5 ff4f0de80b97ea8eeaa5afe7ce07f519
BLAKE2b-256 431c358599309b35c275e204f25a9e457346ae63d8f2f1eecaa59e80d6f5151a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 615.1 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.0.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 bf5de9b44569344196cd5605185138e04865fa2eaafe214195699e32ea8f9d7a
MD5 d7cad4b8dd5c28a11174221779284b6b
BLAKE2b-256 f94b1cbe4305ebc1a60bf1239c84899289fc5045180d223983886db1f6437401

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 976.9 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.0.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1b5e64ef5a035051decc5cdead3978542f886eb63011dbcf786325ccc3b0389b
MD5 74789628309236aa43d5d1c5640c3ede
BLAKE2b-256 45c26718b2203acce5f1e73952013438f34c7fa5f897cee1ffeb0033e992d288

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f9dcbc0c776b09f2cde3ad2eb1c4ef863ec88738ce7adef7071fcc4b3cefce9b
MD5 1fa1334cfda326b0815970369c70d0d5
BLAKE2b-256 1d1e57021cd1453cc602a58c80c8dcc2ea1286546998ec67a94b7722e98ac7fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 949758740421b435c3dc283401fb6dc3e5da653075738c72593e4105d5e43222
MD5 b36aba2dc438185ceccd3f57ddbbda3d
BLAKE2b-256 52fd7777962c806b9ba878805b1997a48ad83b54a30579007489a9e16e18abee

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 efa02845578cc4629a772eb0b0740cccbdb852248896d0da361c99e7cb6a19b0
MD5 35f1088bf98ee6cd36221ca10a3cff87
BLAKE2b-256 284949d6f8171a45f8cb1a98440da02bcd2a81195316732c6f99d7ad053f6ff8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e57d34a6290d8438d6e3d092c7f2ae523196d4afcad3caeccf7f47d1a9b36bb0
MD5 763a086cd5eefeccb1ff4479688d88b9
BLAKE2b-256 3be450f64172b8a534a5699a0a74c262f80c9f0010d3933333d588900e35d627

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cc820ff3c395f63930206670f10391ceb5aa6c38d9705bf59363ca8863cbab0a
MD5 75253990d589438d03afc14cacfeb81a
BLAKE2b-256 c7e3f517eea03c51584f9751064bd5ac3f279dc9f5043adfbdf7fdd5c8345f7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bafc865d18342f260610a64bbad627b9684064348d934cb66f740fe7813eb09a
MD5 39a2b391d8897a7c1f91aab9a6a28859
BLAKE2b-256 a2ac58c91c7929b1d138f5b291ac4c0b423481a7e60a8410e17e8c609dee6ab1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.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.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 6cb769edfe595cc1f3c2adb5d546cc14c652456409892b57d3f180defd635a28
MD5 2bcf442078f9c6eb77a9b218d0b6053d
BLAKE2b-256 ad0e2fb5c65f1786124141ae3d176f64bfd710b7b50560e0b9c6adcd1b63aae2

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 d31ee28b32577eded358342a9a81d57a4f2eb55dfb96db0d7967bfdc3dab1ade
MD5 b7dcd3b579f3898a04b450e51c16dd1b
BLAKE2b-256 6cffe3b8c2c7f6c38f008a6f4d449a99f8892f1e99f322e57d8e6ce68062aed4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1ad9745ae94a96b772f37dfd4d61d6c0db926e523158aa1cf48cc10e338dafaa
MD5 df63393bf1da4c908b2da96666701bee
BLAKE2b-256 18602b0255f8ea01d33e925ba4710e7370cee7c3c047938fb1eb92d15f7ec389

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.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.0.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 ddc8fad046d62fca7e9cd017f9872176c914691c89574901ff889a9c599da4bc
MD5 7b04daf8f739d343c383dc555d52d582
BLAKE2b-256 2a3f64955d6d1c6615cd97cd335a297babf4c72a4a45535585a5a41a0c0e82bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 10f71c42e497c335c2777e460bcdf034d145fcfb717c4b4812f8bfd637dfa9b0
MD5 120bdc83962a45d22aeec34e9c8b3744
BLAKE2b-256 433ea4a36bf5fa350ec543749179eb8fefa00591405d1bb5edd05199034b87ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9dae7595ac3a7f1eafe95c5f14afd13872c7c5bba5efdb5cdd0d21531c090445
MD5 051efa1a9c9add564cf3e7c221bff210
BLAKE2b-256 2802035edd8f5f1c67ca4f58bd89579e0f3176c40ea8912a85ba390ce3b50c97

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp313-cp313t-win_arm64.whl
  • Upload date:
  • Size: 580.0 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.0.0-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 12ba50ff5066a3c0d1db71491451502eb894cc232a64053a4d8fd3961c9bb050
MD5 0e4a1de3eb7c7eeeff95c42558b5b233
BLAKE2b-256 2c7452a70d61036d3675ca5aca52c4d36c01cbabcf2412efe91ff459efcad3ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 938.3 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.0.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 5094d09875ef53c0baaddbc7f984cdff8d77d6521f20480384f851852e07df77
MD5 4fc5a96805dd3f011da59d5782db349c
BLAKE2b-256 2a399827c5703226fdcd406e93da0f8d7d86510eac41585fb6073d83dc30510e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e5b936d583cc6e9f14ad3efc16ce0f9caf1c6b99e000c4d896ad911fd1e3b650
MD5 960045c7744bd42c487f2e68e219d431
BLAKE2b-256 e0d69643b9894b343e6c5fbfa80a11257ed3a87f34bd0d8b8ff22ee66697e58c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 022c09b9d312191b387257300db596748ecc6c738de063563e55e1bced032f9c
MD5 dbcb65cc7b0fac35419f054439ceead3
BLAKE2b-256 9328e3694262b2e9f1a6205eccfee7f5279a3697e9f6346e7b3e7021b89a21dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 dfd6a590e1ae1bbd5b7d95018303344e3a09ec0220cf40834f75eb04221d919a
MD5 86fecae30c30f64ef05ee384ef688929
BLAKE2b-256 56d57ff01b4f093719838bdc9806c650768ab080f44f7ffca86f25fe5dea6215

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 fd8312e9798e49499e5123036a20cc5291eb83d38a9ffadbc49e13449f0344be
MD5 9cba7ca9edddfd5825671f6ec1598ec9
BLAKE2b-256 6019b9f34ab1744b5c0adc222849cf3dd09b50a5af0236a3b7f6db43ef80c93b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0b98dfe37cce55c3c613983925029c30b4a174b67b32f462baae072e27385dc5
MD5 d514c2a36e78fe77b8fe0be6cea4485b
BLAKE2b-256 78bafeb41fefc98147841e95ea0289f3b08f7d7f565dc8b2afa1d9de074a1cb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a8e0626945511a933873d928c8b6a7cb007572847bdfd87ddcb8fc2b41946777
MD5 911373a84d25dcb70955fe0d45a20367
BLAKE2b-256 5ccc3406968ebcc75a8322524743c4ed316f137211054753f897f474cc956aab

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.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.0.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 65ec727118b1e1b4cc8321f031225efbbcc6e77d00d9b45dc9758800e025a005
MD5 1087a5e5595019906774f350f62d7493
BLAKE2b-256 9781c9a2823c3719bf26490bed036894bdc5da7a1ed07085d8115431b3fea406

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 5108fdf8e2b466bc0e71c183a5e0605024e0c7ab62af0813af9a7b5548687234
MD5 ec3caa98d57895aa93f0aeb0f6625ae7
BLAKE2b-256 84e15e363ce20278bcb1e9f9ebddc8233de7120fe4d66c374376e24f4f94144a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9465289802322b7f411c7d75a4c95826ba65f64cba8ba59902db0be777605825
MD5 047d09e1cc079155b0ac9f2280351742
BLAKE2b-256 36c2366b3a74bc4618108d29fef8f408a4dd905b1705c8143da1ed74c720238d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.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.0.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 968381f2a9049fc6eeaa1c1cf15d8980ec94f7192290fbbab845a8b3c5738ece
MD5 a87deb72bc44e32c40a0778f4bce1d65
BLAKE2b-256 062c8ac46b8ea840c2631bd528bce1a3499fb046abf2ad4b8a78d7a681c8b9e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 284c6db6727c7096b995d712985f3ba41d675f5e49b31df0a68fc48da09ea04b
MD5 3bcbd51ce45b83dc182df94c69d8b5e3
BLAKE2b-256 f06904eb889ff036e0055d68e0c6c13e28bc384925c8a8e0584c13e84ac3d0b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ca864ffb898cc273bcf8fa2f9bacdc5140a34b5653a3055f5e2ea8749aee0bd0
MD5 a0e3cebcb05f9f65fc0bfff761d66d6d
BLAKE2b-256 5fe497ea49460d5048d26c722e661b67251e7cd8f1d1604afba3d3cd015ef906

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 579.2 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.0.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 e102c074a5ff989f931c2b65c1e37af804b897060b1fc5455e997e46d9bfe492
MD5 e461bcbf38004a15febd9a2fa5e33d8e
BLAKE2b-256 66465421d99d36d305d3dfece6dc621513794f9509f15076c2ecaf2b42edc9ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 936.1 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.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fc430c63abfcfa8c54994cb39678997bf0e3ebd11bdb6895a032dcddd9571b6a
MD5 57372e1f650679a25c72fe9629c7a679
BLAKE2b-256 26bf602c78725f0a6d248ac4ca7636c7c45954bc3f243a5aa62d863cf67ea773

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a4dab139752f3f8f2c4bbe5f52bc0621a36b41e410412717e7549fd70ef45435
MD5 9bc65d611768d646db4f27fbe688faff
BLAKE2b-256 9e49b2f372cb65526b4bae8cd025da90ce53da0b03f6ad8cd511c1377665068a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 93315ca5e947419c91121984e9fb8b3e2759b96407066508991c676abe6c9c8c
MD5 f82f9f6ef35866fb60cb37414b3bb2ba
BLAKE2b-256 b0030d234acca547c21e70cb9d029e418b413211560fbeadafe38be41b671f48

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 f179c326b512d39992b0829a5f4a070cbd71f25bacbfb006bc38ddee1b749205
MD5 ca844a944b7849ff20499a6b1bde2a13
BLAKE2b-256 be399dae968cceba59ab7da2af05b9c381730ea0c88254b811dc888976d5bb4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 3588a831f59ce9c993d26034d8e9f6a8293b1e9e350f05cfe4996d01cdf0e393
MD5 e6d23591b704743ba7dfeecb19b752aa
BLAKE2b-256 1d9d336c5178446d8f20b290f797e51a6d71d98a941308faff0aa8641bbbea01

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 09d5d0b3bb89ec6338a9c77e0b1c49eade9ed0382cfe40deeacebd7fd3d4f997
MD5 a12137cc360788212c0be02c69784006
BLAKE2b-256 ae64fd3fa7d69cd1098fc355cb3751a84c60c45b1915ac4d2548f4b53d657ad0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 73447a91ef51f62714d0dd77c54a78f7939ce64706eef24c302a57ffda11257d
MD5 492b0916fd04f1d1fe043ab02a4f3993
BLAKE2b-256 bcf8a7bbd84b8fe7871d3d9a9ff20c51f65c84e73c41a50588d0329800f1f9da

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.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.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 bf48bd6419443d3dcc6b26983d6a6dd9465f9b6d34edc7ec224efe06ef67b221
MD5 229991de923978320fc0b4d3e5894ace
BLAKE2b-256 13f07feb7b0f60e98c303f496b8d55c46e041aa67c28dcba9eaa918b63c77187

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 2631f3ac4123eb53c487a55bd50e19fcc4fa762f63f1746ffec222a1ddead0e0
MD5 4a541d60fdcb2545cdce1030faefca7c
BLAKE2b-256 bfdfa4b0a20277409077a2950bc96b7436aa9b2f05bc638914173be5013666f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 744494ce521a467fa1673e129e8a75cbd48271089f0b8b801df6e0a80f823d09
MD5 c955e321d174b00ef57c4262f4dbc5ef
BLAKE2b-256 4ca0baef62dab5f2224013c44bae5b8b546becf702fd4e73a87e1df26b7a9864

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.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.0.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 110c0722c41feaecd77b2222719645c2e6ace8f235f9df810d828e855fb142e8
MD5 bba64942d6a97eb3b459968d72177869
BLAKE2b-256 55fafa9ef8168d1a2e931ec3011b72605e1f171f1fc434656be832822a7ec214

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 47865dcea84e3747b078b904fab4d2a611d83c45284c41b83f60dd5bc4c7cf73
MD5 16f8d7c26843e5f9478f0efecb4c9639
BLAKE2b-256 2d91a2dfbf17de570ce9035ffc58b7a0be8004f6f16f586b5907226026988943

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1a109d1def9086353b790f4612010a19aea336ef1151324a5d8e00fd6c7fbb6f
MD5 2c9a62894a9ba0c54bf1b17469765d0d
BLAKE2b-256 85f9ad446d1637a06b6cd762c09b77de1b42d8a3e606f31314c73f5e4466c273

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 579.2 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.0.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 6d0c13cc04cee8282db5d70275e684efc7ebfb6183f1b2dd209f02230174e840
MD5 d79b1acb85f11f184f9f91a4be3763b0
BLAKE2b-256 ad4296cbc6e0240af1e90794930372948ad90d45a34abcbbf53110fae4d072fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 936.1 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.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2878f85a9cc710afc4038b3b36cd6e7f9f545a7a45a4c3254bba2ff65dd49750
MD5 db66e7e683982d4b6dab50356303048b
BLAKE2b-256 9804168fb4dc338c4e4f348c992a519e2c928e90873b39332023dc4094223723

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3bf1a4374d4968c42ab0ffbb2b36080ee396413ad2d5408b7a4bf2a6d51bdecd
MD5 fabc17efaeeb40df432926e4950628a9
BLAKE2b-256 538de86801500e154ec08a21207600cf0360968e84521ebafb7004960b8e0c18

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 625d3011af43f99ac8f8850fd753bb9008177f51d8b1f7bd004b9b9d024016d5
MD5 68279bc1d8c8428fd816b48edd627861
BLAKE2b-256 8edf85230040e3cddb7da5f8b745382adc2e25baa337394a767bcae42db550d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 1c18aa3f5e71fdb0a7a36cbca7f5d9a81b776e3dc8692ebaf771b1cafeb398d4
MD5 24c76e7d8b043007d44496f6fc3f298a
BLAKE2b-256 57e96f71b16aca3a3189a850006e1b01163edd59aad81e76a5ff62777c836cdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4fce14b5982e2472207e006ebacd4900de174ee5493d1de2d976c33b96e4cb98
MD5 719e1200032155b94f2dbac78646d124
BLAKE2b-256 96b324910b7184ad44807f21f93419f238f1d205424002e9a8c642d80e8aeb6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 11839e134ac6b833f27fe2a7f780f00bcfec5fe77348e1e3cef235a65a86a4fe
MD5 284e2a451d58b69238f38963fa521ceb
BLAKE2b-256 af0717eab1e7874484b1f0817b1f6e6b7b3e698840d854547b40e5f731ab20cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8fdd79a1ef4143b5e3a1c31c04e0873bcd46de39ba277cabaa184d2f36774213
MD5 c63efd8436666a28c6e66e126a5de61d
BLAKE2b-256 788211a8a8af4a32ee68c0e9fd6c396bd8612c1899ba695a9f6529d76225488e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.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.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 1c586b5422eb037107ee41f2f47f87966964030b9cd417789fed4930d9afef4f
MD5 2dd5f6ad4f78f09689795570a8bd9f0c
BLAKE2b-256 41013c25e3ad2bb9b37e6db0edd22e8d27b31f48ce67a0017ceb15e81d7f4f45

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 f7770d94b82d49c227b0f7c6247eb6f8c9c8ceaa6664ecefb1af430bb08510b4
MD5 d7af19de783d1d59b3f9ab2fe4fdeca2
BLAKE2b-256 0b9732c23974c2ca1b84b71ce4615dd7df00821436cf079b5367d055ddb95960

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 218ea144c1c3c5096de09d32c2015c0f70ab979e28311aa67afe8dc6c778d427
MD5 65b82308e7dfbc3c2a4b2d6a2bc8612a
BLAKE2b-256 6a9e238c897f7815eb7394c02722d7fb1f8c84dfc7e8cebe3145e3c9d695c4ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.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.0.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 b398bc48e8449dba5e4d8f3d604b00ea95b9904c81e1071f167fbc1dd0270d72
MD5 fe5d6503cbdc2098c53f92ce1e80eb00
BLAKE2b-256 2de5a26c61d337814d5d799fd2e29783ed4c64c18424453dee187e1aa6053ca7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8597bb681f12eb79dce3a600a218a99b9253de2872903e3ccf60b466d0aae24b
MD5 a3b43094f4cbed156d10ec7e800af444
BLAKE2b-256 fc25b09229983f8fd399f875577152194714006c76abfe9d432bb1da855f035b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ec59e1492f7e9e95cb7ca32ca91f055fb887829d181c68860c35fa9d576ef8e3
MD5 0ea8ead44cc7b1afbbbd9e3dcfa2938a
BLAKE2b-256 ad5c29752b578a73a466c1b0cf0875acd54831424b8eee9d5b21fb228e3cda41

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 579.2 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.0.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 af12dcf2b665aec6c8aed9342866fea4cd8b477ca59d1c84d5ad4ece8d2195f0
MD5 8c2d8b58f55532d1aa29732d30572c01
BLAKE2b-256 01f0b02241ae846c10ffd6746ecd2a4027ffccbf43d77ebe981f5698d17413f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 935.7 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.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a4b387fa5a7df5f78e6f9465fc827dfcf6a8afeb6dbd9771362ad3fc9db25857
MD5 3310a2c96e63b75b1c8cd69272c5c4b4
BLAKE2b-256 dae4f251d8783211d064cda25fb631e6c875dcab18c8d1ceb0120dd24fd950a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 944fba01517250d312266d15fc956d7e5705520f285653b2b93c38e3b0e51b3c
MD5 1ee335b9bf7d7988371b5c53370c7226
BLAKE2b-256 cfa83a736a8793d69ebeba63fb65060b8ab77811317c8d20dabc712d46a6a4af

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 80d1b4b9ad7cd2eb032a6e5eedb5222c72bc358ecfa8ae5e7683e4b47ccb9572
MD5 01f70556d508cac23f2166dc6cdf7559
BLAKE2b-256 d44083ecc6475b1f87531431eb13e1dc522f63307b6180692c33524af97e7568

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 3801511223a09adbbac430d74b31e14d23e8647d89503d0999fecace1791ce12
MD5 0d2ab41c5aea9ec41f208d98ed7a5b1a
BLAKE2b-256 6398d736f32078068795abb4797ba1f97bb9a948172ae9b0a923da28677f3fa5

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 aee8504d330ab48db19b31685b4ca0a764e04ebadb44f0379afde1de3817305c
MD5 6c3364e9022e9554b7e159cbc36bd775
BLAKE2b-256 e7364c7a66fc3fa16446049693fc637a16730ecb9456bdde2a887fa5b2145ab1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a67fd5ddbfb8a1fde28596e4d275524d387ed26b458c0f7391fff2b5a164fa0d
MD5 39be3e61b0d6672390f2848a9743ae19
BLAKE2b-256 bb2ccd31b74451946e3620467c1b80fba511a6d3690d1b0bb77690660f43891f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0cf1c702445388f449a426508d4cedd2bcd7421e13e1c1931800a48031290399
MD5 798fdd1248e6a76addb70ed15d8bd1ae
BLAKE2b-256 8d483257f135051b7b8cf0c144371341b5f01d976afde7a6d8aa49085ef2f5ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.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.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 7aa8229e03091d1f6dbf485c878323cd1842019ea4f31cc25634f177797c2a66
MD5 d48ad09347d22bf7c743ab96e5b783bd
BLAKE2b-256 8a43e8df6d2b867cdf434b871ed78aead8d0676cd2b586c89973fbf54251144c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 21ab216a931104f21ddecae029e4d38f9914ea9f6fed07870b4f73dd58845695
MD5 036bd7cca47e7a536a10bee77b13899e
BLAKE2b-256 87e4e6063feccbf7c07207a20b4aad49fd6779c8fbfef309e5b251b0638175a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d050aaa72e581c435a76e75d26e4f8d3a85bd47c14fae48c4b7d9ed7decb8c1e
MD5 a99a71d595995f944eec00621131c2f1
BLAKE2b-256 4cf1c47e3004ae303e589fcae2d77164d17bc36e945b221f18f9830a4d0840d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.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.0.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 bfe433f3cf7e6aa2e21117f4d51c77f5b8ec61ad913fd86873b6d0c6a756e302
MD5 27b7fc038f9ffbab52278cb3964ba611
BLAKE2b-256 0ddcc49a9ccdd141cc6d2d77668c48ab43e428d4cf12c1a914485eb6f142ae9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e4877b6aa04504c148fc5c9d7c9154f071bf888e606c0249b6e80e941e78d6c4
MD5 c1c9ca5419eb9ce5902949ba9dcfda1a
BLAKE2b-256 22ea1c16e11b6185c1eba4f146ba12733d9f1c8d6e953e0eba86232154ec1ff0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ec0ccb4bb038a6749c6165a4e8be74916a1cc3b3dfdbeaae371528ae83c45293
MD5 bf79c48ed1362443dfd7558015e41648
BLAKE2b-256 87fee13769d8c962b7a223fa6440218fe25c785f34dc9a94ddf62fae270267f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 579.3 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.0.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 a0a3994aa484851d8c81004e0b737c777e19124009b8ace2fe747c5eb697bf50
MD5 1ca788e2e56f74ab456a0ed1a27bbce7
BLAKE2b-256 c9e50960358fb0ba7a774acd7de0478af3fb7ec9480fd732825faa21e680bb4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: numkong-7.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 935.8 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.0.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c3f68f881371e7dc6cd2a2ef6de858416510d1cbab0c87341f481bbcd37a80a8
MD5 5631a5d44d5929de972006dc5ddf165b
BLAKE2b-256 5e4da39e542b1b41af7061acac8eab42237988858db63ed61710a3cc177cb506

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 81ca662a8045aa77b0ed5c6acc5a226462ba708278144ef59c97e2db0ce49421
MD5 e6744f8b4ac700df0e3c87dd8c0c3c71
BLAKE2b-256 2ca805f878bd6e87f2497295ede55da54b9997d2e2af0b15bc8d1293be70e780

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 8fb3774f1397f4c86c8672c7f318414010685408a1aff1e75bf53028c4b1d304
MD5 913f2b999e1583f8ed4000dc97ede442
BLAKE2b-256 3227973af936408e4ce169453e074c87c5c3d9b2b12c475439b38135454c18a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 5f8e1caed36ea70fd537bd89f3a6cc4a837dedf59648012a855901712609e864
MD5 d53ab965c187b1849c741b3cc8079834
BLAKE2b-256 3930147e06109178755f1808d13cbea54e6dbc5997dce70603fcb101a03b3f55

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 6bbd89b427ea1dce0ba4d34e0ffac85f7a2034fccab0d48d8500dcfb50ab3f79
MD5 fb3775d72dd5d557754d13c766ab8307
BLAKE2b-256 1f9fca5d097990785478e8637e1ac80ae5fa40e9145361c52e8664a2911a28b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8b2bb77841f541d3052c9b781b74a88874bffe860d877f29c8c29997fc7781db
MD5 9f52635ba912971c15014dc12ccf4a3b
BLAKE2b-256 cfeccb745c0c2b59734d7d15992d4c68c9999e325e3a1e4eabad2abc002331e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fdf110f84ebb7c4db57ec5b33a8c96911d4c8de23c6a240c29dd429367149637
MD5 af844913b81d2dffcbccdae354b30ab0
BLAKE2b-256 045f964a2936b208166c5d9b1f1f391f3922a68afd0ea78a3abc56a4cc5f5083

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.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.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 88db7e767a4de7e2fa9552d3da079c002a02d797de3e95d4e4421ea7326cdea4
MD5 cf4aa9ccdd83ef61c918009068e4c81f
BLAKE2b-256 df8d35e2f48a7f716474737535de747356e423951a15310d6c488cd7ebafdfc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 8e0afe64baa42a56f55e419b8268669db0c33268bcf39f801434b7adece01b94
MD5 6ac09244929694a7af2cdf484ca91c04
BLAKE2b-256 f6859846bbaaec4fc55098b9078705c5e5dec480d3b55bf45056c0cba9d1c645

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9194a1f02007ad75d9304b6507b8aa26b0523cefd6a944c7962f4a112cf629bc
MD5 9683803ba917d5c3668d190a543718de
BLAKE2b-256 949790631ee7f6bffd7a5143648310d3c0a0d14f4fdfbc66d0fc27b748283b81

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.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.0.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 5f750c3bc463125ec56b6443d65116917bb8c6a5fb0f5494b7c9212a35d8194c
MD5 7479fbccaaff1a472fd4d3c8a926c296
BLAKE2b-256 9a50e37260fef27842d44d202cb8535527ac1edd615b665027415cf0c56ae8d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3a8e107b05cab3ac62b7125b6dfe50063f423521d8f61ffb4f6ede24933761c8
MD5 9805070c3f0f0b95d9be3c6b8fbb70cb
BLAKE2b-256 181ebbff80bc6835fbcd3fa2ff560f644f937e28fefbbffe31f28f3646f6ce7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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.0.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.0.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 847525a66593a400cdee3408961cf78396c5719e7babc05d0615eacf8e05fbfd
MD5 48f3211c2e7a276504d3f768a22a2afb
BLAKE2b-256 4a350b05197f84668ea0a4cef41777aa2a09ce15964e131155a9b780a39c1c59

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.0.0-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