usearch 2.21.4 → 2.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/README.md +65 -69
  2. package/binding.gyp +15 -37
  3. package/c/CMakeLists.txt +4 -5
  4. package/c/README.md +8 -8
  5. package/c/lib.cpp +32 -14
  6. package/c/test.c +124 -1
  7. package/c/usearch.h +24 -3
  8. package/cpp/CMakeLists.txt +4 -0
  9. package/cpp/README.md +5 -5
  10. package/cpp/bench.cpp +97 -116
  11. package/cpp/test.cpp +117 -20
  12. package/include/usearch/index.hpp +224 -48
  13. package/include/usearch/index_dense.hpp +105 -40
  14. package/include/usearch/index_plugins.hpp +1387 -204
  15. package/javascript/README.md +1 -1
  16. package/javascript/dist/cjs/usearch.d.ts +8 -3
  17. package/javascript/dist/cjs/usearch.js +12 -4
  18. package/javascript/dist/esm/usearch.d.ts +8 -3
  19. package/javascript/dist/esm/usearch.js +12 -4
  20. package/javascript/lib.cpp +17 -0
  21. package/javascript/usearch.test.js +117 -94
  22. package/javascript/usearch.ts +14 -6
  23. package/numkong/.clang-tidy +30 -0
  24. package/{simsimd → numkong}/.cmake-format.py +18 -0
  25. package/numkong/.editorconfig +12 -0
  26. package/numkong/.git-blame-ignore-revs +123 -0
  27. package/numkong/.mailmap +15 -0
  28. package/numkong/.spi.yml +11 -0
  29. package/numkong/.swift-format +14 -0
  30. package/numkong/CITATION.cff +81 -0
  31. package/numkong/CONTRIBUTING.md +500 -0
  32. package/numkong/Cargo.toml +54 -0
  33. package/numkong/MANIFEST.in +8 -0
  34. package/numkong/Package.swift +84 -0
  35. package/numkong/README.md +569 -0
  36. package/numkong/bench/README.md +217 -0
  37. package/numkong/bench/bench-browser.html +323 -0
  38. package/numkong/bench/bench.cpp +344 -0
  39. package/numkong/bench/bench.hpp +816 -0
  40. package/numkong/bench/bench.js +148 -0
  41. package/numkong/bench/bench.mjs +616 -0
  42. package/numkong/bench/bench_attention.cpp +113 -0
  43. package/numkong/bench/bench_cast.cpp +264 -0
  44. package/numkong/bench/bench_cross_amx.cpp +62 -0
  45. package/numkong/bench/bench_cross_arm.cpp +245 -0
  46. package/numkong/bench/bench_cross_blas.cpp +309 -0
  47. package/numkong/bench/bench_cross_loongarch.cpp +106 -0
  48. package/numkong/bench/bench_cross_power.cpp +84 -0
  49. package/numkong/bench/bench_cross_rvv.cpp +121 -0
  50. package/numkong/bench/bench_cross_serial.cpp +151 -0
  51. package/numkong/bench/bench_cross_sme.cpp +163 -0
  52. package/numkong/bench/bench_cross_wasm.cpp +142 -0
  53. package/numkong/bench/bench_cross_x86.cpp +455 -0
  54. package/numkong/bench/bench_curved.cpp +210 -0
  55. package/numkong/bench/bench_dot.cpp +315 -0
  56. package/numkong/bench/bench_each.cpp +503 -0
  57. package/numkong/bench/bench_geospatial.cpp +112 -0
  58. package/numkong/bench/bench_maxsim.cpp +154 -0
  59. package/numkong/bench/bench_mesh.cpp +148 -0
  60. package/numkong/bench/bench_probability.cpp +60 -0
  61. package/numkong/bench/bench_reduce.cpp +371 -0
  62. package/numkong/bench/bench_set.cpp +73 -0
  63. package/numkong/bench/bench_sparse.cpp +198 -0
  64. package/numkong/bench/bench_spatial.cpp +347 -0
  65. package/numkong/bench/bench_trigonometry.cpp +137 -0
  66. package/numkong/bench/swift/Bench.swift +506 -0
  67. package/numkong/binding.gyp +169 -0
  68. package/numkong/build.rs +484 -0
  69. package/numkong/c/dispatch.h +512 -0
  70. package/numkong/c/dispatch_bf16.c +447 -0
  71. package/numkong/c/dispatch_bf16c.c +52 -0
  72. package/numkong/c/dispatch_e2m3.c +296 -0
  73. package/numkong/c/dispatch_e3m2.c +284 -0
  74. package/numkong/c/dispatch_e4m3.c +318 -0
  75. package/numkong/c/dispatch_e5m2.c +316 -0
  76. package/numkong/c/dispatch_f16.c +452 -0
  77. package/numkong/c/dispatch_f16c.c +58 -0
  78. package/numkong/c/dispatch_f32.c +434 -0
  79. package/numkong/c/dispatch_f32c.c +99 -0
  80. package/numkong/c/dispatch_f64.c +348 -0
  81. package/numkong/c/dispatch_f64c.c +98 -0
  82. package/numkong/c/dispatch_i16.c +96 -0
  83. package/numkong/c/dispatch_i32.c +89 -0
  84. package/numkong/c/dispatch_i4.c +153 -0
  85. package/numkong/c/dispatch_i64.c +86 -0
  86. package/numkong/c/dispatch_i8.c +348 -0
  87. package/numkong/c/dispatch_other.c +348 -0
  88. package/numkong/c/dispatch_u1.c +193 -0
  89. package/numkong/c/dispatch_u16.c +124 -0
  90. package/numkong/c/dispatch_u32.c +118 -0
  91. package/numkong/c/dispatch_u4.c +153 -0
  92. package/numkong/c/dispatch_u64.c +102 -0
  93. package/numkong/c/dispatch_u8.c +364 -0
  94. package/numkong/c/numkong.c +940 -0
  95. package/numkong/cmake/nk_arm_isa_probes.cmake +61 -0
  96. package/numkong/cmake/nk_isa_probe.cmake +90 -0
  97. package/numkong/cmake/nk_loongarch_isa_probes.cmake +15 -0
  98. package/numkong/cmake/nk_math_lib.cmake +46 -0
  99. package/numkong/cmake/nk_power_isa_probes.cmake +15 -0
  100. package/numkong/cmake/nk_riscv_isa_probes.cmake +19 -0
  101. package/numkong/cmake/nk_x86_isa_probes.cmake +35 -0
  102. package/numkong/cmake/toolchain-aarch64-gnu.cmake +86 -0
  103. package/numkong/cmake/toolchain-android-arm64.cmake +25 -0
  104. package/numkong/cmake/toolchain-android-armv7.cmake +25 -0
  105. package/numkong/cmake/toolchain-loongarch64-gnu.cmake +68 -0
  106. package/numkong/cmake/toolchain-ppc64le-gnu.cmake +74 -0
  107. package/numkong/cmake/toolchain-riscv64-gnu.cmake +107 -0
  108. package/numkong/cmake/toolchain-riscv64-llvm.cmake +114 -0
  109. package/numkong/cmake/toolchain-wasi.cmake +77 -0
  110. package/numkong/cmake/toolchain-wasm.cmake +70 -0
  111. package/numkong/cmake/toolchain-wasm64.cmake +62 -0
  112. package/numkong/cmake/toolchain-x86_64-llvm.cmake +47 -0
  113. package/numkong/include/README.md +643 -0
  114. package/numkong/include/module.modulemap +129 -0
  115. package/numkong/include/numkong/attention/sapphireamx.h +1363 -0
  116. package/numkong/include/numkong/attention/sme.h +2075 -0
  117. package/numkong/include/numkong/attention.h +49 -0
  118. package/numkong/include/numkong/capabilities.h +930 -0
  119. package/numkong/include/numkong/cast/README.md +262 -0
  120. package/numkong/include/numkong/cast/diamond.h +64 -0
  121. package/numkong/include/numkong/cast/haswell.h +823 -0
  122. package/numkong/include/numkong/cast/icelake.h +475 -0
  123. package/numkong/include/numkong/cast/loongsonasx.h +252 -0
  124. package/numkong/include/numkong/cast/neon.h +1174 -0
  125. package/numkong/include/numkong/cast/powervsx.h +449 -0
  126. package/numkong/include/numkong/cast/rvv.h +970 -0
  127. package/numkong/include/numkong/cast/sapphire.h +262 -0
  128. package/numkong/include/numkong/cast/serial.h +2336 -0
  129. package/numkong/include/numkong/cast/skylake.h +915 -0
  130. package/numkong/include/numkong/cast/v128relaxed.h +537 -0
  131. package/numkong/include/numkong/cast.h +254 -0
  132. package/numkong/include/numkong/cast.hpp +44 -0
  133. package/numkong/include/numkong/curved/README.md +223 -0
  134. package/numkong/include/numkong/curved/genoa.h +182 -0
  135. package/numkong/include/numkong/curved/haswell.h +276 -0
  136. package/numkong/include/numkong/curved/neon.h +329 -0
  137. package/numkong/include/numkong/curved/neonbfdot.h +211 -0
  138. package/numkong/include/numkong/curved/rvv.h +305 -0
  139. package/numkong/include/numkong/curved/serial.h +207 -0
  140. package/numkong/include/numkong/curved/skylake.h +457 -0
  141. package/numkong/include/numkong/curved/smef64.h +530 -0
  142. package/numkong/include/numkong/curved.h +513 -0
  143. package/numkong/include/numkong/curved.hpp +144 -0
  144. package/numkong/include/numkong/dot/README.md +442 -0
  145. package/numkong/include/numkong/dot/alder.h +563 -0
  146. package/numkong/include/numkong/dot/diamond.h +158 -0
  147. package/numkong/include/numkong/dot/genoa.h +289 -0
  148. package/numkong/include/numkong/dot/haswell.h +1723 -0
  149. package/numkong/include/numkong/dot/icelake.h +997 -0
  150. package/numkong/include/numkong/dot/loongsonasx.h +671 -0
  151. package/numkong/include/numkong/dot/neon.h +869 -0
  152. package/numkong/include/numkong/dot/neonbfdot.h +243 -0
  153. package/numkong/include/numkong/dot/neonfhm.h +358 -0
  154. package/numkong/include/numkong/dot/neonfp8.h +323 -0
  155. package/numkong/include/numkong/dot/neonsdot.h +622 -0
  156. package/numkong/include/numkong/dot/powervsx.h +752 -0
  157. package/numkong/include/numkong/dot/rvv.h +722 -0
  158. package/numkong/include/numkong/dot/rvvbb.h +72 -0
  159. package/numkong/include/numkong/dot/rvvbf16.h +123 -0
  160. package/numkong/include/numkong/dot/rvvhalf.h +129 -0
  161. package/numkong/include/numkong/dot/sapphire.h +141 -0
  162. package/numkong/include/numkong/dot/serial.h +874 -0
  163. package/numkong/include/numkong/dot/sierra.h +405 -0
  164. package/numkong/include/numkong/dot/skylake.h +1116 -0
  165. package/numkong/include/numkong/dot/sve.h +420 -0
  166. package/numkong/include/numkong/dot/svebfdot.h +75 -0
  167. package/numkong/include/numkong/dot/svehalf.h +168 -0
  168. package/numkong/include/numkong/dot/svesdot.h +90 -0
  169. package/numkong/include/numkong/dot/v128relaxed.h +1293 -0
  170. package/numkong/include/numkong/dot.h +1136 -0
  171. package/numkong/include/numkong/dot.hpp +94 -0
  172. package/numkong/include/numkong/dots/README.md +496 -0
  173. package/numkong/include/numkong/dots/alder.h +117 -0
  174. package/numkong/include/numkong/dots/diamond.h +86 -0
  175. package/numkong/include/numkong/dots/genoa.h +100 -0
  176. package/numkong/include/numkong/dots/graniteamx.h +733 -0
  177. package/numkong/include/numkong/dots/haswell.h +310 -0
  178. package/numkong/include/numkong/dots/icelake.h +180 -0
  179. package/numkong/include/numkong/dots/loongsonasx.h +176 -0
  180. package/numkong/include/numkong/dots/neon.h +123 -0
  181. package/numkong/include/numkong/dots/neonbfdot.h +59 -0
  182. package/numkong/include/numkong/dots/neonfhm.h +96 -0
  183. package/numkong/include/numkong/dots/neonfp8.h +99 -0
  184. package/numkong/include/numkong/dots/neonsdot.h +144 -0
  185. package/numkong/include/numkong/dots/powervsx.h +194 -0
  186. package/numkong/include/numkong/dots/rvv.h +2593 -0
  187. package/numkong/include/numkong/dots/sapphireamx.h +4017 -0
  188. package/numkong/include/numkong/dots/serial.h +2867 -0
  189. package/numkong/include/numkong/dots/sierra.h +100 -0
  190. package/numkong/include/numkong/dots/skylake.h +207 -0
  191. package/numkong/include/numkong/dots/sme.h +5041 -0
  192. package/numkong/include/numkong/dots/smebi32.h +477 -0
  193. package/numkong/include/numkong/dots/smef64.h +1328 -0
  194. package/numkong/include/numkong/dots/smehalf.h +47 -0
  195. package/numkong/include/numkong/dots/v128relaxed.h +317 -0
  196. package/numkong/include/numkong/dots.h +3110 -0
  197. package/numkong/include/numkong/dots.hpp +641 -0
  198. package/numkong/include/numkong/each/README.md +465 -0
  199. package/numkong/include/numkong/each/haswell.h +1658 -0
  200. package/numkong/include/numkong/each/icelake.h +272 -0
  201. package/numkong/include/numkong/each/neon.h +1138 -0
  202. package/numkong/include/numkong/each/neonbfdot.h +211 -0
  203. package/numkong/include/numkong/each/neonhalf.h +318 -0
  204. package/numkong/include/numkong/each/rvv.h +1121 -0
  205. package/numkong/include/numkong/each/sapphire.h +343 -0
  206. package/numkong/include/numkong/each/serial.h +282 -0
  207. package/numkong/include/numkong/each/skylake.h +1562 -0
  208. package/numkong/include/numkong/each/v128relaxed.h +562 -0
  209. package/numkong/include/numkong/each.h +2232 -0
  210. package/numkong/include/numkong/each.hpp +434 -0
  211. package/numkong/include/numkong/geospatial/README.md +147 -0
  212. package/numkong/include/numkong/geospatial/haswell.h +633 -0
  213. package/numkong/include/numkong/geospatial/neon.h +615 -0
  214. package/numkong/include/numkong/geospatial/rvv.h +701 -0
  215. package/numkong/include/numkong/geospatial/serial.h +309 -0
  216. package/numkong/include/numkong/geospatial/skylake.h +613 -0
  217. package/numkong/include/numkong/geospatial/v128relaxed.h +652 -0
  218. package/numkong/include/numkong/geospatial.h +453 -0
  219. package/numkong/include/numkong/geospatial.hpp +235 -0
  220. package/numkong/include/numkong/matrix.hpp +336 -0
  221. package/numkong/include/numkong/maxsim/README.md +187 -0
  222. package/numkong/include/numkong/maxsim/alder.h +511 -0
  223. package/numkong/include/numkong/maxsim/genoa.h +115 -0
  224. package/numkong/include/numkong/maxsim/haswell.h +553 -0
  225. package/numkong/include/numkong/maxsim/icelake.h +480 -0
  226. package/numkong/include/numkong/maxsim/neonsdot.h +394 -0
  227. package/numkong/include/numkong/maxsim/sapphireamx.h +877 -0
  228. package/numkong/include/numkong/maxsim/serial.h +490 -0
  229. package/numkong/include/numkong/maxsim/sme.h +993 -0
  230. package/numkong/include/numkong/maxsim/v128relaxed.h +280 -0
  231. package/numkong/include/numkong/maxsim.h +571 -0
  232. package/numkong/include/numkong/maxsim.hpp +133 -0
  233. package/numkong/include/numkong/mesh/README.md +219 -0
  234. package/numkong/include/numkong/mesh/haswell.h +2013 -0
  235. package/numkong/include/numkong/mesh/neon.h +1821 -0
  236. package/numkong/include/numkong/mesh/neonbfdot.h +771 -0
  237. package/numkong/include/numkong/mesh/rvv.h +936 -0
  238. package/numkong/include/numkong/mesh/serial.h +721 -0
  239. package/numkong/include/numkong/mesh/skylake.h +2344 -0
  240. package/numkong/include/numkong/mesh/v128relaxed.h +1081 -0
  241. package/numkong/include/numkong/mesh.h +666 -0
  242. package/numkong/include/numkong/mesh.hpp +701 -0
  243. package/numkong/include/numkong/numkong.h +78 -0
  244. package/numkong/include/numkong/numkong.hpp +58 -0
  245. package/numkong/include/numkong/probability/README.md +177 -0
  246. package/numkong/include/numkong/probability/haswell.h +267 -0
  247. package/numkong/include/numkong/probability/neon.h +255 -0
  248. package/numkong/include/numkong/probability/rvv.h +414 -0
  249. package/numkong/include/numkong/probability/serial.h +181 -0
  250. package/numkong/include/numkong/probability/skylake.h +324 -0
  251. package/numkong/include/numkong/probability.h +380 -0
  252. package/numkong/include/numkong/probability.hpp +120 -0
  253. package/numkong/include/numkong/random.h +50 -0
  254. package/numkong/include/numkong/random.hpp +285 -0
  255. package/numkong/include/numkong/reduce/README.md +552 -0
  256. package/numkong/include/numkong/reduce/alder.h +636 -0
  257. package/numkong/include/numkong/reduce/genoa.h +201 -0
  258. package/numkong/include/numkong/reduce/haswell.h +3785 -0
  259. package/numkong/include/numkong/reduce/icelake.h +549 -0
  260. package/numkong/include/numkong/reduce/neon.h +3980 -0
  261. package/numkong/include/numkong/reduce/neonbfdot.h +142 -0
  262. package/numkong/include/numkong/reduce/neonfhm.h +293 -0
  263. package/numkong/include/numkong/reduce/neonsdot.h +357 -0
  264. package/numkong/include/numkong/reduce/rvv.h +3533 -0
  265. package/numkong/include/numkong/reduce/serial.h +753 -0
  266. package/numkong/include/numkong/reduce/sierra.h +338 -0
  267. package/numkong/include/numkong/reduce/skylake.h +3794 -0
  268. package/numkong/include/numkong/reduce/sve.h +52 -0
  269. package/numkong/include/numkong/reduce/v128relaxed.h +2302 -0
  270. package/numkong/include/numkong/reduce.h +1582 -0
  271. package/numkong/include/numkong/reduce.hpp +778 -0
  272. package/numkong/include/numkong/scalar/README.md +89 -0
  273. package/numkong/include/numkong/scalar/haswell.h +122 -0
  274. package/numkong/include/numkong/scalar/loongsonasx.h +74 -0
  275. package/numkong/include/numkong/scalar/neon.h +122 -0
  276. package/numkong/include/numkong/scalar/neonhalf.h +70 -0
  277. package/numkong/include/numkong/scalar/powervsx.h +96 -0
  278. package/numkong/include/numkong/scalar/rvv.h +211 -0
  279. package/numkong/include/numkong/scalar/sapphire.h +74 -0
  280. package/numkong/include/numkong/scalar/serial.h +332 -0
  281. package/numkong/include/numkong/scalar/v128relaxed.h +56 -0
  282. package/numkong/include/numkong/scalar.h +696 -0
  283. package/numkong/include/numkong/set/README.md +179 -0
  284. package/numkong/include/numkong/set/haswell.h +334 -0
  285. package/numkong/include/numkong/set/icelake.h +485 -0
  286. package/numkong/include/numkong/set/loongsonasx.h +181 -0
  287. package/numkong/include/numkong/set/neon.h +363 -0
  288. package/numkong/include/numkong/set/powervsx.h +326 -0
  289. package/numkong/include/numkong/set/rvv.h +226 -0
  290. package/numkong/include/numkong/set/rvvbb.h +117 -0
  291. package/numkong/include/numkong/set/serial.h +174 -0
  292. package/numkong/include/numkong/set/sve.h +187 -0
  293. package/numkong/include/numkong/set/v128relaxed.h +240 -0
  294. package/numkong/include/numkong/set.h +471 -0
  295. package/numkong/include/numkong/set.hpp +114 -0
  296. package/numkong/include/numkong/sets/README.md +149 -0
  297. package/numkong/include/numkong/sets/haswell.h +63 -0
  298. package/numkong/include/numkong/sets/icelake.h +66 -0
  299. package/numkong/include/numkong/sets/loongsonasx.h +52 -0
  300. package/numkong/include/numkong/sets/neon.h +61 -0
  301. package/numkong/include/numkong/sets/powervsx.h +65 -0
  302. package/numkong/include/numkong/sets/serial.h +43 -0
  303. package/numkong/include/numkong/sets/smebi32.h +1135 -0
  304. package/numkong/include/numkong/sets/v128relaxed.h +58 -0
  305. package/numkong/include/numkong/sets.h +382 -0
  306. package/numkong/include/numkong/sparse/README.md +156 -0
  307. package/numkong/include/numkong/sparse/icelake.h +463 -0
  308. package/numkong/include/numkong/sparse/neon.h +288 -0
  309. package/numkong/include/numkong/sparse/serial.h +117 -0
  310. package/numkong/include/numkong/sparse/sve2.h +504 -0
  311. package/numkong/include/numkong/sparse/turin.h +322 -0
  312. package/numkong/include/numkong/sparse.h +363 -0
  313. package/numkong/include/numkong/sparse.hpp +113 -0
  314. package/numkong/include/numkong/spatial/README.md +439 -0
  315. package/numkong/include/numkong/spatial/alder.h +604 -0
  316. package/numkong/include/numkong/spatial/diamond.h +240 -0
  317. package/numkong/include/numkong/spatial/genoa.h +222 -0
  318. package/numkong/include/numkong/spatial/haswell.h +979 -0
  319. package/numkong/include/numkong/spatial/icelake.h +1067 -0
  320. package/numkong/include/numkong/spatial/loongsonasx.h +483 -0
  321. package/numkong/include/numkong/spatial/neon.h +846 -0
  322. package/numkong/include/numkong/spatial/neonbfdot.h +164 -0
  323. package/numkong/include/numkong/spatial/neonfp8.h +258 -0
  324. package/numkong/include/numkong/spatial/neonsdot.h +429 -0
  325. package/numkong/include/numkong/spatial/powervsx.h +738 -0
  326. package/numkong/include/numkong/spatial/rvv.h +991 -0
  327. package/numkong/include/numkong/spatial/rvvbf16.h +128 -0
  328. package/numkong/include/numkong/spatial/rvvhalf.h +120 -0
  329. package/numkong/include/numkong/spatial/serial.h +347 -0
  330. package/numkong/include/numkong/spatial/sierra.h +516 -0
  331. package/numkong/include/numkong/spatial/skylake.h +605 -0
  332. package/numkong/include/numkong/spatial/sve.h +246 -0
  333. package/numkong/include/numkong/spatial/svebfdot.h +125 -0
  334. package/numkong/include/numkong/spatial/svehalf.h +136 -0
  335. package/numkong/include/numkong/spatial/svesdot.h +143 -0
  336. package/numkong/include/numkong/spatial/v128relaxed.h +969 -0
  337. package/numkong/include/numkong/spatial.h +1681 -0
  338. package/numkong/include/numkong/spatial.hpp +183 -0
  339. package/numkong/include/numkong/spatials/README.md +580 -0
  340. package/numkong/include/numkong/spatials/alder.h +94 -0
  341. package/numkong/include/numkong/spatials/diamond.h +82 -0
  342. package/numkong/include/numkong/spatials/genoa.h +94 -0
  343. package/numkong/include/numkong/spatials/graniteamx.h +173 -0
  344. package/numkong/include/numkong/spatials/haswell.h +219 -0
  345. package/numkong/include/numkong/spatials/icelake.h +113 -0
  346. package/numkong/include/numkong/spatials/loongsonasx.h +153 -0
  347. package/numkong/include/numkong/spatials/neon.h +109 -0
  348. package/numkong/include/numkong/spatials/neonbfdot.h +60 -0
  349. package/numkong/include/numkong/spatials/neonfhm.h +92 -0
  350. package/numkong/include/numkong/spatials/neonfp8.h +111 -0
  351. package/numkong/include/numkong/spatials/neonsdot.h +143 -0
  352. package/numkong/include/numkong/spatials/powervsx.h +153 -0
  353. package/numkong/include/numkong/spatials/rvv.h +1976 -0
  354. package/numkong/include/numkong/spatials/sapphireamx.h +1149 -0
  355. package/numkong/include/numkong/spatials/serial.h +248 -0
  356. package/numkong/include/numkong/spatials/sierra.h +96 -0
  357. package/numkong/include/numkong/spatials/skylake.h +184 -0
  358. package/numkong/include/numkong/spatials/sme.h +1927 -0
  359. package/numkong/include/numkong/spatials/smef64.h +483 -0
  360. package/numkong/include/numkong/spatials/v128relaxed.h +240 -0
  361. package/numkong/include/numkong/spatials.h +3374 -0
  362. package/numkong/include/numkong/spatials.hpp +509 -0
  363. package/numkong/include/numkong/tensor.hpp +1981 -0
  364. package/numkong/include/numkong/trigonometry/README.md +184 -0
  365. package/numkong/include/numkong/trigonometry/haswell.h +653 -0
  366. package/numkong/include/numkong/trigonometry/neon.h +638 -0
  367. package/numkong/include/numkong/trigonometry/rvv.h +700 -0
  368. package/numkong/include/numkong/trigonometry/serial.h +703 -0
  369. package/numkong/include/numkong/trigonometry/skylake.h +725 -0
  370. package/numkong/include/numkong/trigonometry/v128relaxed.h +667 -0
  371. package/numkong/include/numkong/trigonometry.h +467 -0
  372. package/numkong/include/numkong/trigonometry.hpp +166 -0
  373. package/numkong/include/numkong/types.h +1695 -0
  374. package/numkong/include/numkong/types.hpp +6027 -0
  375. package/numkong/include/numkong/vector.hpp +766 -0
  376. package/numkong/javascript/@numkong-darwin-arm64/package.json +26 -0
  377. package/numkong/javascript/@numkong-darwin-x64/package.json +26 -0
  378. package/numkong/javascript/@numkong-linux-arm64/package.json +25 -0
  379. package/numkong/javascript/@numkong-linux-x64/package.json +25 -0
  380. package/numkong/javascript/@numkong-win32-arm64/package.json +25 -0
  381. package/numkong/javascript/@numkong-win32-x64/package.json +25 -0
  382. package/numkong/javascript/README.md +254 -0
  383. package/numkong/javascript/node-gyp-build.d.ts +4 -0
  384. package/numkong/javascript/numkong-browser.ts +40 -0
  385. package/numkong/javascript/numkong-wasm.ts +750 -0
  386. package/numkong/javascript/numkong.c +712 -0
  387. package/numkong/javascript/numkong.ts +613 -0
  388. package/{simsimd → numkong}/javascript/tsconfig-base.json +6 -3
  389. package/numkong/javascript/tsconfig-cjs.json +13 -0
  390. package/{simsimd → numkong}/javascript/tsconfig-esm.json +1 -1
  391. package/numkong/javascript/types.ts +784 -0
  392. package/numkong/numkong.gypi +104 -0
  393. package/numkong/package.json +108 -0
  394. package/numkong/probes/arm_neon.c +8 -0
  395. package/numkong/probes/arm_neon_bfdot.c +9 -0
  396. package/numkong/probes/arm_neon_fhm.c +9 -0
  397. package/numkong/probes/arm_neon_half.c +8 -0
  398. package/numkong/probes/arm_neon_sdot.c +9 -0
  399. package/numkong/probes/arm_neonfp8.c +9 -0
  400. package/numkong/probes/arm_sme.c +16 -0
  401. package/numkong/probes/arm_sme2.c +16 -0
  402. package/numkong/probes/arm_sme2p1.c +16 -0
  403. package/numkong/probes/arm_sme_bf16.c +16 -0
  404. package/numkong/probes/arm_sme_bi32.c +16 -0
  405. package/numkong/probes/arm_sme_f64.c +16 -0
  406. package/numkong/probes/arm_sme_fa64.c +14 -0
  407. package/numkong/probes/arm_sme_half.c +16 -0
  408. package/numkong/probes/arm_sme_lut2.c +15 -0
  409. package/numkong/probes/arm_sve.c +18 -0
  410. package/numkong/probes/arm_sve2.c +20 -0
  411. package/numkong/probes/arm_sve2p1.c +18 -0
  412. package/numkong/probes/arm_sve_bfdot.c +20 -0
  413. package/numkong/probes/arm_sve_half.c +18 -0
  414. package/numkong/probes/arm_sve_sdot.c +21 -0
  415. package/numkong/probes/loongarch_lasx.c +12 -0
  416. package/numkong/probes/power_vsx.c +12 -0
  417. package/numkong/probes/probe.js +127 -0
  418. package/numkong/probes/riscv_rvv.c +14 -0
  419. package/numkong/probes/riscv_rvv_bb.c +15 -0
  420. package/numkong/probes/riscv_rvv_bf16.c +17 -0
  421. package/numkong/probes/riscv_rvv_half.c +14 -0
  422. package/numkong/probes/wasm_v128relaxed.c +11 -0
  423. package/numkong/probes/x86_alder.c +17 -0
  424. package/numkong/probes/x86_diamond.c +17 -0
  425. package/numkong/probes/x86_genoa.c +17 -0
  426. package/numkong/probes/x86_graniteamx.c +19 -0
  427. package/numkong/probes/x86_haswell.c +11 -0
  428. package/numkong/probes/x86_icelake.c +17 -0
  429. package/numkong/probes/x86_sapphire.c +16 -0
  430. package/numkong/probes/x86_sapphireamx.c +18 -0
  431. package/numkong/probes/x86_sierra.c +17 -0
  432. package/numkong/probes/x86_skylake.c +15 -0
  433. package/numkong/probes/x86_turin.c +17 -0
  434. package/numkong/rust/README.md +698 -0
  435. package/numkong/rust/capabilities.rs +96 -0
  436. package/numkong/rust/cast.rs +314 -0
  437. package/numkong/rust/curved.rs +391 -0
  438. package/numkong/rust/each.rs +2721 -0
  439. package/numkong/rust/geospatial.rs +343 -0
  440. package/numkong/rust/matrix.rs +5424 -0
  441. package/numkong/rust/maxsim.rs +540 -0
  442. package/numkong/rust/mesh.rs +837 -0
  443. package/numkong/rust/numkong.rs +409 -0
  444. package/numkong/rust/probability.rs +272 -0
  445. package/numkong/rust/reduce.rs +1249 -0
  446. package/numkong/rust/set.rs +194 -0
  447. package/numkong/rust/sparse.rs +513 -0
  448. package/numkong/rust/spatial.rs +1815 -0
  449. package/numkong/rust/tensor.rs +7565 -0
  450. package/numkong/rust/types.rs +3666 -0
  451. package/numkong/rust/vector.rs +1899 -0
  452. package/numkong/rustfmt.toml +2 -0
  453. package/numkong/swift/Matrix.swift +1388 -0
  454. package/numkong/swift/MaxSim.swift +151 -0
  455. package/numkong/swift/NumKong.swift +283 -0
  456. package/numkong/swift/Numerics.swift +329 -0
  457. package/numkong/swift/README.md +433 -0
  458. package/numkong/swift/Scalar.swift +741 -0
  459. package/numkong/swift/Tensor.swift +209 -0
  460. package/numkong/test/README.md +315 -0
  461. package/numkong/test/playwright.config.ts +16 -0
  462. package/numkong/test/swift/Test.swift +534 -0
  463. package/numkong/test/test-browser-bundle-runner.mjs +36 -0
  464. package/numkong/test/test-browser-bundle.html +188 -0
  465. package/numkong/test/test-browser-runner.mjs +43 -0
  466. package/numkong/test/test-browser.html +305 -0
  467. package/numkong/test/test-dtypes.mjs +453 -0
  468. package/numkong/test/test-wasm.mjs +267 -0
  469. package/numkong/test/test.cpp +442 -0
  470. package/numkong/test/test.hpp +580 -0
  471. package/numkong/test/test.mjs +363 -0
  472. package/numkong/test/test_base.py +1041 -0
  473. package/numkong/test/test_cast.cpp +242 -0
  474. package/numkong/test/test_cross.hpp +551 -0
  475. package/numkong/test/test_cross.py +467 -0
  476. package/numkong/test/test_cross_amx.cpp +50 -0
  477. package/numkong/test/test_cross_arm.cpp +225 -0
  478. package/numkong/test/test_cross_blas.cpp +354 -0
  479. package/numkong/test/test_cross_loongarch.cpp +90 -0
  480. package/numkong/test/test_cross_power.cpp +73 -0
  481. package/numkong/test/test_cross_rvv.cpp +109 -0
  482. package/numkong/test/test_cross_serial.cpp +181 -0
  483. package/numkong/test/test_cross_sme.cpp +148 -0
  484. package/numkong/test/test_cross_wasm.cpp +141 -0
  485. package/numkong/test/test_cross_x86.cpp +442 -0
  486. package/numkong/test/test_curved.cpp +182 -0
  487. package/numkong/test/test_curved.py +207 -0
  488. package/numkong/test/test_dot.cpp +353 -0
  489. package/numkong/test/test_dot.py +296 -0
  490. package/numkong/test/test_each.cpp +437 -0
  491. package/numkong/test/test_each.py +756 -0
  492. package/numkong/test/test_geospatial.cpp +155 -0
  493. package/numkong/test/test_geospatial.py +241 -0
  494. package/numkong/test/test_maxsim.cpp +138 -0
  495. package/numkong/test/test_maxsim.py +209 -0
  496. package/numkong/test/test_mesh.cpp +203 -0
  497. package/numkong/test/test_mesh.py +394 -0
  498. package/numkong/test/test_probability.cpp +136 -0
  499. package/numkong/test/test_probability.py +166 -0
  500. package/numkong/test/test_reduce.cpp +563 -0
  501. package/numkong/test/test_reduce.py +781 -0
  502. package/numkong/test/test_set.cpp +151 -0
  503. package/numkong/test/test_set.py +120 -0
  504. package/numkong/test/test_similarities.py +579 -0
  505. package/numkong/test/test_sparse.cpp +121 -0
  506. package/numkong/test/test_sparse.py +118 -0
  507. package/numkong/test/test_spatial.cpp +518 -0
  508. package/numkong/test/test_spatial.py +269 -0
  509. package/numkong/test/test_tensor.cpp +884 -0
  510. package/numkong/test/test_tensor.py +1417 -0
  511. package/numkong/test/test_trigonometry.cpp +156 -0
  512. package/numkong/test/test_trigonometry.py +180 -0
  513. package/package.json +7 -8
  514. package/prebuilds/darwin-arm64+x64/usearch.node +0 -0
  515. package/prebuilds/linux-arm64/usearch.node +0 -0
  516. package/prebuilds/linux-x64/usearch.node +0 -0
  517. package/fp16/CMakeLists.txt +0 -176
  518. package/fp16/LICENSE +0 -11
  519. package/fp16/README.md +0 -20
  520. package/fp16/bench/alt-element.cc +0 -89
  521. package/fp16/bench/from-alt-array.cc +0 -175
  522. package/fp16/bench/from-ieee-array.cc +0 -399
  523. package/fp16/bench/ieee-element.cc +0 -272
  524. package/fp16/bench/to-alt-array.cc +0 -91
  525. package/fp16/bench/to-ieee-array.cc +0 -303
  526. package/fp16/cmake/DownloadGoogleBenchmark.cmake +0 -15
  527. package/fp16/cmake/DownloadGoogleTest.cmake +0 -15
  528. package/fp16/cmake/DownloadPSimd.cmake +0 -15
  529. package/fp16/configure.py +0 -65
  530. package/fp16/confu.yaml +0 -8
  531. package/fp16/include/fp16/__init__.py +0 -0
  532. package/fp16/include/fp16/avx.py +0 -50
  533. package/fp16/include/fp16/avx2.py +0 -53
  534. package/fp16/include/fp16/bitcasts.h +0 -92
  535. package/fp16/include/fp16/fp16.h +0 -451
  536. package/fp16/include/fp16/psimd.h +0 -131
  537. package/fp16/include/fp16.h +0 -11
  538. package/fp16/jni/Android.mk +0 -6
  539. package/fp16/jni/Application.mk +0 -4
  540. package/fp16/test/alt-from-fp32-value.cc +0 -498
  541. package/fp16/test/alt-to-fp32-bits.cc +0 -263
  542. package/fp16/test/alt-to-fp32-psimd.cc +0 -145
  543. package/fp16/test/alt-to-fp32-value.cc +0 -348
  544. package/fp16/test/alt-to-fp32x2-psimd.cc +0 -245
  545. package/fp16/test/bitcasts.cc +0 -56
  546. package/fp16/test/ieee-from-fp32-value.cc +0 -523
  547. package/fp16/test/ieee-to-fp32-bits.cc +0 -333
  548. package/fp16/test/ieee-to-fp32-psimd.cc +0 -312
  549. package/fp16/test/ieee-to-fp32-value.cc +0 -420
  550. package/fp16/test/ieee-to-fp32x2-psimd.cc +0 -541
  551. package/fp16/test/peachpy/alt-xmm-to-fp32-xmm-avx.cc +0 -96
  552. package/fp16/test/peachpy/alt-xmm-to-fp32-ymm-avx2.cc +0 -96
  553. package/fp16/test/peachpy/stubs.py +0 -38
  554. package/fp16/test/tables.cc +0 -530
  555. package/fp16/test/tables.h +0 -13
  556. package/fp16/third-party/THHalf.h +0 -92
  557. package/fp16/third-party/eigen-half.h +0 -170
  558. package/fp16/third-party/float16-compressor.h +0 -80
  559. package/fp16/third-party/half.hpp +0 -2916
  560. package/fp16/third-party/npy-halffloat.h +0 -328
  561. package/simsimd/.git-blame-ignore-revs +0 -2
  562. package/simsimd/CONTRIBUTING.md +0 -321
  563. package/simsimd/Cargo.toml +0 -49
  564. package/simsimd/MANIFEST.in +0 -4
  565. package/simsimd/Package.swift +0 -28
  566. package/simsimd/README.md +0 -1493
  567. package/simsimd/binding.gyp +0 -35
  568. package/simsimd/build.rs +0 -70
  569. package/simsimd/c/lib.c +0 -374
  570. package/simsimd/include/module.modulemap +0 -4
  571. package/simsimd/include/simsimd/binary.h +0 -486
  572. package/simsimd/include/simsimd/curved.h +0 -1541
  573. package/simsimd/include/simsimd/dot.h +0 -1853
  574. package/simsimd/include/simsimd/elementwise.h +0 -2465
  575. package/simsimd/include/simsimd/geospatial.h +0 -43
  576. package/simsimd/include/simsimd/mesh.h +0 -69
  577. package/simsimd/include/simsimd/probability.h +0 -606
  578. package/simsimd/include/simsimd/simsimd.h +0 -2567
  579. package/simsimd/include/simsimd/sparse.h +0 -1384
  580. package/simsimd/include/simsimd/spatial.h +0 -2335
  581. package/simsimd/include/simsimd/types.h +0 -666
  582. package/simsimd/javascript/fallback.ts +0 -233
  583. package/simsimd/javascript/lib.c +0 -125
  584. package/simsimd/javascript/node-gyp-build.d.ts +0 -1
  585. package/simsimd/javascript/simsimd.ts +0 -179
  586. package/simsimd/javascript/tsconfig-cjs.json +0 -8
  587. package/simsimd/package-lock.json +0 -1761
  588. package/simsimd/package.json +0 -61
  589. package/simsimd/rust/lib.rs +0 -1821
  590. package/simsimd/scripts/bench.cxx +0 -1170
  591. package/simsimd/scripts/bench.ipynb +0 -187
  592. package/simsimd/scripts/bench.js +0 -127
  593. package/simsimd/scripts/bench.rs +0 -876
  594. package/simsimd/scripts/bench_vectors.py +0 -734
  595. package/simsimd/scripts/bench_vectors_live.py +0 -213
  596. package/simsimd/scripts/test.c +0 -187
  597. package/simsimd/scripts/test.mjs +0 -220
  598. package/simsimd/scripts/test.py +0 -1505
  599. package/simsimd/swift/SimSIMD.swift +0 -149
  600. package/simsimd/swift/Test.swift +0 -128
  601. /package/{simsimd → numkong}/CODE_OF_CONDUCT.md +0 -0
  602. /package/{simsimd → numkong}/LICENSE +0 -0
  603. /package/{simsimd → numkong}/javascript/dist-package-cjs.json +0 -0
  604. /package/{simsimd → numkong}/javascript/dist-package-esm.json +0 -0
@@ -5,7 +5,7 @@ import { getFileName, getRoot } from "bindings";
5
5
 
6
6
  const compiled: Compiled = build(getBuildDir(getDirName()));
7
7
 
8
- type Vector = Float32Array | Float64Array | Int8Array;
8
+ type Vector = Float32Array | Float64Array | Int8Array | Uint8Array;
9
9
  type Matrix = Vector[];
10
10
  type VectorOrMatrix = Vector | Matrix;
11
11
 
@@ -68,11 +68,16 @@ export enum MetricKind {
68
68
  */
69
69
  export enum ScalarKind {
70
70
  Unknown = "unknown",
71
- F32 = "f32",
72
71
  F64 = "f64",
73
- F16 = "f16",
72
+ F32 = "f32",
74
73
  BF16 = "bf16",
74
+ F16 = "f16",
75
+ E5M2 = "e5m2",
76
+ E4M3 = "e4m3",
77
+ E3M2 = "e3m2",
78
+ E2M3 = "e2m3",
75
79
  I8 = "i8",
80
+ U8 = "u8",
76
81
  B1 = "b1",
77
82
  }
78
83
 
@@ -167,7 +172,8 @@ function isVector(vectors: unknown) {
167
172
  return (
168
173
  vectors instanceof Float32Array ||
169
174
  vectors instanceof Float64Array ||
170
- vectors instanceof Int8Array
175
+ vectors instanceof Int8Array ||
176
+ vectors instanceof Uint8Array
171
177
  );
172
178
  }
173
179
 
@@ -541,7 +547,8 @@ export class Index {
541
547
  type NumberArrayConstructor =
542
548
  | Float64ArrayConstructor
543
549
  | Float32ArrayConstructor
544
- | Int8ArrayConstructor;
550
+ | Int8ArrayConstructor
551
+ | Uint8ArrayConstructor;
545
552
  /**
546
553
  * Performs an exact search on the given dataset to find the best matching vectors for each query.
547
554
  *
@@ -606,7 +613,8 @@ export function exactSearch(
606
613
  let targetType: NumberArrayConstructor;
607
614
  if (dataset instanceof Float64Array) targetType = Float64Array;
608
615
  else if (dataset instanceof Int8Array) targetType = Int8Array;
609
- else targetType = Float32Array; // default to Float32Array if dataset is not Float64Array or Int8Array
616
+ else if (dataset instanceof Uint8Array) targetType = Uint8Array;
617
+ else targetType = Float32Array; // default to Float32Array if dataset is not Float64Array, Int8Array, or Uint8Array
610
618
 
611
619
  dataset = normalizeVectors(dataset, dimensions, targetType);
612
620
  queries = normalizeVectors(queries, dimensions, targetType);
@@ -0,0 +1,30 @@
1
+ # Conservative clang-tidy configuration for a SIMD-heavy C99/C++23 library.
2
+ # Intrinsics-heavy code triggers many false positives in certain checkers,
3
+ # so we keep the enabled set narrow and focused on real bugs.
4
+ ---
5
+ Checks: >
6
+ -*,
7
+ bugprone-*,
8
+ -bugprone-easily-swappable-parameters,
9
+ -bugprone-narrowing-conversions,
10
+ -bugprone-implicit-widening-of-multiplication-result,
11
+ -bugprone-assignment-in-if-condition,
12
+ -bugprone-casting-through-void,
13
+ -bugprone-macro-parentheses,
14
+ misc-redundant-expression,
15
+ misc-unused-using-decls,
16
+ performance-*,
17
+ -performance-avoid-endl,
18
+ readability-duplicate-include,
19
+ readability-misleading-indentation,
20
+ readability-redundant-preprocessor,
21
+
22
+ WarningsAsErrors: ''
23
+
24
+ HeaderFilterRegex: 'include/numkong/.*'
25
+
26
+ FormatStyle: file
27
+
28
+ CheckOptions:
29
+ - key: bugprone-assert-side-effect.AssertMacros
30
+ value: 'assert,NK_ASSERT'
@@ -17,3 +17,21 @@ with section("format"):
17
17
  # If a statement is wrapped to more than one line, than dangle the closing
18
18
  # parenthesis on its own line.
19
19
  dangle_parens = True
20
+
21
+ # Allow many positional arguments before forcing vertical layout
22
+ # (default 6 splits target_compile_definitions onto one-per-line)
23
+ max_pargs_hwrap = 40
24
+
25
+ # Allow more sub-groups before forcing vertical layout
26
+ max_subgroups_hwrap = 4
27
+
28
+ # Allow horizontal wrapping to span more lines (default 2 forces
29
+ # one-per-line when word-wrapping exceeds 2 lines)
30
+ max_lines_hwrap = 8
31
+
32
+ # ----------------------------------
33
+ # Options affecting comment handling.
34
+ # ----------------------------------
35
+ with section("markup"):
36
+ # Do not reflow comment text
37
+ enable_markup = False
@@ -0,0 +1,12 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 4
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
10
+
11
+ [*.{js,mjs,cjs,ts,mts,json}]
12
+ indent_size = 2
@@ -0,0 +1,123 @@
1
+ 962d36ce18d18cf48e93e7fc7ac2562abecce662
2
+ de1e3df94e275546c8980640002b9016b954b0aa
3
+ bba0df2717b6148d1d3c407269ae4e9b402dd756
4
+ 4fd1e56c3f56c1f1a2ff9382e1a2f92e7827b00c
5
+ 88be861f5854d3693de2d958b1ac043486eb64c1
6
+ a4022a988287e527757ecc9bc16a4f2e7dc4770e
7
+ 750c59f5116a2000507a0cec09db009fd7d31232
8
+ b480b5c3ebddd6de0f8e1c179cdc02f18edbb8ae
9
+ 55e6f7a48ce10afe421c7b94fe01062cb6336e90
10
+ d79fe7abe32561cb3447bb3d2e832984b468e355
11
+ 37dd664b16a6e1d7d54aea5b78a84ae658517c19
12
+ dd060989521f4cc2b3b7b736f0a413bf24e39dff
13
+ ddac3514c66b7a411cd319e5956c78ad772dba15
14
+ c4d02406513110efd8b199a0b6febff6061ae9c3
15
+ 7370fe55bbdfe83b28135182c5b1e110a927a77d
16
+ 7ccec27fc044db5f4b41ab3b635e7ae3abf1c6a4
17
+ 36cf2bd77ce6621ac1555e84bb31bb39b4c615b7
18
+ ed3973c56ce8f94bb9e400e43d1dda4c4ef83372
19
+ 0f964498aa2f2969df3295d368e674167727d561
20
+ 6265b0acb90adb2e331b9da16588045e70245c24
21
+ 10cfc27088de412cf78609d4950877fc2ad92763
22
+ 6410193b420e80115b258f07df0d369c5014dd60
23
+ 7b5af935865cf4c56061b531f28004bff5d30f8c
24
+ 626177d4fb9deb52535e629f4f80f64ac9d0a00c
25
+ d0589f66f05b082ee55b405b20bf20f648b60a66
26
+ ead0955991ff43116cebefa42440496c684bea60
27
+ 9d5146f359b14087f6453c1a74ceb3bb13f5f8c2
28
+ d5df6be574082bc754972c11866be5fbf9698151
29
+ 0b86dd4601986555578f017f3ff37ab39bf0193b
30
+ e75b8ffbeab01a3f8c4e2df9edde021217308df7
31
+ 821907e0c6f99bc8846869db26faee508fa5155c
32
+ a83f6ee3b7e7ae66f0375090a6b1db4720a9849e
33
+ 85c27bd0ba9ee032c899a230d5eae64e8756826b
34
+ 5ca93f14ec5fc5b779b0a8785200a8ff325c26ac
35
+ 16b93b0720f9ffc00e8e891d60a322a093c3a8b8
36
+ 3a7ce06024b28fdd29c4e494bbe0a2b007fea3cc
37
+ 10378640dbd0f3063e1f4d3de8c080ce85b17184
38
+ 0aa22702d72c925b7c0896ac46eb9c92f1ba9330
39
+ a76aac381808cc22445c471b5ed8580bf0bb555c
40
+ 9a1fa9ef7d3a02bc62508a0d7fe5b951ea0d469e
41
+ b38118fa6216dd310214c8ec49eae7de645be3b9
42
+ 39ccd0cf42240549145dc0581a0b967cebea2a3f
43
+ 43e6294e8e8b12af9dd9f3033c71dbd6c34174aa
44
+ 140efb9213beeeade76f06daae52709f87fe70da
45
+ 47d0e3748e3aed9b7b59d72e11c975d4768f6b28
46
+ bb1001fcaee1fff0fbf9d7eb63a96253709e05e8
47
+ c8f85f4f40076f3c63341a962942f4eef461b42f
48
+ 34039a2fcb31287723eff779bac0ffb228c10ede
49
+ 87984bf5d212443eeb0940bd05ef49ae9b512a5e
50
+ e78ca7b57499456f0a6c83e7d4f7d6b64de4f7b3
51
+ 489a74a056a758f1475e1ff2ce52ef3ae642d5e3
52
+ 378f11c89f23a7fe9a76242d8b834486effb9c4e
53
+ 2ea7cb19e7b3e70d4768eca643e75c92ad7c13f4
54
+ acb40dc196328ffe831e4f59f9c1f0b0a247925b
55
+ a918a68a87a3a10f68ba84bf57e780f1910e6564
56
+ fcde24a4cdf8d04319612e2e3ae79fd8d702ec90
57
+ 564b778a40bc16ad32850f6e6f8fe4a70785a8b7
58
+ fcf687908a4134e023329271fade845c8a489701
59
+ 1c713ed445a51e3c7ceb7457bf1ad9640cdd2933
60
+ fed878a7337438399399bc2ffdf8901144b8051e
61
+ dbed5d244972064cf68a331cd74242f90d50695b
62
+ f29b5ea9127edfb18ec84ccb6143e5e5627d20e7
63
+ 34b59661fe7165f3f9551c10789fdda28fd933ef
64
+ c574af91c0f589ea9f2e2b2dee29c5c1335e8547
65
+ 4779d0a85a3470881880c386f28186abb2706f3b
66
+ 29b87633c57facd4b9f7e0e13ae2313890dd956b
67
+ 3ff23a0a604e7b3c9303a6f0ccf0242cea86dc15
68
+ a8400c0ba26fe94bbef82d8eba80351edffa0f34
69
+ a4ad87abde8c0b34ac1ccf302648a91e61518836
70
+ b35f05b3efb913156308e43761c8de511622534a
71
+ ff062f0414889f469391f2b859ffae15e4c0bd41
72
+ 4309f546d4695d38b6024e2c79ab445017aacc22
73
+ ffa009e2e073ac10301bedda7de60e3b71260720
74
+ 5d75880b19faed89b39bd7c09542ec67fe40c83f
75
+ b988721ed3c8f3112dcd5009ea1d5332fcaaf69e
76
+ 13b4d9930345e72dad26f60b8c341aacc578b2b7
77
+ 9ed34d74fd8124e788509c552527ae3ce9aaa937
78
+ c839a6096378f68e7d075626cdcde2c53203bb41
79
+ 9707a5f16c087ef7794ac048af05bc697a866b4a
80
+ 8051bfd337ecec6e9c5e2ff6f47c241e8625877d
81
+ e3dc82a401553698c3647c3f19cbd86d5dcf81c6
82
+ 514ac91895b597206480d4a0b5dd34c43b30ac00
83
+ 43844491f9ef897e37c48246ce9542fe9ffbbfc7
84
+ 801910b77e77070f283faf0eb10dde482c0e8a50
85
+ 10f593e2dd47faf7e2e9d06a9c638a18a481ef2c
86
+ b6024d83996923ee4f0a3467539148691e8d3875
87
+ 6ba298c7a7f9093ce8d099c18731f4b2abd63d7c
88
+ e6c0a8aa9cbdc466969b0a85e4dabe29eba59727
89
+ 39e5bbc88e3d28d9ba82ebdb106b7ad03d86689e
90
+ 8d7c5fa745383153859de008b9ec28dad8fa350d
91
+ 6b86a390f18ebc048323f78bbbf08df6e1f5576d
92
+ 178dffd5d119f881dcf649fd84fdba678ab4e4c6
93
+ 29c190984e0e99cec25736c68b06f0f3b74d2558
94
+ 185e43613f6a3d46aaa55680d2572db8ffa67278
95
+ 67050ed740d6af9d64dd2a43915f60d2eb63c28b
96
+ 202a63fd4aac97504a3cc4ffb6baa2559da44c25
97
+ 86784018da0209029fa7c8860459716524845dac
98
+ 7f64075a0213832132893dcc5a5190a42458e132
99
+ b808cd041d6a15a7cd661094780b0056eb180c54
100
+ a73f2a98fbeb6c65678a97afeb9129473cb07cfd
101
+ 0089ac8e9dbe1fa602a9ebd539c521b5e2210f5a
102
+ e6a43fb8f209d702536abfa2376c4e6127e3018f
103
+ c21e0bb3730156259a498b7aeee2ceacc24998a1
104
+ 87ed8cb448d17dcb24857243d24afbdf88fd181b
105
+ a6d1ed7a19a8f416b83dd8b441d5391dba017c08
106
+ 6a71d532989449c94e233360f001c400fb0f5784
107
+ b824f5913be3738b525558de669987b971ad71a3
108
+ 08aa80fe60071268fed0083bffaf38ad9617b406
109
+ dcdb3289b8170cc4f855194fb9e3d75987e9154f
110
+ 17e97d9b2d28eb607ee9a1cdf32baf15bf16d5ec
111
+ 617c99f3d9dbc98f46417bb6e25d5802dbf52222
112
+ 342c7459dd64ccfe3eed53315d3f8675c7669f90
113
+ 1f02420dfd6e5073b3b2199d1ff4f9a9953bb7ef
114
+ 51fb41d0fb61ab22099a1db4ed0fc90046af687c
115
+ 74cedfd1e8f18bac291a4463f7b3d6ceb60542b0
116
+ 3e03f400aa4b6b725b8ca4110d2f4d327eaeda90
117
+ 1361f04f2371c9b9ca70fcc476cbfe7e5a291be3
118
+ 42845bdd0a616843c2f4cc478917c5b5a242293f
119
+ e405dd3f8f23a774ef6f21f1be043c010f0edd4a
120
+ 8322ba6d5e471eaebc551fa28564edc3f314be19
121
+ 4c6c9b3ca554e741c61b93ff75f66e222cac9d0a
122
+ ff20886eaf7e338e3e79c0af4aa5f56f9c4bde5e
123
+ 53627463d6283b8d0fc0f90ac7bab97e7ae8d3fa
@@ -0,0 +1,15 @@
1
+ # Primary maintainer
2
+ Ash Vardanian <1983160+ashvardanian@users.noreply.github.com> Ashot Vardanian <1983160+ashvardanian@users.noreply.github.com>
3
+
4
+ # Contributors with multiple emails
5
+ Alexey Milovidov <18581488+alexey-milovidov@users.noreply.github.com> Alexey Milovidov <milovidov@clickhouse.com>
6
+ Robert Schulze <100446237+rschu1ze@users.noreply.github.com> Robert Schulze <robert@clickhouse.com>
7
+ Michael Grinshpon <8979562+mgrinshpon@users.noreply.github.com> Michael Grinshpon <mgrinshpon@gmail.com>
8
+ Michael Grinshpon <8979562+mgrinshpon@users.noreply.github.com> Michael Grinshpon <michael@visionbyscope.com>
9
+ Laurens Priem <81471280+laurenspriem@users.noreply.github.com> Laurens Priem <laurens@ente.io>
10
+ Laurens Priem <81471280+laurenspriem@users.noreply.github.com> Laurens Priem <l+github@lrns.me>
11
+ Vsevolod Oparin <462138+vsevolod-oparin@users.noreply.github.com> Vsevolod Oparin <oparin.vsevolod@gmail.com>
12
+ Alexander Kjäll <647710+alexanderkjall@users.noreply.github.com> Alexander Kjäll <alexander.kjall@gmail.com>
13
+ Pedro Gabriel Planel <pplanel@users.noreply.github.com> Pedro Gabriel <pedro.planel@2gofintech.com.br>
14
+ Raufs Dunamalijevs <30183178+rienath@users.noreply.github.com> Raufs Dunamalijevs <raufs.dunamalijevs@clickhouse.com>
15
+ Eren K. <90657474+real-eren@users.noreply.github.com> real-eren <erenalpkahriman@gmail.com>
@@ -0,0 +1,11 @@
1
+ # Swift Package Index build configuration — must live at the repo root.
2
+ # Controls which platforms appear on the package page at swiftpackageindex.com.
3
+ version: 1
4
+ builder:
5
+ configs:
6
+ - platform: macos-xcodebuild
7
+ - platform: macos-xcodebuild-arm
8
+ - platform: ios
9
+ - platform: tvos
10
+ - platform: watchos
11
+ - platform: linux
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 1,
3
+ "indentation": {
4
+ "spaces": 4
5
+ },
6
+ "tabWidth": 4,
7
+ "maximumBlankLines": 1,
8
+ "respectsExistingLineBreaks": true,
9
+ "lineBreakBeforeControlFlowKeywords": false,
10
+ "lineBreakBeforeEachArgument": false,
11
+ "lineBreakBeforeEachGenericRequirement": false,
12
+ "indentConditionalCompilationBlocks": false,
13
+ "lineLength": 120
14
+ }
@@ -0,0 +1,81 @@
1
+ cff-version: 1.2.0
2
+ title: "NumKong: 2000 Mixed Precision Kernels For All"
3
+ message: "If you use this software, please cite it as below."
4
+ type: software
5
+ license: Apache-2.0
6
+ version: 7.5.0
7
+ repository-code: https://github.com/ashvardanian/NumKong
8
+ url: https://ashvardanian.com/posts/numkong/
9
+ abstract: >-
10
+ Portable mixed-precision math, linear-algebra, & retrieval library
11
+ with 2'000+ SIMD kernels for x86, Arm, RISC-V, LoongArch, Power, & WebAssembly,
12
+ leveraging rare algebraic transforms with both 1D & 2D registers like AMX & SME,
13
+ covering 15+ numeric types from 4-bit integers & 6-bit floats to 128-bit complex numbers,
14
+ validated against 118-bit extended-precision baselines
15
+ with saturation, casting, & rounding edge-case coverage,
16
+ in a 5-100x smaller binary than other BLAS-like alternatives,
17
+ co-designed with Tensor abstractions in C++, Python, Rust, JavaScript, GoLang, & Swift.
18
+
19
+ authors:
20
+ - family-names: Vardanian
21
+ given-names: Ash
22
+ alias: ashvardanian
23
+ orcid: https://orcid.org/0000-0002-4882-1815
24
+
25
+ references:
26
+ - type: article
27
+ title: "SciPy Distances up to 200x Faster with AVX-512 & SVE"
28
+ url: https://ashvardanian.com/posts/simsimd-faster-scipy/
29
+ date-published: 2023-10-07
30
+ authors:
31
+ - family-names: Vardanian
32
+ given-names: Ash
33
+ - type: article
34
+ title: "GCC Compiler vs Human - 119x Faster Assembly"
35
+ url: https://ashvardanian.com/posts/gcc-12-vs-avx512fp16/
36
+ date-published: 2023-10-23
37
+ authors:
38
+ - family-names: Vardanian
39
+ given-names: Ash
40
+ - type: article
41
+ title: "Accelerating JavaScript Arrays by 10x for Vector Search"
42
+ url: https://ashvardanian.com/posts/javascript-ai-vector-search/
43
+ date-published: 2023-10-21
44
+ authors:
45
+ - family-names: Vardanian
46
+ given-names: Ash
47
+ - type: article
48
+ title: "Python, C, Assembly - 2'500x Faster Cosine Similarity"
49
+ url: https://ashvardanian.com/posts/python-c-assembly-comparison/
50
+ date-published: 2023-10-30
51
+ authors:
52
+ - family-names: Vardanian
53
+ given-names: Ash
54
+ - type: article
55
+ title: "NumPy vs BLAS: Losing 90% of Throughput"
56
+ url: https://ashvardanian.com/posts/numpy-vs-blas-costs/
57
+ date-published: 2024-03-12
58
+ authors:
59
+ - family-names: Vardanian
60
+ given-names: Ash
61
+ - type: article
62
+ title: "5x Faster Set Intersections: SVE2, AVX-512, & NEON"
63
+ url: https://ashvardanian.com/posts/simd-set-intersections-sve2-avx512/
64
+ date-published: 2024-09-16
65
+ authors:
66
+ - family-names: Vardanian
67
+ given-names: Ash
68
+ - type: article
69
+ title: "Understanding SIMD: Infinite Complexity of Trivial Problems"
70
+ url: https://ashvardanian.com/posts/understanding-simd-complexity/
71
+ date-published: 2024-11-25
72
+ authors:
73
+ - family-names: Vardanian
74
+ given-names: Ash
75
+ - type: article
76
+ title: "Hiding x86 Port Latency for 330 GB/s/core Reductions"
77
+ url: https://ashvardanian.com/posts/cpu-ports/
78
+ date-published: 2025-01-19
79
+ authors:
80
+ - family-names: Vardanian
81
+ given-names: Ash