Skip to main content

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

Project description

SimSIMD banner

Computing dot-products, similarity measures, and distances between low- and high-dimensional vectors is ubiquitous in Machine Learning, Scientific Computing, Geo-Spatial Analysis, and Information Retrieval. These algorithms generally have linear complexity in time, constant or linear complexity in space, and are data-parallel. In other words, it is easily parallelizable and vectorizable and often available in packages like BLAS (level 1) and LAPACK, as well as higher-level numpy and scipy Python libraries. Ironically, even with decades of evolution in compilers and numerical computing, most libraries can be 3-200x slower than hardware potential even on the most popular hardware, like 64-bit x86 and Arm CPUs. Moreover, most lack mixed-precision support, which is crucial for modern AI! The rare few that support minimal mixed precision, run only on one platform, and are vendor-locked, by companies like Intel and Nvidia. SimSIMD provides an alternative. 1️⃣ SimSIMD functions are practically as fast as memcpy. 2️⃣ Unlike BLAS, most kernels are designed for mixed-precision and bit-level operations. 3️⃣ SimSIMD often ships more binaries than NumPy and has more backends than most BLAS implementations, and more high-level interfaces than most libraries.

Features

SimSIMD (Arabic: "سيمسيم دي") is a mixed-precision math library of over 350 SIMD-optimized kernels extensively used in AI, Search, and DBMS workloads. Named after the iconic "Open Sesame" command that opened doors to treasure in Ali Baba and the Forty Thieves, SimSimd can help you 10x the cost-efficiency of your computational pipelines. Implemented distance functions include:

  • Euclidean (L2) and Cosine (Angular) spatial distances for Vector Search. docs
  • Dot-Products for real & complex vectors for DSP & Quantum computing. docs
  • Hamming (~ Manhattan) and Jaccard (~ Tanimoto) bit-level distances. docs
  • Set Intersections for Sparse Vectors and Text Analysis. docs
  • Mahalanobis distance and Quadratic forms for Scientific Computing. docs
  • Kullback-Leibler and Jensen–Shannon divergences for probability distributions. docs
  • Fused-Multiply-Add (FMA) and Weighted Sums to replace BLAS level 1 functions. docs
  • For Levenshtein, Needleman–Wunsch, and Smith-Waterman, check StringZilla.
  • 🔜 Haversine and Vincenty's formulae for Geospatial Analysis.

Moreover, SimSIMD...

  • handles float64, float32, float16, and bfloat16 real & complex vectors.
  • handles int8 integral, int4 sub-byte, and b8 binary vectors.
  • handles sparse uint32 and uint16 sets, and weighted sparse vectors.
  • is a zero-dependency header-only C 99 library.
  • has Python, Rust, JS, and Swift bindings.
  • has Arm backends for NEON, Scalable Vector Extensions (SVE), and SVE2.
  • has x86 backends for Haswell, Skylake, Ice Lake, Genoa, and Sapphire Rapids.
  • with both compile-time and runtime CPU feature detection easily integrates anywhere!

Due to the high-level of fragmentation of SIMD support in different x86 CPUs, SimSIMD generally uses the names of select Intel CPU generations for its backends. They, however, also work on AMD CPUs. Intel Haswell is compatible with AMD Zen 1/2/3, while AMD Genoa Zen 4 covers AVX-512 instructions added to Intel Skylake and Ice Lake. You can learn more about the technical implementation details in the following blog-posts:

Benchmarks

NumPy C 99 SimSIMD
cosine distances between 1536d vectors in int8
🚧 overflows
x86: 10,548,600 ops/s
arm: 11,379,300 ops/s
x86: 16,151,800 ops/s
arm: 13,524,000 ops/s
cosine distances between 1536d vectors in bfloat16
🚧 not supported
x86: 119,835 ops/s
arm: 403,909 ops/s
x86: 9,738,540 ops/s
arm: 4,881,900 ops/s
cosine distances between 1536d vectors in float16
x86: 40,481 ops/s
arm: 21,451 ops/s
x86: 501,310 ops/s
arm: 871,963 ops/s
x86: 7,627,600 ops/s
arm: 3,316,810 ops/s
cosine distances between 1536d vectors in float32
x86: 253,902 ops/s
arm: 46,394 ops/s
x86: 882,484 ops/s
arm: 399,661 ops/s
x86: 8,202,910 ops/s
arm: 3,400,620 ops/s
cosine distances between 1536d vectors in float64
x86: 212,421 ops/s
arm: 52,904 ops/s
x86: 839,301 ops/s
arm: 837,126 ops/s
x86: 1,538,530 ops/s
arm: 1,678,920 ops/s
euclidean distance between 1536d vectors in int8
x86: 252,113 ops/s
arm: 177,443 ops/s
x86: 6,690,110 ops/s
arm: 4,114,160 ops/s
x86: 18,989,000 ops/s
arm: 18,878,200 ops/s
euclidean distance between 1536d vectors in bfloat16
🚧 not supported
x86: 119,842 ops/s
arm: 1,049,230 ops/s
x86: 9,727,210 ops/s
arm: 4,233,420 ops/s
euclidean distance between 1536d vectors in float16
x86: 54,621 ops/s
arm: 71,793 ops/s
x86: 196,413 ops/s
arm: 911,370 ops/s
x86: 19,466,800 ops/s
arm: 3,522,760 ops/s
euclidean distance between 1536d vectors in float32
x86: 424,944 ops/s
arm: 292,629 ops/s
x86: 1,295,210 ops/s
arm: 1,055,940 ops/s
x86: 8,924,100 ops/s
arm: 3,602,650 ops/s
euclidean distance between 1536d vectors in float64
x86: 334,929 ops/s
arm: 237,505 ops/s
x86: 1,215,190 ops/s
arm: 905,782 ops/s
x86: 1,701,740 ops/s
arm: 1,735,840 ops/s

For benchmarks we mostly use 1536-dimensional vectors, like the embeddings produced by the OpenAI Ada API. The code was compiled with GCC 12, using glibc v2.35. The benchmarks performed on Arm-based Graviton3 AWS c7g instances and r7iz Intel Sapphire Rapids. Most modern Arm-based 64-bit CPUs will have similar relative speedups. Variance withing x86 CPUs will be larger.

Similar speedups are often observed even when compared to BLAS and LAPACK libraries underlying most numerical computing libraries, including NumPy and SciPy in Python. Broader benchmarking results:

Using SimSIMD in Python

The package is intended to replace the usage of numpy.inner, numpy.dot, and scipy.spatial.distance. Aside from drastic performance improvements, SimSIMD significantly improves accuracy in mixed precision setups. NumPy and SciPy, processing int8, uint8 or float16 vectors, will use the same types for accumulators, while SimSIMD can combine int8 enumeration, int16 multiplication, and int32 accumulation to avoid overflows entirely. The same applies to processing float16 and bfloat16 values with float32 precision.

Installation

Use the following snippet to install SimSIMD and list available hardware acceleration options available on your machine:

pip install simsimd
python -c "import simsimd; print(simsimd.get_capabilities())"   # for hardware introspection
python -c "import simsimd; help(simsimd)"                       # for documentation

With precompiled binaries, SimSIMD ships .pyi interface files for type hinting and static analysis. You can check all the available functions in python/annotations/__init__.pyi.

One-to-One Distance

import simsimd
import numpy as np

vec1 = np.random.randn(1536).astype(np.float32)
vec2 = np.random.randn(1536).astype(np.float32)
dist = simsimd.cosine(vec1, vec2)

Supported functions include cosine, inner, sqeuclidean, hamming, jaccard, kulbackleibler, jensenshannon, and intersect. Dot products are supported for both real and complex numbers:

vec1 = np.random.randn(768).astype(np.float64) + 1j * np.random.randn(768).astype(np.float64)
vec2 = np.random.randn(768).astype(np.float64) + 1j * np.random.randn(768).astype(np.float64)

dist = simsimd.dot(vec1.astype(np.complex128), vec2.astype(np.complex128))
dist = simsimd.dot(vec1.astype(np.complex64), vec2.astype(np.complex64))
dist = simsimd.vdot(vec1.astype(np.complex64), vec2.astype(np.complex64)) # conjugate, same as `np.vdot`

Unlike SciPy, SimSIMD allows explicitly stating the precision of the input vectors, which is especially useful for mixed-precision setups. The dtype argument can be passed both by name and as a positional argument:

dist = simsimd.cosine(vec1, vec2, "int8")
dist = simsimd.cosine(vec1, vec2, "float16")
dist = simsimd.cosine(vec1, vec2, "float32")
dist = simsimd.cosine(vec1, vec2, "float64")
dist = simsimd.hamming(vec1, vec2, "bin8")

Binary distance functions are computed at a bit-level. Meaning a vector of 10x 8-bit integers will be treated as a sequence of 80 individual bits or dimensions. This differs from NumPy, that can't handle smaller-than-byte types, but you can still avoid the bin8 argument by reinterpreting the vector as booleans:

vec1 = np.random.randint(2, size=80).astype(np.uint8).packbits().view(np.bool_)
vec2 = np.random.randint(2, size=80).astype(np.uint8).packbits().view(np.bool_)
hamming_distance = simsimd.hamming(vec1, vec2)
jaccard_distance = simsimd.jaccard(vec1, vec2)

With other frameworks, like PyTorch, one can get a richer type-system than NumPy, but the lack of good CPython interoperability makes it hard to pass data without copies. Here is an example of using SimSIMD with PyTorch to compute the cosine similarity between two bfloat16 vectors:

import numpy as np
buf1 = np.empty(8, dtype=np.uint16)
buf2 = np.empty(8, dtype=np.uint16)

# View the same memory region with PyTorch and randomize it
import torch
vec1 = torch.asarray(memoryview(buf1), copy=False).view(torch.bfloat16)
vec2 = torch.asarray(memoryview(buf2), copy=False).view(torch.bfloat16)
torch.randn(8, out=vec1)
torch.randn(8, out=vec2)

# Both libs will look into the same memory buffers and report the same results
dist_slow = 1 - torch.nn.functional.cosine_similarity(vec1, vec2, dim=0)
dist_fast = simsimd.cosine(buf1, buf2, "bfloat16")

It also allows using SimSIMD for half-precision complex numbers, which NumPy does not support. For that, view data as continuous even-length np.float16 vectors and override type-resolution with complex32 string.

vec1 = np.random.randn(1536).astype(np.float16)
vec2 = np.random.randn(1536).astype(np.float16)
simd.dot(vec1, vec2, "complex32")
simd.vdot(vec1, vec2, "complex32")

When dealing with sparse representations and integer sets, you can apply the intersect function to two 1-dimensional arrays of uint16 or uint32 integers:

from random import randint
import numpy as np
import simsimd as simd

length1, length2 = randint(1, 100), randint(1, 100)
vec1 = np.sort(np.random.randint(0, 1000, length1).astype(np.uint16))
vec2 = np.sort(np.random.randint(0, 1000, length2).astype(np.uint16))

slow_result = len(np.intersect1d(vec1, vec2))
fast_result = simd.intersect(vec1, vec2)
assert slow_result == fast_result

One-to-Many Distances

Every distance function can be used not only for one-to-one but also one-to-many and many-to-many distance calculations. For one-to-many:

vec1 = np.random.randn(1536).astype(np.float32) # rank 1 tensor
batch1 = np.random.randn(1, 1536).astype(np.float32) # rank 2 tensor
batch2 = np.random.randn(100, 1536).astype(np.float32)

dist_rank1 = simsimd.cosine(vec1, batch2)
dist_rank2 = simsimd.cosine(batch1, batch2)

Many-to-Many Distances

All distance functions in SimSIMD can be used to compute many-to-many distances. For two batches of 100 vectors to compute 100 distances, one would call it like this:

batch1 = np.random.randn(100, 1536).astype(np.float32)
batch2 = np.random.randn(100, 1536).astype(np.float32)
dist = simsimd.cosine(batch1, batch2)

Input matrices must have identical shapes. This functionality isn't natively present in NumPy or SciPy, and generally requires creating intermediate arrays, which is inefficient and memory-consuming.

Many-to-Many All-Pairs Distances

One can use SimSIMD to compute distances between all possible pairs of rows across two matrices (akin to scipy.spatial.distance.cdist). The resulting object will have a type DistancesTensor, zero-copy compatible with NumPy and other libraries. For two arrays of 10 and 1,000 entries, the resulting tensor will have 10,000 cells:

import numpy as np
from simsimd import cdist, DistancesTensor

matrix1 = np.random.randn(1000, 1536).astype(np.float32)
matrix2 = np.random.randn(10, 1536).astype(np.float32)
distances: DistancesTensor = simsimd.cdist(matrix1, matrix2, metric="cosine")   # zero-copy, managed by SimSIMD
distances_array: np.ndarray = np.array(distances, copy=True)                    # now managed by NumPy

Element-wise Kernels

SimSIMD also provides mixed-precision element-wise kernels, where the input vectors and the output have the same numeric type, but the intermediate accumulators are of a higher precision.

import numpy as np
from simsimd import fma, wsum

# Let's take two FullHD video frames
first_frame = np.random.randn(1920 * 1024).astype(np.uint8)
second_frame = np.random.randn(1920 * 1024).astype(np.uint8)
average_frame = np.empty_like(first_frame)
wsum(first_frame, second_frame, alpha=0.5, beta=0.5, out=average_frame)

# Slow analog with NumPy:
slow_average_frame = (0.5 * first_frame + 0.5 * second_frame).astype(np.uint8)

Similarly, the fma takes three arguments and computes the fused multiply-add operation. In applications like Machine Learning you may also benefit from using the "brain-float" format not natively supported by NumPy. In 3D Graphics, for example, we can use FMA to compute the Phong shading model:

# Assume a FullHD frame with random values for simplicity
light_intensity = np.random.rand(1920 * 1080).astype(np.float16)  # Intensity of light on each pixel
diffuse_component = np.random.rand(1920 * 1080).astype(np.float16)  # Diffuse reflectance on the surface
specular_component = np.random.rand(1920 * 1080).astype(np.float16)  # Specular reflectance for highlights
output_color = np.empty_like(light_intensity)  # Array to store the resulting color intensity

# Define the scaling factors for diffuse and specular contributions
alpha = 0.7  # Weight for the diffuse component
beta = 0.3   # Weight for the specular component

# Formula: color = alpha * light_intensity * diffuse_component + beta * specular_component
fma(light_intensity, diffuse_component, specular_component,
    dtype="float16", # Optional, unless it can't be inferred from the input
    alpha=alpha, beta=beta, out=output_color)

# Slow analog with NumPy for comparison
slow_output_color = (alpha * light_intensity * diffuse_component + beta * specular_component).astype(np.float16)

Multithreading and Memory Usage

By default, computations use a single CPU core. To override this behavior, use the threads argument. Set it to 0 to use all available CPU cores and let the underlying C library manage the thread pool. Here is an example of dealing with large sets of binary vectors:

ndim = 1536 # OpenAI Ada embeddings
matrix1 = np.packbits(np.random.randint(2, size=(10_000, ndim)).astype(np.uint8))
matrix2 = np.packbits(np.random.randint(2, size=(1_000, ndim)).astype(np.uint8))

distances = simsimd.cdist(matrix1, matrix2,
    metric="hamming",   # Unlike SciPy, SimSIMD doesn't divide by the number of dimensions
    out_dtype="uint8",  # so we can use `uint8` instead of `float64` to save memory.
    threads=0,          # Use all CPU cores with OpenMP.
    dtype="bin8",       # Override input argument type to `bin8` eight-bit words.
)

Alternatively, when using free-threading Python 3.13t builds, one can combine single-threaded SimSIMD operations with Python's concurrent.futures.ThreadPoolExecutor to parallelize the computations. By default, the output distances will be stored in double-precision float64 floating-point numbers. That behavior may not be space-efficient, especially if you are computing the hamming distance between short binary vectors, that will generally fit into 8x smaller uint8 or uint16 types. To override this behavior, use the out_dtype argument, or consider pre-allocating the output array and passing it to the out argument. A more complete example may look like this:

from multiprocessing import cpu_count
from concurrent.futures import ThreadPoolExecutor
from simsimd import cosine
import numpy as np

# Generate large dataset
vectors_a = np.random.rand(100_000, 1536).astype(np.float32)
vectors_b = np.random.rand(100_000, 1536).astype(np.float32)
distances = np.zeros((100_000,), dtype=np.float32)

def compute_batch(start_idx, end_idx):
    batch_a = vectors_a[start_idx:end_idx]
    batch_b = vectors_b[start_idx:end_idx]
    cosine(batch_a, batch_b, out=distances[start_idx:end_idx])

# Use all CPU cores with true parallelism (no GIL!)
num_threads = cpu_count()
chunk_size = len(vectors_a) // num_threads

with ThreadPoolExecutor(max_workers=num_threads) as executor:
    futures = []
    for i in range(num_threads):
        start_idx = i * chunk_size
        end_idx = (i + 1) * chunk_size if i < num_threads - 1 else len(vectors_a)
        futures.append(executor.submit(compute_batch, start_idx, end_idx))

    # Collect results from all threads
    results = [future.result() for future in futures]

Half-Precision Brain-Float Numbers

The "brain-float-16" is a popular machine learning format. It's broadly supported in hardware and is very machine-friendly, but software support is still lagging behind. Unlike NumPy, you can already use bf16 datatype in SimSIMD. Luckily, to downcast f32 to bf16 you only have to drop the last 16 bits:

import numpy as np
import simsimd as simd

a = np.random.randn(ndim).astype(np.float32)
b = np.random.randn(ndim).astype(np.float32)

# NumPy doesn't natively support brain-float, so we need a trick!
# Luckily, it's very easy to reduce the representation accuracy
# by simply masking the low 16-bits of our 32-bit single-precision
# numbers. We can also add `0x8000` to round the numbers.
a_f32rounded = ((a.view(np.uint32) + 0x8000) & 0xFFFF0000).view(np.float32)
b_f32rounded = ((b.view(np.uint32) + 0x8000) & 0xFFFF0000).view(np.float32)

# To represent them as brain-floats, we need to drop the second half
a_bf16 = np.right_shift(a_f32rounded.view(np.uint32), 16).astype(np.uint16)
b_bf16 = np.right_shift(b_f32rounded.view(np.uint32), 16).astype(np.uint16)

# Now we can compare the results
expected = np.inner(a_f32rounded, b_f32rounded)
result = simd.inner(a_bf16, b_bf16, "bf16")

Helper Functions

You can turn specific backends on or off depending on the exact environment. A common case may be avoiding AVX-512 on older AMD CPUs and Intel Ice Lake CPUs to ensure the CPU doesn't change the frequency license and throttle performance.

$ simsimd.get_capabilities()
> {'serial': True, 'neon': False, 'sve': False, 'neon_f16': False, 'sve_f16': False, 'neon_bf16': False, 'sve_bf16': False, 'neon_i8': False, 'sve_i8': False, 'haswell': True, 'skylake': True, 'ice': True, 'genoa': True, 'sapphire': True, 'turin': True}
$ simsimd.disable_capability("sapphire")
$ simsimd.enable_capability("sapphire")

Using Python API with USearch

Want to use it in Python with USearch? You can wrap the raw C function pointers SimSIMD backends into a CompiledMetric and pass it to USearch, similar to how it handles Numba's JIT-compiled code.

from usearch.index import Index, CompiledMetric, MetricKind, MetricSignature
from simsimd import pointer_to_sqeuclidean, pointer_to_cosine, pointer_to_inner

metric = CompiledMetric(
    pointer=pointer_to_cosine("f16"),
    kind=MetricKind.Cos,
    signature=MetricSignature.ArrayArraySize,
)

index = Index(256, metric=metric)

Using SimSIMD in Rust

To install, add the following to your Cargo.toml:

[dependencies]
simsimd = "..."

Before using the SimSIMD library, ensure you have imported the necessary traits and types into your Rust source file. The library provides several traits for different distance/similarity kinds - SpatialSimilarity, BinarySimilarity, and ProbabilitySimilarity.

Spatial Similarity: Cosine and Euclidean Distances

use simsimd::SpatialSimilarity;

fn main() {
    let vector_a: Vec<f32> = vec![1.0, 2.0, 3.0];
    let vector_b: Vec<f32> = vec![4.0, 5.0, 6.0];

    // Compute the cosine similarity between vector_a and vector_b
    let cosine_similarity = f32::cosine(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    println!("Cosine Similarity: {}", cosine_similarity);

    // Compute the squared Euclidean distance between vector_a and vector_b
    let sq_euclidean_distance = f32::sqeuclidean(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    println!("Squared Euclidean Distance: {}", sq_euclidean_distance);
}

Spatial similarity functions are available for f64, f32, f16, and i8 types.

Dot-Products: Inner and Complex Inner Products

use simsimd::SpatialSimilarity;
use simsimd::ComplexProducts;

fn main() {
    let vector_a: Vec<f32> = vec![1.0, 2.0, 3.0, 4.0];
    let vector_b: Vec<f32> = vec![5.0, 6.0, 7.0, 8.0];

    // Compute the inner product between vector_a and vector_b
    let inner_product = SpatialSimilarity::dot(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    println!("Inner Product: {}", inner_product);

    // Compute the complex inner product between complex_vector_a and complex_vector_b
    let complex_inner_product = ComplexProducts::dot(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    let complex_conjugate_inner_product = ComplexProducts::vdot(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    println!("Complex Inner Product: {:?}", complex_inner_product); // -18, 69
    println!("Complex C. Inner Product: {:?}", complex_conjugate_inner_product); // 70, -8
}

Complex inner products are available for f64, f32, and f16 types.

Probability Distributions: Jensen-Shannon and Kullback-Leibler Divergences

use simsimd::SpatialSimilarity;

fn main() {
    let vector_a: Vec<f32> = vec![1.0, 2.0, 3.0];
    let vector_b: Vec<f32> = vec![4.0, 5.0, 6.0];

    let cosine_similarity = f32::jensenshannon(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    println!("Cosine Similarity: {}", cosine_similarity);

    let sq_euclidean_distance = f32::kullbackleibler(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    println!("Squared Euclidean Distance: {}", sq_euclidean_distance);
}

Probability similarity functions are available for f64, f32, and f16 types.

Binary Similarity: Hamming and Jaccard Distances

Similar to spatial distances, one can compute bit-level distance functions between slices of unsigned integers:

use simsimd::BinarySimilarity;

fn main() {
    let vector_a = &[0b11110000, 0b00001111, 0b10101010];
    let vector_b = &[0b11110000, 0b00001111, 0b01010101];

    // Compute the Hamming distance between vector_a and vector_b
    let hamming_distance = u8::hamming(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    println!("Hamming Distance: {}", hamming_distance);

    // Compute the Jaccard distance between vector_a and vector_b
    let jaccard_distance = u8::jaccard(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");

    println!("Jaccard Distance: {}", jaccard_distance);
}

Binary similarity functions are available only for u8 types.

Half-Precision Floating-Point Numbers

Rust has no native support for half-precision floating-point numbers, but SimSIMD provides a f16 type with built-in conversion methods. The underlying u16 representation is publicly accessible for direct bit manipulation.

use simsimd::{SpatialSimilarity, f16};

fn main() {
    // Create f16 vectors using built-in conversion methods
    let vector_a: Vec<f16> = vec![1.0, 2.0, 3.0].iter().map(|&x| f16::from_f32(x)).collect();
    let vector_b: Vec<f16> = vec![4.0, 5.0, 6.0].iter().map(|&x| f16::from_f32(x)).collect();

    // Compute the cosine similarity
    let cosine_similarity = f16::cosine(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");
    
    println!("Cosine Similarity: {}", cosine_similarity);

    // Direct bit manipulation
    let half = f16::from_f32(3.14159);
    let bits = half.0; // Access raw u16 representation
    let reconstructed = f16(bits);
    
    // Convert back to f32
    let float_value = half.to_f32();
}

For interoperability with the half crate:

use simsimd::{SpatialSimilarity, f16 as SimF16};
use half::f16 as HalfF16;

fn main() {
    let vector_a: Vec<HalfF16> = vec![1.0, 2.0, 3.0].iter().map(|&x| HalfF16::from_f32(x)).collect();
    let vector_b: Vec<HalfF16> = vec![4.0, 5.0, 6.0].iter().map(|&x| HalfF16::from_f32(x)).collect();

    // Safe reinterpret cast due to identical memory layout
    let buffer_a: &[SimF16] = unsafe { std::slice::from_raw_parts(vector_a.as_ptr() as *const SimF16, vector_a.len()) };
    let buffer_b: &[SimF16] = unsafe { std::slice::from_raw_parts(vector_b.as_ptr() as *const SimF16, vector_b.len()) };

    let cosine_similarity = SimF16::cosine(buffer_a, buffer_b)
        .expect("Vectors must be of the same length");

    println!("Cosine Similarity: {}", cosine_similarity);
}

Half-Precision Brain-Float Numbers

The "brain-float-16" is a popular machine learning format. It's broadly supported in hardware and is very machine-friendly, but software support is still lagging behind. Unlike NumPy, you can already use bf16 datatype in SimSIMD. SimSIMD provides a bf16 type with built-in conversion methods and direct bit access.

use simsimd::{SpatialSimilarity, bf16};

fn main() {
    // Create bf16 vectors using built-in conversion methods
    let vector_a: Vec<bf16> = vec![1.0, 2.0, 3.0].iter().map(|&x| bf16::from_f32(x)).collect();
    let vector_b: Vec<bf16> = vec![4.0, 5.0, 6.0].iter().map(|&x| bf16::from_f32(x)).collect();

    // Compute the cosine similarity
    let cosine_similarity = bf16::cosine(&vector_a, &vector_b)
        .expect("Vectors must be of the same length");
    
    println!("Cosine Similarity: {}", cosine_similarity);

    // Direct bit manipulation
    let brain_half = bf16::from_f32(3.14159);
    let bits = brain_half.0; // Access raw u16 representation
    let reconstructed = bf16(bits);
    
    // Convert back to f32
    let float_value = brain_half.to_f32();

    // Compare precision differences
    let original = 3.14159_f32;
    let f16_roundtrip = f16::from_f32(original).to_f32();
    let bf16_roundtrip = bf16::from_f32(original).to_f32();
    
    println!("Original: {}", original);
    println!("f16 roundtrip: {}", f16_roundtrip);
    println!("bf16 roundtrip: {}", bf16_roundtrip);
}

Dynamic Dispatch in Rust

SimSIMD provides a dynamic dispatch mechanism to select the most advanced micro-kernel for the current CPU. You can query supported backends and use the SimSIMD::capabilities function to select the best one.

println!("uses neon: {}", capabilities::uses_neon());
println!("uses sve: {}", capabilities::uses_sve());
println!("uses haswell: {}", capabilities::uses_haswell());
println!("uses skylake: {}", capabilities::uses_skylake());
println!("uses ice: {}", capabilities::uses_ice());
println!("uses genoa: {}", capabilities::uses_genoa());
println!("uses sapphire: {}", capabilities::uses_sapphire());
println!("uses turin: {}", capabilities::uses_turin());
println!("uses sierra: {}", capabilities::uses_sierra());

Using SimSIMD in JavaScript

To install, choose one of the following options depending on your environment:

  • npm install --save simsimd
  • yarn add simsimd
  • pnpm add simsimd
  • bun install simsimd

The package is distributed with prebuilt binaries, but if your platform is not supported, you can build the package from the source via npm run build. This will automatically happen unless you install the package with the --ignore-scripts flag or use Bun. After you install it, you will be able to call the SimSIMD functions on various TypedArray variants:

const { sqeuclidean, cosine, inner, hamming, jaccard } = require("simsimd");

const vectorA = new Float32Array([1.0, 2.0, 3.0]);
const vectorB = new Float32Array([4.0, 5.0, 6.0]);

const distance = sqeuclidean(vectorA, vectorB);
console.log("Squared Euclidean Distance:", distance);

Other numeric types and precision levels are supported as well. For double-precision floating-point numbers, use Float64Array:

const vectorA = new Float64Array([1.0, 2.0, 3.0]);
const vectorB = new Float64Array([4.0, 5.0, 6.0]);
const distance = cosine(vectorA, vectorB);

When doing machine learning and vector search with high-dimensional vectors you may want to quantize them to 8-bit integers. You may want to project values from the $[-1, 1]$ range to the $[-127, 127]$ range and then cast them to Int8Array:

const quantizedVectorA = new Int8Array(vectorA.map((v) => v * 127));
const quantizedVectorB = new Int8Array(vectorB.map((v) => v * 127));
const distance = cosine(quantizedVectorA, quantizedVectorB);

A more extreme quantization case would be to use binary vectors. You can map all positive values to 1 and all negative values and zero to 0, packing eight values into a single byte. After that, Hamming and Jaccard distances can be computed.

const { toBinary, hamming } = require("simsimd");

const binaryVectorA = toBinary(vectorA);
const binaryVectorB = toBinary(vectorB);
const distance = hamming(binaryVectorA, binaryVectorB);

Using SimSIMD in Swift

To install, simply add the following dependency to your Package.swift:

dependencies: [
    .package(url: "https://github.com/ashvardanian/simsimd")
]

The package provides the most common spatial metrics for Int8, Float16, Float32, and Float64 vectors.

import SimSIMD

let vectorA: [Int8] = [1, 2, 3]
let vectorB: [Int8] = [4, 5, 6]

let cosineSimilarity = vectorA.cosine(vectorB)  // Computes the cosine similarity
let dotProduct = vectorA.dot(vectorB)           // Computes the dot product
let sqEuclidean = vectorA.sqeuclidean(vectorB)  // Computes the squared Euclidean distance

Using SimSIMD in C

For integration within a CMake-based project, add the following segment to your CMakeLists.txt:

FetchContent_Declare(
    simsimd
    GIT_REPOSITORY https://github.com/ashvardanian/simsimd.git
    GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(simsimd)

After that, you can use the SimSIMD library in your C code in several ways. Simplest of all, you can include the headers, and the compiler will automatically select the most recent CPU extensions that SimSIMD will use.

#include <simsimd/simsimd.h>

int main() {
    simsimd_flush_denormals(); // Optional, to avoid performance penalties on denormal numbers

    simsimd_f32_t vector_a[1536];
    simsimd_f32_t vector_b[1536];
    simsimd_kernel_punned_t metric_punned = simsimd_metric_punned(
        simsimd_metric_cos_k,   // Metric kind, like the angular cosine distance
        simsimd_datatype_f32_k, // Data type, like: f16, f32, f64, i8, b8, and complex variants
        simsimd_cap_any_k);     // Which CPU capabilities are we allowed to use
    simsimd_distance_t distance;
    simsimd_metric_dense_punned_t metric = (simsimd_metric_dense_punned_t)metric_punned;
    metric(vector_a, vector_b, 1536, &distance);
    return 0;
}

Dynamic Dispatch in C

To avoid hard-coding the backend, you can rely on c/lib.c to prepackage all possible backends in one binary, and select the most recent CPU features at runtime. That feature of the C library is called dynamic dispatch and is extensively used in the Python, JavaScript, and Rust bindings. To test which CPU features are available on the machine at runtime, use the following APIs:

int uses_dynamic_dispatch = simsimd_uses_dynamic_dispatch(); // Check if dynamic dispatch was enabled
simsimd_capability_t capabilities = simsimd_capabilities();  // Returns a bitmask

int uses_neon = simsimd_uses_neon();
int uses_sve = simsimd_uses_sve();
int uses_haswell = simsimd_uses_haswell();
int uses_skylake = simsimd_uses_skylake();
int uses_ice = simsimd_uses_ice();
int uses_genoa = simsimd_uses_genoa();
int uses_sapphire = simsimd_uses_sapphire();

To override compilation settings and switch between runtime and compile-time dispatch, define the following macro:

#define SIMSIMD_DYNAMIC_DISPATCH 1 // or 0

Spatial Distances: Cosine and Euclidean Distances

#include <simsimd/simsimd.h>

int main() {
    simsimd_i8_t i8[1536];
    simsimd_i8_t u8[1536];
    simsimd_f64_t f64s[1536];
    simsimd_f32_t f32s[1536];
    simsimd_f16_t f16s[1536];
    simsimd_bf16_t bf16s[1536];
    simsimd_distance_t distance;

    // Cosine distance between two vectors
    simsimd_cos_i8(i8s, i8s, 1536, &distance);
    simsimd_cos_u8(u8s, u8s, 1536, &distance);
    simsimd_cos_f16(f16s, f16s, 1536, &distance);
    simsimd_cos_f32(f32s, f32s, 1536, &distance);
    simsimd_cos_f64(f64s, f64s, 1536, &distance);
    simsimd_cos_bf16(bf16s, bf16s, 1536, &distance);

    // Euclidean distance between two vectors
    simsimd_l2sq_i8(i8s, i8s, 1536, &distance);
    simsimd_l2sq_u8(u8s, u8s, 1536, &distance);
    simsimd_l2sq_f16(f16s, f16s, 1536, &distance);
    simsimd_l2sq_f32(f32s, f32s, 1536, &distance);
    simsimd_l2sq_f64(f64s, f64s, 1536, &distance);
    simsimd_l2sq_bf16(bf16s, bf16s, 1536, &distance);

    return 0;
}

Dot-Products: Inner and Complex Inner Products

#include <simsimd/simsimd.h>

int main() {
    // SimSIMD provides "sized" type-aliases without relying on `stdint.h`
    simsimd_i8_t i8[1536];
    simsimd_i8_t u8[1536];
    simsimd_f16_t f16s[1536];
    simsimd_f32_t f32s[1536];
    simsimd_f64_t f64s[1536];
    simsimd_bf16_t bf16s[1536];
    simsimd_distance_t product;

    // Inner product between two real vectors
    simsimd_dot_i8(i8s, i8s, 1536, &product);
    simsimd_dot_u8(u8s, u8s, 1536, &product);
    simsimd_dot_f16(f16s, f16s, 1536, &product);
    simsimd_dot_f32(f32s, f32s, 1536, &product);
    simsimd_dot_f64(f64s, f64s, 1536, &product);
    simsimd_dot_bf16(bf16s, bf16s, 1536, &product);

    // SimSIMD provides complex types with `real` and `imag` fields
    simsimd_f64c_t f64s[768];
    simsimd_f32c_t f32s[768];
    simsimd_f16c_t f16s[768];
    simsimd_bf16c_t bf16s[768];
    simsimd_distance_t products[2]; // real and imaginary parts

    // Complex inner product between two vectors
    simsimd_dot_f16c(f16cs, f16cs, 768, &products[0]);
    simsimd_dot_f32c(f32cs, f32cs, 768, &products[0]);
    simsimd_dot_f64c(f64cs, f64cs, 768, &products[0]);
    simsimd_dot_bf16c(bf16cs, bf16cs, 768, &products[0]);

    // Complex conjugate inner product between two vectors
    simsimd_vdot_f16c(f16cs, f16cs, 768, &products[0]);
    simsimd_vdot_f32c(f32cs, f32cs, 768, &products[0]);
    simsimd_vdot_f64c(f64cs, f64cs, 768, &products[0]);
    simsimd_vdot_bf16c(bf16cs, bf16cs, 768, &products[0]);
    return 0;
}

Binary Distances: Hamming and Jaccard Distances

#include <simsimd/simsimd.h>

int main() {
    simsimd_b8_t b8s[1536 / 8]; // 8 bits per word
    simsimd_distance_t distance;
    simsimd_hamming_b8(b8s, b8s, 1536 / 8, &distance);
    simsimd_jaccard_b8(b8s, b8s, 1536 / 8, &distance);
    return 0;
}

Probability Distributions: Jensen-Shannon and Kullback-Leibler Divergences

#include <simsimd/simsimd.h>

int main() {
    simsimd_f64_t f64s[1536];
    simsimd_f32_t f32s[1536];
    simsimd_f16_t f16s[1536];
    simsimd_distance_t divergence;

    // Jensen-Shannon divergence between two vectors
    simsimd_js_f16(f16s, f16s, 1536, &divergence);
    simsimd_js_f32(f32s, f32s, 1536, &divergence);
    simsimd_js_f64(f64s, f64s, 1536, &divergence);

    // Kullback-Leibler divergence between two vectors
    simsimd_kl_f16(f16s, f16s, 1536, &divergence);
    simsimd_kl_f32(f32s, f32s, 1536, &divergence);
    simsimd_kl_f64(f64s, f64s, 1536, &divergence);
    return 0;
}

Half-Precision Floating-Point Numbers

If you aim to utilize the _Float16 functionality with SimSIMD, ensure your development environment is compatible with C 11. For other SimSIMD functionalities, C 99 compatibility will suffice. To explicitly disable half-precision support, define the following macro before imports:

#define SIMSIMD_NATIVE_F16 0 // or 1
#define SIMSIMD_NATIVE_BF16 0 // or 1
#include <simsimd/simsimd.h>

Compilation Settings and Debugging

SIMSIMD_DYNAMIC_DISPATCH:

By default, SimSIMD is a header-only library. But if you are running on different generations of devices, it makes sense to pre-compile the library for all supported generations at once, and dispatch at runtime. This flag does just that and is used to produce the simsimd.so shared library, as well as the Python and other bindings.

For Arm: SIMSIMD_TARGET_NEON, SIMSIMD_TARGET_SVE, SIMSIMD_TARGET_SVE2, SIMSIMD_TARGET_NEON_F16, SIMSIMD_TARGET_SVE_F16, SIMSIMD_TARGET_NEON_BF16, SIMSIMD_TARGET_SVE_BF16. For x86: (SIMSIMD_TARGET_HASWELL, SIMSIMD_TARGET_SKYLAKE, SIMSIMD_TARGET_ICE, SIMSIMD_TARGET_GENOA, SIMSIMD_TARGET_SAPPHIRE, SIMSIMD_TARGET_TURIN, SIMSIMD_TARGET_SIERRA.

By default, SimSIMD automatically infers the target architecture and pre-compiles as many kernels as possible. In some cases, you may want to explicitly disable some of the kernels. Most often it's due to compiler support issues, like the lack of some recent intrinsics or low-precision numeric types. In other cases, you may want to disable some kernels to speed up the compilation process and trim the binary size.

SIMSIMD_SQRT, SIMSIMD_RSQRT, SIMSIMD_LOG:

By default, for non-SIMD backends, SimSIMD may use libc functions like sqrt and log. Those are generally very accurate, but slow, and introduce a dependency on the C standard library. To avoid that you can override those definitions with your custom implementations, like: #define SIMSIMD_RSQRT(x) (1 / sqrt(x)).

Algorithms & Design Decisions 📚

In general there are a few principles that SimSIMD follows:

  • Avoid loop unrolling.
  • Never allocate memory.
  • Never throw exceptions or set errno.
  • Keep all function arguments the size of the pointer.
  • Avoid returning from public interfaces, use out-arguments instead.
  • Don't over-optimize for old CPUs and single- and double-precision floating-point numbers.
  • Prioritize mixed-precision and integer operations, and new ISA extensions.
  • Prefer saturated arithmetic and avoid overflows.

Possibly, in the future:

  • Best effort computation silencing NaN components in low-precision inputs.
  • Detect overflows and report the distance with a "signaling" NaN.

Last, but not the least - don't build unless there is a demand for it. So if you have a specific use-case, please open an issue or a pull request, and ideally, bring in more users with similar needs.

Cosine Similarity, Reciprocal Square Root, and Newton-Raphson Iteration

The cosine similarity is the most common and straightforward metric used in machine learning and information retrieval. Interestingly, there are multiple ways to shoot yourself in the foot when computing it. The cosine similarity is the inverse of the cosine distance, which is the cosine of the angle between two vectors.

\text{CosineSimilarity}(a, b) = \frac{a \cdot b}{\|a\| \cdot \|b\|}
\text{CosineDistance}(a, b) = 1 - \frac{a \cdot b}{\|a\| \cdot \|b\|}

In NumPy terms, SimSIMD implementation is similar to:

import numpy as np

def cos_numpy(a: np.ndarray, b: np.ndarray) -> float:
    ab, a2, b2 = np.dot(a, b), np.dot(a, a), np.dot(b, b) # Fused in SimSIMD
    if a2 == 0 and b2 == 0: result = 0                    # Same in SciPy
    elif ab == 0: result = 1                              # Division by zero error in SciPy
    else: result = 1 - ab / (sqrt(a2) * sqrt(b2))         # Bigger rounding error in SciPy
    return result

In SciPy, however, the cosine distance is computed as 1 - ab / np.sqrt(a2 * b2). It handles the edge case of a zero and non-zero argument pair differently, resulting in a division by zero error. It's not only less efficient, but also less accurate, given how the reciprocal square roots are computed. The C standard library provides the sqrt function, which is generally very accurate, but slow. The rsqrt in-hardware implementations are faster, but have different accuracy characteristics.

  • SSE rsqrtps and AVX vrsqrtps: $1.5 \times 2^{-12}$ maximal relative error.
  • AVX-512 vrsqrt14pd instruction: $2^{-14}$ maximal relative error.
  • NEON frsqrte instruction has no documented error bounds, but can be $2^{-3}$.

To overcome the limitations of the rsqrt instruction, SimSIMD uses the Newton-Raphson iteration to refine the initial estimate for high-precision floating-point numbers. It can be defined as:

x_{n+1} = x_n \cdot (3 - x_n \cdot x_n) / 2

On 1536-dimensional inputs on Intel Sapphire Rapids CPU a single such iteration can result in a 2-3 orders of magnitude relative error reduction:

Datatype NumPy Error SimSIMD w/out Iteration SimSIMD
bfloat16 1.89e-08 ± 1.59e-08 3.07e-07 ± 3.09e-07 3.53e-09 ± 2.70e-09
float16 1.67e-02 ± 1.44e-02 2.68e-05 ± 1.95e-05 2.02e-05 ± 1.39e-05
float32 2.21e-08 ± 1.65e-08 3.47e-07 ± 3.49e-07 3.77e-09 ± 2.84e-09
float64 0.00e+00 ± 0.00e+00 3.80e-07 ± 4.50e-07 1.35e-11 ± 1.85e-11

Curved Spaces, Mahalanobis Distance, and Bilinear Quadratic Forms

The Mahalanobis distance is a generalization of the Euclidean distance, which takes into account the covariance of the data. It's very similar in its form to the bilinear form, which is a generalization of the dot product.

\text{BilinearForm}(a, b, M) = a^T M b
\text{Mahalanobis}(a, b, M) = \sqrt{(a - b)^T M^{-1} (a - b)}

Bilinear Forms can be seen as one of the most important linear algebraic operations, surprisingly missing in BLAS and LAPACK. They are versatile and appear in various domains:

  • In Quantum Mechanics, the expectation value of an observable $A$ in a state $\psi$ is given by $\langle \psi | A | \psi \rangle$, which is a bilinear form.
  • In Machine Learning, in Support Vector Machines (SVMs), bilinear forms define kernel functions that measure similarity between data points.
  • In Differential Geometry, the metric tensor, which defines distances and angles on a manifold, is a bilinear form on the tangent space.
  • In Economics, payoff functions in certain Game Theoretic problems can be modeled as bilinear forms of players' strategies.
  • In Physics, interactions between electric and magnetic fields can be expressed using bilinear forms.

Broad applications aside, the lack of a specialized primitive for bilinear forms in BLAS and LAPACK means significant performance overhead. A $vector * matrix * vector$ product is a scalar, whereas its constituent parts ($vector * matrix$ and $matrix * vector$) are vectors:

  • They need memory to be stored in: $O(n)$ allocation.
  • The data will be written to memory and read back, wasting CPU cycles.

SimSIMD doesn't produce intermediate vector results, like a @ M @ b, but computes the bilinear form directly.

Set Intersection, Galloping, and Binary Search

The set intersection operation is generally defined as the number of elements that are common between two sets, represented as sorted arrays of integers. The most common way to compute it is a linear scan:

size_t intersection_size(int *a, int *b, size_t n, size_t m) {
    size_t i = 0, j = 0, count = 0;
    while (i < n && j < m) {
        if (a[i] < b[j]) i++;
        else if (a[i] > b[j]) j++;
        else i++, j++, count++;
    }
    return count;
}

Alternatively, one can use the binary search to find the elements in the second array that are present in the first one. On every step the checked region of the second array is halved, which is called the galloping search. It's faster, but only when large arrays of very different sizes are intersected. Third approach is to use the SIMD instructions to compare multiple elements at once:

  • Using string-intersection instructions on x86, like pcmpestrm.
  • Using integer-intersection instructions in AVX-512, like vp2intersectd.
  • Using vanilla equality checks present in all SIMD instruction sets.

After benchmarking, the last approach was chosen, as it's the most flexible and often the fastest.

Complex Dot Products, Conjugate Dot Products, and Complex Numbers

Complex dot products are a generalization of the dot product to complex numbers. They are supported by most BLAS packages, but almost never in mixed precision. SimSIMD defines dot and vdot kernels as:

\text{dot}(a, b) = \sum_{i=0}^{n-1} a_i \cdot b_i
\text{vdot}(a, b) = \sum_{i=0}^{n-1} a_i \cdot \bar{b_i}

Where $\bar{b_i}$ is the complex conjugate of $b_i$. Putting that into Python code for scalar arrays:

def dot(a: List[number], b: List[number]) -> number:
    a_real, a_imaginary = a[0::2], a[1::2]
    b_real, b_imaginary = b[0::2], b[1::2]
    ab_real, ab_imaginary = 0, 0
    for ar, ai, br, bi in zip(a_real, a_imaginary, b_real, b_imaginary):
        ab_real += ar * br - ai * bi
        ab_imaginary += ar * bi + ai * br
    return ab_real, ab_imaginary

def vdot(a: List[number], b: List[number]) -> number:
    a_real, a_imaginary = a[0::2], a[1::2]
    b_real, b_imaginary = b[0::2], b[1::2]
    ab_real, ab_imaginary = 0, 0
    for ar, ai, br, bi in zip(a_real, a_imaginary, b_real, b_imaginary):
        ab_real += ar * br + ai * bi
        ab_imaginary += ar * bi - ai * br
    return ab_real, ab_imaginary

Logarithms in Kullback-Leibler & Jensen–Shannon Divergences

The Kullback-Leibler divergence is a measure of how one probability distribution diverges from a second, expected probability distribution. Jensen-Shannon divergence is a symmetrized and smoothed version of the Kullback-Leibler divergence, which can be used as a distance metric between probability distributions.

\text{KL}(P || Q) = \sum_{i} P(i) \log \frac{P(i)}{Q(i)}
\text{JS}(P, Q) = \frac{1}{2} \text{KL}(P || M) + \frac{1}{2} \text{KL}(Q || M), M = \frac{P + Q}{2}

Both functions are defined for non-negative numbers, and the logarithm is a key part of their computation.

Mixed Precision in Fused-Multiply-Add and Weighted Sums

The Fused-Multiply-Add (FMA) operation is a single operation that combines element-wise multiplication and addition with different scaling factors. The Weighted Sum is it's simplified variant without element-wise multiplication.

\text{FMA}_i(A, B, C, \alpha, \beta) = \alpha \cdot A_i \cdot B_i + \beta \cdot C_i
\text{WSum}_i(A, B, \alpha, \beta) = \alpha \cdot A_i + \beta \cdot B_i

In NumPy terms, the implementation may look like:

import numpy as np
def wsum(A: np.ndarray, B: np.ndarray, /, Alpha: float, Beta: float) -> np.ndarray:
    assert A.dtype == B.dtype, "Input types must match and affect the output style"
    return (Alpha * A + Beta * B).astype(A.dtype)
def fma(A: np.ndarray, B: np.ndarray, C: np.ndarray, /, Alpha: float, Beta: float) -> np.ndarray:
    assert A.dtype == B.dtype and A.dtype == C.dtype, "Input types must match and affect the output style"
    return (Alpha * A * B + Beta * C).astype(A.dtype)

The tricky part is implementing those operations in mixed precision, where the scaling factors are of different precision than the input and output vectors. SimSIMD uses double-precision floating-point scaling factors for any input and output precision, including i8 and u8 integers and f16 and bf16 floats. Depending on the generation of the CPU, given native support for f16 addition and multiplication, the f16 temporaries are used for i8 and u8 multiplication, scaling, and addition. For bf16, native support is generally limited to dot-products with subsequent partial accumulation, which is not enough for the FMA and WSum operations, so f32 is used as a temporary.

Auto-Vectorization & Loop Unrolling

On the Intel Sapphire Rapids platform, SimSIMD was benchmarked against auto-vectorized code using GCC 12. GCC handles single-precision float but might not be the best choice for int8 and _Float16 arrays, which have been part of the C language since 2011.

Kind GCC 12 f32 GCC 12 f16 SimSIMD 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

Dynamic Dispatch

Most popular software is precompiled and distributed with fairly conservative CPU optimizations, to ensure compatibility with older hardware. Database Management platforms, like ClickHouse, and Web Browsers, like Google Chrome,need to run on billions of devices, and they can't afford to be picky about the CPU features. For such users SimSIMD provides a dynamic dispatch mechanism, which selects the most advanced micro-kernel for the current CPU at runtime.

Subset F CD ER PF 4FMAPS 4VNNIW VPOPCNTDQ VL DQ BW IFMA VBMI VNNI BF16 VBMI2 BITALG VPCLMULQDQ GFNI VAES VP2INTERSECT FP16
Knights Landing (Xeon Phi x200, 2016) Yes Yes No
Knights Mill (Xeon Phi x205, 2017) Yes No
Skylake-SP, Skylake-X (2017) No No Yes No
Cannon Lake (2018) Yes No
Cascade Lake (2019) No Yes No
Cooper Lake (2020) Yes No
Ice Lake (2019) Yes No Yes No
Tiger Lake (2020) Yes No
Rocket Lake (2021) No
Alder Lake (2021) Partial Partial
Zen 4 (2022) Yes Yes No
Sapphire Rapids (2023) No Yes
Zen 5 (2024) Yes No

You can compile SimSIMD on an old CPU, like Intel Haswell, and run it on a new one, like AMD Genoa, and it will automatically use the most advanced instructions available. Reverse is also true, you can compile on a new CPU and run on an old one, and it will automatically fall back to the most basic instructions. Moreover, the very first time you prove for CPU capabilities with simsimd_capabilities(), it initializes the dynamic dispatch mechanism, and all subsequent calls will be faster and won't face race conditions in multi-threaded environments.

Target Specific Backends

SimSIMD exposes all kernels for all backends, and you can select the most advanced one for the current CPU without relying on built-in dispatch mechanisms. That's handy for testing and benchmarking, but also in case you want to dispatch a very specific kernel for a very specific CPU, bypassing SimSIMD assignment logic. All of the function names follow the same pattern: simsimd_{function}_{type}_{backend}.

  • The backend can be serial, haswell, skylake, ice, genoa, sapphire, turin, neon, or sve.
  • The type can be f64, f32, f16, bf16, f64c, f32c, f16c, bf16c, i8, or b8.
  • The function can be dot, vdot, cos, l2sq, hamming, jaccard, kl, js, or intersect.

To avoid hard-coding the backend, you can use the simsimd_kernel_punned_t to pun the function pointer and the simsimd_capabilities function to get the available backends at runtime. To match all the function names, consider a RegEx:

SIMSIMD_PUBLIC void simsimd_\w+_\w+_\w+\(

On Linux, you can use the following command to list all unique functions:

$ grep -oP 'SIMSIMD_PUBLIC void simsimd_\w+_\w+_\w+\(' include/simsimd/*.h | sort | uniq
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_hamming_b8_haswell(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_hamming_b8_ice(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_hamming_b8_neon(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_hamming_b8_serial(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_hamming_b8_sve(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_jaccard_b8_haswell(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_jaccard_b8_ice(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_jaccard_b8_neon(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_jaccard_b8_serial(
> include/simsimd/binary.h:SIMSIMD_PUBLIC void simsimd_jaccard_b8_sve(

License

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

Release history Release notifications | RSS feed

This version

6.5.0

Download files

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

Source Distribution

simsimd-6.5.0.tar.gz (172.4 kB view details)

Uploaded Source

Built Distributions

simsimd-6.5.0-cp313-cp313t-win_arm64.whl (59.7 kB view details)

Uploaded CPython 3.13tWindows ARM64

simsimd-6.5.0-cp313-cp313t-win_amd64.whl (95.0 kB view details)

Uploaded CPython 3.13tWindows x86-64

simsimd-6.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

simsimd-6.5.0-cp313-cp313t-musllinux_1_2_s390x.whl (374.0 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ s390x

simsimd-6.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl (462.3 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ppc64le

simsimd-6.5.0-cp313-cp313t-musllinux_1_2_i686.whl (403.6 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

simsimd-6.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl (599.8 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

simsimd-6.5.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

simsimd-6.5.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (369.5 kB view details)

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

simsimd-6.5.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (413.1 kB view details)

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

simsimd-6.5.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl (312.3 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

simsimd-6.5.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (565.0 kB view details)

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

simsimd-6.5.0-cp313-cp313t-macosx_11_0_arm64.whl (134.3 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

simsimd-6.5.0-cp313-cp313t-macosx_10_13_x86_64.whl (177.8 kB view details)

Uploaded CPython 3.13tmacOS 10.13+ x86-64

simsimd-6.5.0-cp313-cp313-win_arm64.whl (59.5 kB view details)

Uploaded CPython 3.13Windows ARM64

simsimd-6.5.0-cp313-cp313-win_amd64.whl (94.8 kB view details)

Uploaded CPython 3.13Windows x86-64

simsimd-6.5.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

simsimd-6.5.0-cp313-cp313-musllinux_1_2_s390x.whl (372.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

simsimd-6.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl (461.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

simsimd-6.5.0-cp313-cp313-musllinux_1_2_i686.whl (402.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

simsimd-6.5.0-cp313-cp313-musllinux_1_2_aarch64.whl (598.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

simsimd-6.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

simsimd-6.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (368.0 kB view details)

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

simsimd-6.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (411.4 kB view details)

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

simsimd-6.5.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl (311.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

simsimd-6.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (563.2 kB view details)

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

simsimd-6.5.0-cp313-cp313-macosx_11_0_arm64.whl (134.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

simsimd-6.5.0-cp313-cp313-macosx_10_13_x86_64.whl (177.7 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

simsimd-6.5.0-cp312-cp312-win_arm64.whl (59.5 kB view details)

Uploaded CPython 3.12Windows ARM64

simsimd-6.5.0-cp312-cp312-win_amd64.whl (94.8 kB view details)

Uploaded CPython 3.12Windows x86-64

simsimd-6.5.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

simsimd-6.5.0-cp312-cp312-musllinux_1_2_s390x.whl (372.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

simsimd-6.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl (460.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

simsimd-6.5.0-cp312-cp312-musllinux_1_2_i686.whl (402.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

simsimd-6.5.0-cp312-cp312-musllinux_1_2_aarch64.whl (598.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

simsimd-6.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

simsimd-6.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (367.9 kB view details)

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

simsimd-6.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (411.3 kB view details)

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

simsimd-6.5.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl (311.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

simsimd-6.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (563.1 kB view details)

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

simsimd-6.5.0-cp312-cp312-macosx_11_0_arm64.whl (134.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

simsimd-6.5.0-cp312-cp312-macosx_10_13_x86_64.whl (177.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

simsimd-6.5.0-cp311-cp311-win_arm64.whl (59.3 kB view details)

Uploaded CPython 3.11Windows ARM64

simsimd-6.5.0-cp311-cp311-win_amd64.whl (94.5 kB view details)

Uploaded CPython 3.11Windows x86-64

simsimd-6.5.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

simsimd-6.5.0-cp311-cp311-musllinux_1_2_s390x.whl (372.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

simsimd-6.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl (461.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

simsimd-6.5.0-cp311-cp311-musllinux_1_2_i686.whl (402.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

simsimd-6.5.0-cp311-cp311-musllinux_1_2_aarch64.whl (598.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

simsimd-6.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

simsimd-6.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (368.2 kB view details)

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

simsimd-6.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (411.8 kB view details)

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

simsimd-6.5.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl (311.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

simsimd-6.5.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (563.4 kB view details)

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

simsimd-6.5.0-cp311-cp311-macosx_11_0_arm64.whl (134.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

simsimd-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl (179.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

simsimd-6.5.0-cp310-cp310-win_arm64.whl (59.3 kB view details)

Uploaded CPython 3.10Windows ARM64

simsimd-6.5.0-cp310-cp310-win_amd64.whl (94.5 kB view details)

Uploaded CPython 3.10Windows x86-64

simsimd-6.5.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

simsimd-6.5.0-cp310-cp310-musllinux_1_2_s390x.whl (371.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

simsimd-6.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl (460.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

simsimd-6.5.0-cp310-cp310-musllinux_1_2_i686.whl (401.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

simsimd-6.5.0-cp310-cp310-musllinux_1_2_aarch64.whl (597.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

simsimd-6.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

simsimd-6.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (367.4 kB view details)

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

simsimd-6.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (410.9 kB view details)

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

simsimd-6.5.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl (310.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

simsimd-6.5.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (562.4 kB view details)

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

simsimd-6.5.0-cp310-cp310-macosx_11_0_arm64.whl (134.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

simsimd-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl (179.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

simsimd-6.5.0-cp39-cp39-win_arm64.whl (59.3 kB view details)

Uploaded CPython 3.9Windows ARM64

simsimd-6.5.0-cp39-cp39-win_amd64.whl (94.5 kB view details)

Uploaded CPython 3.9Windows x86-64

simsimd-6.5.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

simsimd-6.5.0-cp39-cp39-musllinux_1_2_s390x.whl (371.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ s390x

simsimd-6.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl (460.2 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ppc64le

simsimd-6.5.0-cp39-cp39-musllinux_1_2_i686.whl (401.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ i686

simsimd-6.5.0-cp39-cp39-musllinux_1_2_aarch64.whl (597.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

simsimd-6.5.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

simsimd-6.5.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (367.2 kB view details)

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

simsimd-6.5.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (410.6 kB view details)

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

simsimd-6.5.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl (310.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

simsimd-6.5.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (562.2 kB view details)

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

simsimd-6.5.0-cp39-cp39-macosx_11_0_arm64.whl (134.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

simsimd-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl (179.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

simsimd-6.5.0-cp38-cp38-win_amd64.whl (94.4 kB view details)

Uploaded CPython 3.8Windows x86-64

simsimd-6.5.0-cp38-cp38-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

simsimd-6.5.0-cp38-cp38-musllinux_1_2_s390x.whl (371.5 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ s390x

simsimd-6.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl (460.2 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ppc64le

simsimd-6.5.0-cp38-cp38-musllinux_1_2_i686.whl (401.4 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ i686

simsimd-6.5.0-cp38-cp38-musllinux_1_2_aarch64.whl (597.5 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

simsimd-6.5.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

simsimd-6.5.0-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (367.8 kB view details)

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

simsimd-6.5.0-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (411.2 kB view details)

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

simsimd-6.5.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl (310.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

simsimd-6.5.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (562.9 kB view details)

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

simsimd-6.5.0-cp38-cp38-macosx_11_0_arm64.whl (128.1 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

simsimd-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl (178.8 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file simsimd-6.5.0.tar.gz.

File metadata

  • Download URL: simsimd-6.5.0.tar.gz
  • Upload date:
  • Size: 172.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0.tar.gz
Algorithm Hash digest
SHA256 4a505aa950f4771296cd592639f3aff445077c881d36bd95ea93e8f3f7cacbce
MD5 c7ee242f830f95c8ebf30fab6119b950
BLAKE2b-256 a5ce9c4b121de05d1613fa594e3f36772d037b42c3f1d8ff8d2ffd3de2e71be3

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0.tar.gz:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-win_arm64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp313-cp313t-win_arm64.whl
  • Upload date:
  • Size: 59.7 kB
  • Tags: CPython 3.13t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 b68e80ad63687b18d21fbd83fa6cd51e623b213548e85ec2b5b993259fc2e227
MD5 588ba804b23902a7cc42c502a170af0e
BLAKE2b-256 33cbe24f7e3bd6b4d89d4cae0bcb66452b57859a13bc3707ca9e2f2ef1c7c5aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-win_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-win_amd64.whl.

File metadata

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

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 5a5f085ea986d7113d44c3e782dad82a34034dad04bfe36313bebe3fdc7a4bc8
MD5 60c21548a81933377c93dfb6850ee62d
BLAKE2b-256 fc3b7bd3a7115bfa12004ae0f0504dc446e5bb07d7cb7e548f33c4b7b8012e55

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-win_amd64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b68c0c3e1b305fc27f0330a8f8b9b0e198df6ed922d3760dddb93992ecd705fb
MD5 02778cd8918837fd40fe2b127ad53288
BLAKE2b-256 b9e2c842d023950f85d9f8e225164e29b95cd9af69a2baf5587cdd02d7d0bd73

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 45c4e5427e90279e807f00c22dcbd474f6894df2d7b6f038d678ff14cf9c8f38
MD5 7f05f307ed3f20dbfaac72f40f8a994f
BLAKE2b-256 8fab686c905865affa943ce18612bf349fe15f2fcd124d066301c9c67a279818

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 56886758f78bbc1b87462e06be9b1e279d00d483a957645de366c9a1ab0d96bd
MD5 aa29ad66e72902c3e521a49de38fba69
BLAKE2b-256 17e9550d53209569b856941cde22799472c21a6743145f64d5d7e272ec41db90

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 520ff73002d99fe87bccf037581a3468253644f3f3b615b4db87bc97da35291a
MD5 01345a106a3ad813bf00373e2a33d61c
BLAKE2b-256 3f5a7673e44283afe3cd998fb85f5a48e39aa698ee49de39648008548c38ed01

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d36a2620639d568e4602e202e334ef530ef2a1dbe26b4f3362a2e54abbb03de0
MD5 0b82628e3bd2c15ecd2fe8c29556cb69
BLAKE2b-256 e62e97f7908f2f31778761ce2a76bc87dc4abdd1e91b031edce25831c0445c9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0c6ec3242ae7da299827017bb93b474fd63c96b147619a7a029679e73af3e1a3
MD5 660af2783b2edb81c7c59cac2fd29706
BLAKE2b-256 a0e1d61661d6f97482cb6a20cb7c1715bfb4925e0e3b0613602dfe7dc7c1f0ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 519633851ae9db8be8f1b89a2cc43bcdae3de433f4a8b4edec8452e91bae9398
MD5 14a511d9b114e0850acb2673becc561d
BLAKE2b-256 0271833b79fe04894e97601b17838e0010337a21f9e9d43a4eace56eeb53d66e

See more details on using hashes here.

Provenance

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

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 00c94d1341e9fcf2e136dcea7e1a40ff2213271ab10d8c9d59054a9bc9ef6ec1
MD5 7aaff5b7fcce785d8e634bc92bc4c79f
BLAKE2b-256 5fb6f1224eb643ea798dc7ce58838fe25a2aecb950aa8856c2492f668359e3bd

See more details on using hashes here.

Provenance

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

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 9719b61fe4e413f5ec0f699c2bbd4455e305f049314d357f35773d9ffc8b6aa9
MD5 fd878a5ee1512402793912fa6686c9d9
BLAKE2b-256 be770edf99e3b76b423f9c9d188eb22d18e4a93db06dc41d1f41a0cca44927a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 56b57ab82e862aa60281700904f0258cb3933d4d3f4dcc46ba0f4e719907ca74
MD5 5f4cfa1e0c5c3edef3bf1100aed295fa
BLAKE2b-256 31821d971ad0a51943378c787fd2b77f0498ad73c121e239fc85440985b9bead

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72d659d23186f370a5332285913a3d8158e315b906e6ab13de41ccaf624878b1
MD5 6267fd9c9cb0b08092ebbb0f82ade269
BLAKE2b-256 1a8a0d94d105e27826b0330d7937b95ecaeee91e312ecaa0639d1ecfc95dabac

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e00a69341e2c5aa1a1dacc17a964a53c4281918d8118ee5313483978cf04fa08
MD5 cf8bdb61d621648ba552128d0d59cc41
BLAKE2b-256 e66405fa2ca8e8ac49e5c5d86ac670dbe3f6f566b0c085d55f115d15423e77f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313t-macosx_10_13_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 59.5 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 e54331dd7915795ef382a082dfba7c52187cb97da647e20b75caa18f373aa76a
MD5 f6e6b633276112b8cf07c3755ed8a3c1
BLAKE2b-256 1d84ada8d8d91a25b840879b72c3f1dcd78fd4048d88688ab64145f28c03c12b

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-win_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 94.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 054cc1ab9fd3f37b67d8ad39fd3e18a8919b32af1d05952559907fa03b599bd7
MD5 fdb7db80c6164ef346f6122b5e1a3dc0
BLAKE2b-256 51d96a43e07e1e206c154552cfab6d7cb4ceab90b24c7e58cee0c82da5863aca

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fb2323a4ba6e7cecb079cad7176d4d6174cef0ffbeeb2a7f1e5298830dff2912
MD5 f7a6598e3ccb3d30373d0373ef5a7e93
BLAKE2b-256 c2ea71245bd4bb8f8eb3c3c135bfb112c8e4a36e7642a82cf0e567accee5e884

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 0db5794aab6caa31a26b1e06ef7160e76d8fa85fdf9f6d6433c3c24a3168ed6e
MD5 c93908274c751a7caa235a0d93117690
BLAKE2b-256 29c211e34f98a1410799e878222643f39dd7b620754bbfa70f1509d13af2640d

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 bbc8742ae590104edba9fc7981704b9d07380e7846f61d9d1c6c4d9ad68461d2
MD5 fdebad95004231525702f8f2a58d4c9c
BLAKE2b-256 4ba79be3db3c46942e698fbce73e42bcce62bc53d8e6bd50824a81b5431a5560

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7237a6dc33320dfd65131974a16956aedfab306539f4933b9b6e68e39c9cf591
MD5 426011dc78a170a41823862fc3551338
BLAKE2b-256 dcfb63098e8c94d0888507984880d12c5078f169d5eb6bea3941a878c9b5e04f

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7f9b381d07524e3855e9ea2f014ae686043e5bbcfabc2b147e0e3103c807062e
MD5 5a302f715cf389dfff088aaf607c61c8
BLAKE2b-256 e1db213ffaab70134f4fe5c745ddf512f83c870e1f53c0e422c043b12d60791f

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f83a979792fcf2e4775331cadda99e439b6211ed775d1ad75d29d0d0566abaf5
MD5 cde24d2ce9f5b63a5a1a191fbe7a092e
BLAKE2b-256 9a26813444ef274c38a49108cd74b80be43fff6c895e79dea307ad003e561bf1

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 adc02a6234fdaeb52486dd75214456cdc0f40eed00df9536ecb9a32d31a662b3
MD5 684bbb6ab5a8c7f14406e4df00d6e9bc
BLAKE2b-256 7b57172dfbb1aa21c6f19398bcfa0f54bb70806bc2447ecb39208816d69cf251

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 a97e6c1ad5e6a09bd6627a858715f4eab01fd70803f2f868173a919a38ebf6d7
MD5 297dcf204ab797a6c948ee4be06d426a
BLAKE2b-256 07f1e3ec585efbaa0572c64216f408059d65197ce975884e02508469fb15c2d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 8d4eb72270ae487c1f250948d6b6eb9b47ef96b5d4323856a5b062f2bdfa4936
MD5 7bdfaef854a56bc000eba82f5ef8eaf6
BLAKE2b-256 acd1b3a4a203e1281a93dee78b7c13ca438af492eb29d823b18730a12dae7a2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 383c4a522f8756f3edd3b0e30bed21475a2f220aa1fe769a884784df10913d7c
MD5 1ecc39a29cc9012b1a2df89f46ffbd6a
BLAKE2b-256 a2aa1d35f67c70e8c1be956c7864041f0002f984873fbe3f1e70962b1842fdb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4ab034122aed75a67bc7ecbd7ebaa165ac43ea8db482917dfce05d835746919
MD5 196ebe14cd4b5348d770cdd385396a13
BLAKE2b-256 8f9f47b77b8424ee7a93b46de2ec0107040b94f06d5a0f925b4b79b515f86de0

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d374dd56b7cd4c40837b965ad411732af1799c8fc978b95726b61178ba7a9f5e
MD5 9581fee25741d84e7fa5452d218f7987
BLAKE2b-256 11ac81fafb24dcddfebed6c9f372f5be9f0bdf4086f67d988aef39d3432c4268

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 59.5 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 9092816028c0a30a33e99428e205937871d8fe2161c89f5082e40bfff1812e47
MD5 13730861d27470b3f08c31e9e7626ded
BLAKE2b-256 d66bb594b9c5a378a3f08cd94dd28127d350e2f92f90b6532d0cb482ff1cf16b

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-win_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 94.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ee26c6d40256aaf423219f8e0d102f6e26f63493049d4b1e13d73462c54bc381
MD5 914973a7450922a7f79847a2bf6ac167
BLAKE2b-256 4a7ae87a76b31201809f93ce7526e22518181bc23f576bee6765862eb83f1c56

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1591c8d2e2953ac5d257f46f5898ba5b6bd59399bd7a59363f99ec52a0238209
MD5 02a886bc5d1219f69e7a15531aa27431
BLAKE2b-256 7a827b2f42008e16b0edea0d7ccba1bfb2c28f4f37d881f13cd951e4b30a7389

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 fed5266b6770fc6231a8ac4967262374b84f67fa0b468cd0b50a18930bb9748f
MD5 d801cf15ee09ff57dab38733dc7a8650
BLAKE2b-256 e17c57a3c594553ee26351a4d71b56528b285f83d006c2e017dd22c5a2f77085

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 2a493341a4a0fd1af9c41d317075c0f8756748b5010b13368dd0905502739d63
MD5 e337b521517993f81e9dcebeef47f82f
BLAKE2b-256 4dfecaa78b85c14cd2012ca47ed99a7507141a43b3ca7e79a90b3dc843205c74

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f317c988c48763558e342ba3c58106776ffcbb500d995478a669808431d03b26
MD5 b49ce56efa81e8d5ed5a7bf9bbcbb180
BLAKE2b-256 d00bd5b78b18b549da0da2a1fcaa9e5a6e946d5e9e85d40659ea57a4423f4be2

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6e032898e844b16e7c2fbe7b8bb0c60ad7ec3b00a21fdc57e1d2c3196473cbd6
MD5 61986b2df01d1404129d6a7568880006
BLAKE2b-256 3776b89a330bd13a7a2a2f5fbd294813fe63deb0d1fcfcc4df429dc2ffc50351

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e6aa55eca20680c7095191ef37ea4f646c921a80eaeeb0cd1373f3be1f033fa
MD5 a7494f9c5d90ec3ed275fbd5dc624c69
BLAKE2b-256 db0577ab72d521bdd1598697963b31edba2b2dc14ed9cb21301b142b1f50d5b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 0b71a245d9770d072c871e0d088d881d96e7013fc602ec576761fcb57b8430eb
MD5 6bb76e2c60c6b5ae18475254cb456c79
BLAKE2b-256 2bd774c9ae918dd4e3dc4d1ea5c891bdc1d3bf11ca0a85bc2dc366fe4b5948d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 6a1ebf6452651fc706beb08fbceae362ca7926bfd4210e424fab743c8d562bb8
MD5 481991c1fdb27553adeb2f966587ce8c
BLAKE2b-256 141b9a625435f70deb548981573dcdb371833f7747be8c8c9782b20d1243613c

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 117dd4d08a0d62a1d76d06db8f0652ac11d5bbc50a11c80bed51d24524751994
MD5 c00bc127f258a9efa7f19707d4eca8f6
BLAKE2b-256 1022a54082f60cb3700f2c0ca0ede058e13c44a558af9c5a00667b33589351fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b54722db7f19a69180241bc972e48209a8edef57bc2d603dd2032a8f38293450
MD5 af5e2dbe5babcbe7ed6eff0100f61dbd
BLAKE2b-256 6a8edbc5560a569a4b103660eb258c6b1715d0ff0c64fc7dbb32b4e0445ec695

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ed9cb8415a52a72a7f6d2aab062446bc653939007ed159714a0b7ee3ec37053f
MD5 930ca1c79e6667db19c1966473aed1f7
BLAKE2b-256 77f8535b7ff5d649b618e3866f8bea8110213d787e6372fae45ebd75c93ea368

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 bd965d6c128e40a8c413ef7c0be057e6c0b610609a61228745ae5ee7da99e4d4
MD5 5d26d1ab9f1459e2b35800b3c75f6bd1
BLAKE2b-256 74b5586cc9f7d7a78bdf0a285000fc27c3ea5fab1b1997cf37ea301edb0111d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 59.3 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 1e8216b25d2b613204897592a0aba7ed40b64737a78ce59ab9981d838eb5f9fa
MD5 9422a62334d19c94dcc99ae9e8130f49
BLAKE2b-256 feac9d308687bc9af7657195dfc15add0a8772a457cf86be0a4c9ae02568beae

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-win_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 94.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 25dd21fbc7a05e6497b9adb05c42ce2d620c828e6cd33616a1bcc9bad38cdb4f
MD5 5dd4b5f347081d9dc499922e6c2c9566
BLAKE2b-256 a5308ba85811e8107e38cbf3814ecb0887867b13a3bc3828bf2b1c1ab8e38067

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0de705c65ceff8758c110165a381d1f210e91ad8505b2c64902881e47dcd1cb4
MD5 4bb7d053a78dc522f0ebe5e4b548249a
BLAKE2b-256 975c122974d1ec853626d7fabbe297649a8b9af5b38121997d6dad13c3efd1e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 5fc69de7779217563004b580cadfc0bad7dc72c009c46da33035344d8e0aca12
MD5 61da1f4853dc935930ac7394412ece0d
BLAKE2b-256 de3dd4f4d3774813c665364460a063d42d113cedcc960f32c8540c21c8887e56

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 336af69397d65e71785aedf452b424e98ebfdeb6306dddd514bdec7d83e0c5c6
MD5 5fd24e5f43c3fa2696ce6cb4510c2454
BLAKE2b-256 52c8a57067b7e88b16fd67d13fe566b37004e78cccf0126bb93f9502a27f99b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 43cb5b1a79ffb1fdcef452ce3310e620729cf15403477ff3aab082d939b1031c
MD5 9386975df7b82bb5dfa2f37123727ae4
BLAKE2b-256 d849e250c3b802fe247ffa9f4afc941cc1d6c3b8171158653ca19999fbaeadb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9da82f1b3a2bbe2a39178f3cb6e210c07db6b056f6899fe98ef5c210a4d15558
MD5 5e2df9bea2938a8ebb00b5c834243f4a
BLAKE2b-256 b9c4c623af1db60de207f6ff0ab345a601f79cc781b945f139455d11ac2aed2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6bcace82b47e4fe89af3f713d3d6ee146b26983282841c864274f19ad5a66a1
MD5 33b58e42976b0550aa6ffea78c2c6a60
BLAKE2b-256 0a3e8f22216ccd8b60a3e3ad8e4ea2a405116bf88680b47143487d76ce663a1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 b3b979073720e7c05e73432f2346b340090c79e003d678dba50255a91e7ac0b4
MD5 75d745ad2309831e7288a3a971870896
BLAKE2b-256 90876ede5adbf56885c3114a5c9785199e3ef41949d107751e795de61b41c3e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 c7c8f56b97b0538373498ec0f0adfb41b4e779ea69382b9fdb260f24c89dec9f
MD5 793097cacfa4042884cb70c38ee6c832
BLAKE2b-256 4ce4126767ac8f620d247bdbbd44219a1201223a9aa64744c709c6556b79b9db

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 78396ce340fe582d80b9f688b52bedb177021f8a673898746b1d305939e8ca55
MD5 f364779344fa3b7e230818ba10c46df3
BLAKE2b-256 fdf6403bc9dc406703d914236c53da1f7e1cf3cfd47f816229099e045cd9ed90

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 22edef810864d625cf9f3591d8dc8c7f9e6d337c610abff4e1cdf27bac49d160
MD5 449de77b08db982456b0a5dfa3b69f05
BLAKE2b-256 b1e19e0639f7cc530d43df724de4bbc2df2d65515bc92286b5dc2f4dd418c5d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a84b8e106aafbabfab948cd619ca8ff54bd113a1ee812e1d1af62fe64148e1ae
MD5 84316c7691e17bb33fc18d69ca2d130a
BLAKE2b-256 6b4015f3ca4c8f1806b8c435f3a12ee9f6586ba6ad010b3f62e7425cf3dd6db4

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 25a38e5063434266c598e397d537a1188d6bc6071480e24f917613210c009825
MD5 1e017c941ae606ec5bddb1fc3cb8734a
BLAKE2b-256 e7932660c50b567071b7a47beb0e8d25d4e97903faa814270df6c8fc8a655899

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 59.3 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 4119e1739e05948522d19bd131669bb72be6647c7cf8048617dcceee34fbe535
MD5 bfff35b55ba9ea032129f328d2adafa7
BLAKE2b-256 09d8c619cd61e0c069ee0bc99cee91bc25e089c792202bb6e43d656fe9cd80a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-win_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 94.5 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 07438d100c5579ada2c38620f362e2c502d177da39968eadc01dac88f6c4b9d7
MD5 d297953aabde4212adf8fe33fbbd5954
BLAKE2b-256 89e70e2c776435eacd0fea858429ea7d1bd3a620e7d2b229d298109c3dc2e4fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73b9b50f7e81e70f3695636d55bbcdd439f736496a525dc63b43dfdab7c11a57
MD5 81b971df1e525edfe8b387f31f6e3971
BLAKE2b-256 0f16612106c1b2a3a28c11d2ba1ac2d3bdf820074bdb4a32b865ae5e4cfa13e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 293bc44b530b571f80c0b90d0704adbb7594f454a125c5be500ae5cb0d9a86ca
MD5 67078ee1cd8fbf5f5dc812f9b1631c97
BLAKE2b-256 9b9a417aea77540db8fef020bd49c2f5e66d90297f68517990d521aecfa5aede

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 0a75b41c3a9214353a8d5b0db719a8af5abb623a6b6a9112eba3b60202441e0e
MD5 ef233f1f2fcb2e8882ac9fdf1fb444cb
BLAKE2b-256 ffca239d9ca72facb41fb47bc89c6f7cb7f77f377fcc687134ca221a5695ce75

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a898646ff00805dd6879e2207dca7518540671695f50be4c3d5dd89021d936da
MD5 dd8b8c1650ed3fc9b67c81595401819c
BLAKE2b-256 010baa0e6c4fa2ca2bd89199d35c6d6f5799f1f0c54539184f498e254a0f6a45

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 69b9daeadd064df02aa09a17845521eb71ef5376a2d9c07d010ed693d8ad2144
MD5 b338a516495531bd0327aa28a635f1f2
BLAKE2b-256 fd5f4e7d5f144e9478390ccf654c111694c6aff7190d6c635168342e8a5c9d73

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1e5009882e69fbf32fc8c96de62a1713940cf994f0c40018af48503289623e93
MD5 b47e9f21259b45641c50659331590183
BLAKE2b-256 0ce13c3c50d33e0673bf610ef39929f6337089b136dd76c76751d55f29ec511e

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 dcb0cc837d8c8042c128f2a9dfbdc22a3017517f548c2e6ff7d4c268ae403ad5
MD5 99a45a99888e9bce993d152585209a16
BLAKE2b-256 cfc5e471c2db276f92ff65fae9dbb0b22eed882f2198e1cf1c62ab0fb4b7e15a

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 73ad34df2683b7862ae61b53295a0fef8165397929931be472b6dac35f06fedb
MD5 5e8cefbf724d6835f5d341acfb384a5a
BLAKE2b-256 3c5d891796444fa9328fa6838f30b1ec1f209e867c1d1b13e142becb9abeb870

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 8ec041b93752b4129a3e394346968bd08eca8a8ef1ff45930d35bb1adbcc7acb
MD5 4f6aa271c9d3c07740d8fa537f98e6c4
BLAKE2b-256 b782fcdf3ae971597907fbfba6398349b7cc79f5fb18dc525a2270135207b76d

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b0502c7f5b35b973d4442cd3b7a779b71f39a7c1808e99c694bc04b251eba8da
MD5 48abb4f1a5e65e30d909a8ae325b5291
BLAKE2b-256 eddb26809e6daf14e29876249b39359f9472c656044772b66cc4863a5a7f278e

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 699fd9420ceca761870674dcc0265f0803df1537090ca5ea66341494c19c1a4f
MD5 71601a585127d88eb09f6787c4837487
BLAKE2b-256 741d24458c4875603a5dc26ef2a25f214a49c55bb92ca343d159466467cf9663

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 be45110f1f242a2fd8b193057af18cbd9d4f3f21d9b44ee52fec5a6b31a4de37
MD5 b1d018090f0c41ddf3326102dbd8f88d
BLAKE2b-256 819cf430900073d1428fd77a362719f91f4f09dab9d03bac36cb3a15614176ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-win_arm64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 59.3 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 ee9fe1008c5f7a911bd38b4b0a70d29a7ead2e8515d685a22133a50b6b347090
MD5 d2457c074500402f30edd958b15afb1d
BLAKE2b-256 1ca0411120b442fe2317bbccfd031f7fecdc6ddf8768d8d84094433bddf828bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-win_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 94.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0c8d87dc371f46568749a04d63c3726d2d4866ba1a6d5ddf6022c56dd8951ff3
MD5 35b66aca7d1422aebecbae20f2d6d605
BLAKE2b-256 aa65da05ac7ea4e889fc9e78bbe23219bbe53f5c5e7dd8f28126a8cc4a939f72

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-win_amd64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 38ec8a7dc432232477820ec60d517fde450ced969c188444ddf4cc34bdf4db9a
MD5 27e125259715dd16ed535689c39b0e1a
BLAKE2b-256 82d107789c16504f50243ac9ea23a242b40203dab7823afe47c1b4005640e918

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 b75e7f94a6ff93eb4cf380fd85b3ac39a264330d80514fdd8ecbe812f55a26eb
MD5 60cf25f15f051b0f52a66477e80957e8
BLAKE2b-256 0d0ce040385acabd422cefd0b9b7addc4f9fabccee3ce29eb2ebcd47e380f6e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 9ecc5736b2a0425830c6f2d8613c37857f1c1e6f2bde232b3737b8fc34aed8d3
MD5 926c4fb9c55d7fcd9a66983a052ecb67
BLAKE2b-256 c4dfc5018b6a0d56e47dd36645925f5b4d48a30551f98d6e69c74e02d48382c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4dee68726807fd46c805c3e2042be27a50453d50f857b1721e04b77bef4d39a3
MD5 15edfa5e0afbce36f3b750d2163ea9af
BLAKE2b-256 4801617d1207d4440b5d3820c3b5721bb82bb52f1463e3be51c7e3eef00eafeb

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 20f0ed0e5c76c9dbaff38c1a73891a93f6552cb10dd664d28f35defcb6d27288
MD5 0f4d68e21a0659ae58c98b83f9ad34ed
BLAKE2b-256 0860c6577ba0dc136641ec697cf1687a3b729f8563ec0ec7b3372546a494ddca

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a470c093331f2bef6c33d2f9fe1602b3a5da95699f21bf9bfbfb0e303f8af08e
MD5 1ac332d8460313a29e36f683dc413df1
BLAKE2b-256 09b9dab88486914680bc71be648751950b09dcfe2bd6090d6c2ccc3c43889c6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 74b8b0234cde22652b4fa004a3510d1a6395eb5dab115d65f685a8cb1f50a310
MD5 7c8de810aaed3d64a439eeeef23ab6c4
BLAKE2b-256 0ee1d46513b7f1fb87424f4a5861c729f188445f3347b7cae9203dd457740705

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 fb85e7bc73ea4d0f2b82376bbe8a92108353b7d2c139efe53458f54ba740f1b4
MD5 eeedd9628aff243f60d6e8774d57b318
BLAKE2b-256 0d863d397a52ac3e96c7b05a5567bc31190468388d108be2c4502c31cfb16b76

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 37ca253ca4139b053242de5588cde203a2cc06a5de75699924ede0afa15e5d25
MD5 d31d2a800287fbaaaf3d417943f5f08b
BLAKE2b-256 682269f16a164a94f3f11cddd54e648540ab3feba797b8a13dbf920bed6c99a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 03f8413ca00f4c557f10e23ec74aee992e1a69ef0cd76407a6c6d28528c31e1a
MD5 6ff38dcb1582fbdd687350993401f75d
BLAKE2b-256 81e634b10b09533594d63f15d24e806111b88e99bfbd5cfa8829d964621c450a

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72f6d4949efa49dea9d7e2772013789d92d8773f0895a178817be1e96390aa95
MD5 b9c55393fa65ac5c16529c7483b6f5c5
BLAKE2b-256 e012e272f5a165a752d78040e67c0e49f9a0cc4b94ecc7aa8f6493303f4ee1cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 42a615831b40823da57e2eae7d7f624fada0b4782429af8a0f7425220722382c
MD5 a7071f5e25f3fb34bd23c658c9227984
BLAKE2b-256 766e53805ad2d0ab5f8651aa523768b7b1e73145a45af38e5c4ea6314356c4f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: simsimd-6.5.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 94.4 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f97b036872ff05b2060835aacf444fb0722bc1f651c5c3a008f1482556f7e4dd
MD5 a2a7e1b38a47be09bc88f9ce79f6aac7
BLAKE2b-256 9ac51973fbfdcece697d63a3e64c82164c35f8e39f0d70f5a26fa55d65e6e849

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-win_amd64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b0787c23e5dbaaba3d7be8acd81727b5e10d28a4546bd2a191d43143abc9f556
MD5 a18316e45d8e36e0041d24bded1e401b
BLAKE2b-256 dfc7cfe513b9efada360b88a8436989308a3855457fcf507bd09954c3a89b5e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 f907d636ab7c5c0c13216c1c6094e6f64cdd2efbca9851c1bf446a232777e5fc
MD5 f0a947f318332b3ff675670cfaef317f
BLAKE2b-256 6baeae89b1947149c6deb632534bf2f5bee0ec2ccf89d9ef60b77ebebc6b4472

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 e7958dee7068c75f892dbd6dc136b10f116038b478bf01f0b10786f7e0ea2ffa
MD5 b988051111c80bec07edc098a1a3c184
BLAKE2b-256 e2d7fb702c3fcb501116f7f032081e966c9cc344e2ef828aa5a6fc1f25eacb8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 84dbf53d7afa5ff8deac10e68ddfab4f0dca6a713878c3d469f450dbbf922fa1
MD5 ba0cdcb614fbdf271f2c5294b56735b1
BLAKE2b-256 ae9582fbfb59bb075f100ee867aac0a59000febf264790616ae55ccd55b0bdc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2341c853c9869b3dee0e594ab8c83258eec06963de418fb7e60342c34babc755
MD5 4b9d17ec6f6c58ec2acfe9fc48a54988
BLAKE2b-256 3d14afcf0108b340bc3ee0beeaf18542c709a5600e004a95d76d417d8431eb56

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cc54f791a330e62f2153e3b17f7ee7ebcb5e39919e3e38b2f31db3fa41107b10
MD5 b259bf29b1a68c136da765402e8b5889
BLAKE2b-256 b5d813244d3dd03e461b956d3ac0e524846c73d33df9559efbaee8d867f51f7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 668749de7d776db366fa4881ece5872da9d2c5e6edd53128e381611dff6f4d64
MD5 25bcb87cfa6c288c58ed39ce708435f6
BLAKE2b-256 f1db180c0e1f0f2e7ae1ce13facb26fbb5c532c5404854e2e48ec35eebbac8fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 18785820087f7730c6e16bb876a4a358f00808c232464ad2a3308e18c3007fbf
MD5 5433fb11eac15066660f0c5b7934e820
BLAKE2b-256 e0cd3e5650e81eb682e01b266d62d1468393c5f99d1e1abdcff7c0f9deb58114

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 1b66df9197c0cc2932f1ae5cde9ea08fc0b00d370082938de1c3530eeab446cd
MD5 331f1cd2af2d3028c0be03085acf85b0
BLAKE2b-256 26bf6e8a86f9b5d0cbe2be61bd00ef25108b007b15cb6bb4dcbd5088a9959182

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c1ef3cd2e855049eb801ef12aa2d1bf62bb94f8412247b8d8017ce0413638af1
MD5 44e4ef50b5f65bc0a73876e6c937ab5e
BLAKE2b-256 2ad9f9d37bbf8e401de091b8e9f69f96dfbecc32f84bbe78db6466230a490e22

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fe97e9ceb39f5c4ddaf09f48a3f5476c8b8a1f95bfff723d67cf40efad8b9f3c
MD5 d7369fe9d6934649ef65ac250d517082
BLAKE2b-256 c6b8074e71a4412a0b70b29259e7074235e92c060e674848f54723c4db232028

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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

File details

Details for the file simsimd-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for simsimd-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5d381f1013c2c7d74d3e40b7df0c1f167de119c1d7386cc6ef0bee7498d24163
MD5 618b7e5f06e58b7e06052acf7c928454
BLAKE2b-256 eb025b0479bc8015edf2ee69cac207ab4a811db336039a3dbd5dd595587a93ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for simsimd-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl:

Publisher: release.yml on ashvardanian/SimSIMD

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 Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page