SimSIMD
SimSIMD copied to clipboard
Up to 200x Faster Inner Products and Vector Similarity — for Python, JavaScript, Rust, C, and Swift, supporting f64, f32, f16 real & complex, i8, and binary vectors using SIMD for both x86 AVX2 & AVX-...
Hey, Is there any chance to have Mahalanobis distance in SimSIMD? https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.mahalanobis.html It's useful for measuring the distance between a point and a distribution. Thanks!
Ref: #90
Binary representations are becoming increasingly popular in Machine Learning and I'd love to explore the opportunity for faster Hamming and Jaccard distance calculations. I've looked into several benchmarks, most importantly...
The vdot serial functions were missing so I added them.
Rust has a crate half that has an f16 and bf16 we could be using. Users would probably be using this? - https://docs.rs/half/latest/half/index.html Rust will be adding f16 into the...
Most of your code for x86_64 under skylake ifdef Not all servers have very modern CPU, haswell and westmere overloads exists for simdjson and simdutf for an example Examples under...
**not bit** If we have vector of floats with only non-negative (or non-positive) values. It's better to convert it to uint8 instead of int8 Examples under Apache 2.0: https://github.com/google-research/google-research/tree/master/scann/scann/distance_measures/one_to_one https://github.com/ydb-platform/ydb/tree/main/library/cpp/dot_product...
Manhattan distance sometimes useful https://github.com/google-research/google-research/tree/master/scann/scann/distance_measures/one_to_one https://github.com/ydb-platform/ydb/tree/main/library/cpp/l1_distance Already done for bit (hamming)
We have the following warnings. I can replace _Float16 with simsimd_f16_t ``` /home/ch/code/mr/SimSIMD/include/simsimd/probability.h:485:35: warning: ISO C does not support the ‘_Float16’ type [-Wpedantic] 485 | __m512h one = _mm512_set1_ph((_Float16)1); |...
The new `f64` kernels don't benefit much from NEON, given the small 128-bit register size, but instead leverage the `rsqrt` approximations already used in SimSIMD for lower-precision inputs.