numkong 7.2.2__tar.gz → 7.2.4__tar.gz

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 (341) hide show
  1. {numkong-7.2.2/numkong.egg-info → numkong-7.2.4}/PKG-INFO +1 -1
  2. numkong-7.2.4/VERSION +1 -0
  3. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/capabilities.h +1 -1
  4. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/serial.h +6 -6
  5. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh/serial.h +3 -3
  6. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/haswell.h +2 -2
  7. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/neon.h +2 -2
  8. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/rvv.h +2 -2
  9. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/serial.h +2 -2
  10. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/serial.h +2 -2
  11. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/types.h +6 -0
  12. {numkong-7.2.2 → numkong-7.2.4/numkong.egg-info}/PKG-INFO +1 -1
  13. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_neon.c +0 -3
  14. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_neon_bfdot.c +0 -3
  15. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_neon_fhm.c +0 -3
  16. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_neon_half.c +0 -3
  17. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_neon_sdot.c +0 -3
  18. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_neonfp8.c +0 -3
  19. numkong-7.2.2/VERSION +0 -1
  20. {numkong-7.2.2 → numkong-7.2.4}/LICENSE +0 -0
  21. {numkong-7.2.2 → numkong-7.2.4}/MANIFEST.in +0 -0
  22. {numkong-7.2.2 → numkong-7.2.4}/README.md +0 -0
  23. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch.h +0 -0
  24. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_bf16.c +0 -0
  25. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_bf16c.c +0 -0
  26. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_e2m3.c +0 -0
  27. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_e3m2.c +0 -0
  28. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_e4m3.c +0 -0
  29. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_e5m2.c +0 -0
  30. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_f16.c +0 -0
  31. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_f16c.c +0 -0
  32. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_f32.c +0 -0
  33. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_f32c.c +0 -0
  34. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_f64.c +0 -0
  35. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_f64c.c +0 -0
  36. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_i16.c +0 -0
  37. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_i32.c +0 -0
  38. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_i4.c +0 -0
  39. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_i64.c +0 -0
  40. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_i8.c +0 -0
  41. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_other.c +0 -0
  42. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_u1.c +0 -0
  43. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_u16.c +0 -0
  44. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_u32.c +0 -0
  45. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_u4.c +0 -0
  46. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_u64.c +0 -0
  47. {numkong-7.2.2 → numkong-7.2.4}/c/dispatch_u8.c +0 -0
  48. {numkong-7.2.2 → numkong-7.2.4}/c/numkong.c +0 -0
  49. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/attention/sapphireamx.h +0 -0
  50. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/attention/sme.h +0 -0
  51. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/attention.h +0 -0
  52. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/diamond.h +0 -0
  53. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/haswell.h +0 -0
  54. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/icelake.h +0 -0
  55. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/loongsonasx.h +0 -0
  56. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/neon.h +0 -0
  57. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/powervsx.h +0 -0
  58. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/rvv.h +0 -0
  59. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/sapphire.h +0 -0
  60. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/serial.h +0 -0
  61. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/skylake.h +0 -0
  62. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast/v128relaxed.h +0 -0
  63. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/cast.h +0 -0
  64. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/genoa.h +0 -0
  65. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/haswell.h +0 -0
  66. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/neon.h +0 -0
  67. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/neonbfdot.h +0 -0
  68. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/neonhalf.h +0 -0
  69. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/rvv.h +0 -0
  70. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/serial.h +0 -0
  71. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/skylake.h +0 -0
  72. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved/smef64.h +0 -0
  73. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/curved.h +0 -0
  74. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/alder.h +0 -0
  75. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/diamond.h +0 -0
  76. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/genoa.h +0 -0
  77. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/haswell.h +0 -0
  78. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/icelake.h +0 -0
  79. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/loongsonasx.h +0 -0
  80. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/neon.h +0 -0
  81. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/neonbfdot.h +0 -0
  82. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/neonfhm.h +0 -0
  83. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/neonfp8.h +0 -0
  84. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/neonhalf.h +0 -0
  85. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/neonsdot.h +0 -0
  86. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/powervsx.h +0 -0
  87. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/rvv.h +0 -0
  88. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/rvvbb.h +0 -0
  89. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/rvvbf16.h +0 -0
  90. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/rvvhalf.h +0 -0
  91. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/sapphire.h +0 -0
  92. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/serial.h +0 -0
  93. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/sierra.h +0 -0
  94. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/skylake.h +0 -0
  95. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/sve.h +0 -0
  96. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/svebfdot.h +0 -0
  97. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/svehalf.h +0 -0
  98. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot/v128relaxed.h +0 -0
  99. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dot.h +0 -0
  100. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/alder.h +0 -0
  101. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/diamond.h +0 -0
  102. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/genoa.h +0 -0
  103. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/haswell.h +0 -0
  104. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/icelake.h +0 -0
  105. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/loongsonasx.h +0 -0
  106. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/neon.h +0 -0
  107. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/neonbfdot.h +0 -0
  108. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/neonfhm.h +0 -0
  109. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/neonfp8.h +0 -0
  110. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/neonhalf.h +0 -0
  111. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/neonsdot.h +0 -0
  112. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/powervsx.h +0 -0
  113. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/rvv.h +0 -0
  114. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/sapphireamx.h +0 -0
  115. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/serial.h +0 -0
  116. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/sierra.h +0 -0
  117. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/skylake.h +0 -0
  118. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/sme.h +0 -0
  119. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/smebi32.h +0 -0
  120. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/smef64.h +0 -0
  121. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/smehalf.h +0 -0
  122. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots/v128relaxed.h +0 -0
  123. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/dots.h +0 -0
  124. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/haswell.h +0 -0
  125. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/icelake.h +0 -0
  126. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/neon.h +0 -0
  127. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/neonbfdot.h +0 -0
  128. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/neonhalf.h +0 -0
  129. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/rvv.h +0 -0
  130. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/sapphire.h +0 -0
  131. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each/skylake.h +0 -0
  132. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/each.h +0 -0
  133. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/geospatial/haswell.h +0 -0
  134. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/geospatial/neon.h +0 -0
  135. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/geospatial/rvv.h +0 -0
  136. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/geospatial/serial.h +0 -0
  137. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/geospatial/skylake.h +0 -0
  138. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/geospatial/v128relaxed.h +0 -0
  139. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/geospatial.h +0 -0
  140. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/alder.h +0 -0
  141. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/genoa.h +0 -0
  142. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/haswell.h +0 -0
  143. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/icelake.h +0 -0
  144. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/neonsdot.h +0 -0
  145. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/sapphireamx.h +0 -0
  146. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/serial.h +0 -0
  147. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/sme.h +0 -0
  148. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim/v128relaxed.h +0 -0
  149. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/maxsim.h +0 -0
  150. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh/haswell.h +0 -0
  151. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh/neon.h +0 -0
  152. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh/neonbfdot.h +0 -0
  153. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh/neonhalf.h +0 -0
  154. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh/rvv.h +0 -0
  155. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh/skylake.h +0 -0
  156. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh/v128relaxed.h +0 -0
  157. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/mesh.h +0 -0
  158. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/numkong.h +0 -0
  159. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/probability/haswell.h +0 -0
  160. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/probability/neon.h +0 -0
  161. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/probability/rvv.h +0 -0
  162. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/probability/serial.h +0 -0
  163. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/probability/skylake.h +0 -0
  164. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/probability.h +0 -0
  165. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/random.h +0 -0
  166. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/alder.h +0 -0
  167. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/genoa.h +0 -0
  168. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/haswell.h +0 -0
  169. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/icelake.h +0 -0
  170. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/neon.h +0 -0
  171. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/neonbfdot.h +0 -0
  172. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/neonfhm.h +0 -0
  173. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/neonhalf.h +0 -0
  174. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/neonsdot.h +0 -0
  175. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/rvv.h +0 -0
  176. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/serial.h +0 -0
  177. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/sierra.h +0 -0
  178. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/skylake.h +0 -0
  179. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce/v128relaxed.h +0 -0
  180. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/reduce.h +0 -0
  181. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/loongsonasx.h +0 -0
  182. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/neonhalf.h +0 -0
  183. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/powervsx.h +0 -0
  184. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/sapphire.h +0 -0
  185. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar/v128relaxed.h +0 -0
  186. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/scalar.h +0 -0
  187. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/haswell.h +0 -0
  188. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/icelake.h +0 -0
  189. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/loongsonasx.h +0 -0
  190. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/neon.h +0 -0
  191. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/powervsx.h +0 -0
  192. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/rvv.h +0 -0
  193. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/rvvbb.h +0 -0
  194. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/serial.h +0 -0
  195. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/sve.h +0 -0
  196. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set/v128relaxed.h +0 -0
  197. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/set.h +0 -0
  198. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets/haswell.h +0 -0
  199. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets/icelake.h +0 -0
  200. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets/loongsonasx.h +0 -0
  201. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets/neon.h +0 -0
  202. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets/powervsx.h +0 -0
  203. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets/serial.h +0 -0
  204. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets/smebi32.h +0 -0
  205. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets/v128relaxed.h +0 -0
  206. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sets.h +0 -0
  207. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sparse/icelake.h +0 -0
  208. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sparse/neon.h +0 -0
  209. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sparse/serial.h +0 -0
  210. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sparse/sve2.h +0 -0
  211. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sparse/turin.h +0 -0
  212. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/sparse.h +0 -0
  213. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/alder.h +0 -0
  214. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/diamond.h +0 -0
  215. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/genoa.h +0 -0
  216. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/haswell.h +0 -0
  217. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/icelake.h +0 -0
  218. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/loongsonasx.h +0 -0
  219. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/neon.h +0 -0
  220. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/neonbfdot.h +0 -0
  221. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/neonfp8.h +0 -0
  222. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/neonhalf.h +0 -0
  223. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/neonsdot.h +0 -0
  224. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/powervsx.h +0 -0
  225. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/rvv.h +0 -0
  226. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/rvvbf16.h +0 -0
  227. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/rvvhalf.h +0 -0
  228. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/sierra.h +0 -0
  229. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/skylake.h +0 -0
  230. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/sve.h +0 -0
  231. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/svebfdot.h +0 -0
  232. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/svehalf.h +0 -0
  233. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial/v128relaxed.h +0 -0
  234. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatial.h +0 -0
  235. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/alder.h +0 -0
  236. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/diamond.h +0 -0
  237. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/genoa.h +0 -0
  238. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/haswell.h +0 -0
  239. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/icelake.h +0 -0
  240. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/loongsonasx.h +0 -0
  241. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/neon.h +0 -0
  242. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/neonbfdot.h +0 -0
  243. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/neonfhm.h +0 -0
  244. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/neonfp8.h +0 -0
  245. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/neonhalf.h +0 -0
  246. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/neonsdot.h +0 -0
  247. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/powervsx.h +0 -0
  248. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/rvv.h +0 -0
  249. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/sapphireamx.h +0 -0
  250. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/serial.h +0 -0
  251. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/sierra.h +0 -0
  252. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/skylake.h +0 -0
  253. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/sme.h +0 -0
  254. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/smef64.h +0 -0
  255. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials/v128relaxed.h +0 -0
  256. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/spatials.h +0 -0
  257. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/trigonometry/haswell.h +0 -0
  258. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/trigonometry/neon.h +0 -0
  259. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/trigonometry/rvv.h +0 -0
  260. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/trigonometry/serial.h +0 -0
  261. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/trigonometry/skylake.h +0 -0
  262. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/trigonometry/v128relaxed.h +0 -0
  263. {numkong-7.2.2 → numkong-7.2.4}/include/numkong/trigonometry.h +0 -0
  264. {numkong-7.2.2 → numkong-7.2.4}/numkong.egg-info/SOURCES.txt +0 -0
  265. {numkong-7.2.2 → numkong-7.2.4}/numkong.egg-info/dependency_links.txt +0 -0
  266. {numkong-7.2.2 → numkong-7.2.4}/numkong.egg-info/not-zip-safe +0 -0
  267. {numkong-7.2.2 → numkong-7.2.4}/numkong.egg-info/top_level.txt +0 -0
  268. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme.c +0 -0
  269. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme2.c +0 -0
  270. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme2p1.c +0 -0
  271. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme_bf16.c +0 -0
  272. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme_bi32.c +0 -0
  273. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme_f64.c +0 -0
  274. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme_fa64.c +0 -0
  275. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme_half.c +0 -0
  276. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sme_lut2.c +0 -0
  277. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sve.c +0 -0
  278. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sve2.c +0 -0
  279. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sve2p1.c +0 -0
  280. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sve_bfdot.c +0 -0
  281. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sve_half.c +0 -0
  282. {numkong-7.2.2 → numkong-7.2.4}/probes/arm_sve_sdot.c +0 -0
  283. {numkong-7.2.2 → numkong-7.2.4}/probes/loongarch_lasx.c +0 -0
  284. {numkong-7.2.2 → numkong-7.2.4}/probes/power_vsx.c +0 -0
  285. {numkong-7.2.2 → numkong-7.2.4}/probes/riscv_rvv.c +0 -0
  286. {numkong-7.2.2 → numkong-7.2.4}/probes/riscv_rvv_bb.c +0 -0
  287. {numkong-7.2.2 → numkong-7.2.4}/probes/riscv_rvv_bf16.c +0 -0
  288. {numkong-7.2.2 → numkong-7.2.4}/probes/riscv_rvv_half.c +0 -0
  289. {numkong-7.2.2 → numkong-7.2.4}/probes/wasm_v128relaxed.c +0 -0
  290. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_alder.c +0 -0
  291. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_diamond.c +0 -0
  292. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_genoa.c +0 -0
  293. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_graniteamx.c +0 -0
  294. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_haswell.c +0 -0
  295. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_icelake.c +0 -0
  296. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_sapphire.c +0 -0
  297. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_sapphireamx.c +0 -0
  298. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_sierra.c +0 -0
  299. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_skylake.c +0 -0
  300. {numkong-7.2.2 → numkong-7.2.4}/probes/x86_turin.c +0 -0
  301. {numkong-7.2.2 → numkong-7.2.4}/pyproject.toml +0 -0
  302. {numkong-7.2.2 → numkong-7.2.4}/python/README.md +0 -0
  303. {numkong-7.2.2 → numkong-7.2.4}/python/__init__.py +0 -0
  304. {numkong-7.2.2 → numkong-7.2.4}/python/annotations/__init__.pyi +0 -0
  305. {numkong-7.2.2 → numkong-7.2.4}/python/annotations/py.typed +0 -0
  306. {numkong-7.2.2 → numkong-7.2.4}/python/distance.c +0 -0
  307. {numkong-7.2.2 → numkong-7.2.4}/python/distance.h +0 -0
  308. {numkong-7.2.2 → numkong-7.2.4}/python/each.c +0 -0
  309. {numkong-7.2.2 → numkong-7.2.4}/python/each.h +0 -0
  310. {numkong-7.2.2 → numkong-7.2.4}/python/matrix.c +0 -0
  311. {numkong-7.2.2 → numkong-7.2.4}/python/matrix.h +0 -0
  312. {numkong-7.2.2 → numkong-7.2.4}/python/maxsim.c +0 -0
  313. {numkong-7.2.2 → numkong-7.2.4}/python/maxsim.h +0 -0
  314. {numkong-7.2.2 → numkong-7.2.4}/python/mesh.c +0 -0
  315. {numkong-7.2.2 → numkong-7.2.4}/python/mesh.h +0 -0
  316. {numkong-7.2.2 → numkong-7.2.4}/python/numkong.c +0 -0
  317. {numkong-7.2.2 → numkong-7.2.4}/python/numkong.h +0 -0
  318. {numkong-7.2.2 → numkong-7.2.4}/python/numpy_interop.c +0 -0
  319. {numkong-7.2.2 → numkong-7.2.4}/python/numpy_interop.h +0 -0
  320. {numkong-7.2.2 → numkong-7.2.4}/python/tensor.c +0 -0
  321. {numkong-7.2.2 → numkong-7.2.4}/python/tensor.h +0 -0
  322. {numkong-7.2.2 → numkong-7.2.4}/python/types.c +0 -0
  323. {numkong-7.2.2 → numkong-7.2.4}/python/types.h +0 -0
  324. {numkong-7.2.2 → numkong-7.2.4}/setup.cfg +0 -0
  325. {numkong-7.2.2 → numkong-7.2.4}/setup.py +0 -0
  326. {numkong-7.2.2 → numkong-7.2.4}/test/test_base.py +0 -0
  327. {numkong-7.2.2 → numkong-7.2.4}/test/test_cross.py +0 -0
  328. {numkong-7.2.2 → numkong-7.2.4}/test/test_curved.py +0 -0
  329. {numkong-7.2.2 → numkong-7.2.4}/test/test_dot.py +0 -0
  330. {numkong-7.2.2 → numkong-7.2.4}/test/test_each.py +0 -0
  331. {numkong-7.2.2 → numkong-7.2.4}/test/test_geospatial.py +0 -0
  332. {numkong-7.2.2 → numkong-7.2.4}/test/test_maxsim.py +0 -0
  333. {numkong-7.2.2 → numkong-7.2.4}/test/test_mesh.py +0 -0
  334. {numkong-7.2.2 → numkong-7.2.4}/test/test_probability.py +0 -0
  335. {numkong-7.2.2 → numkong-7.2.4}/test/test_reduce.py +0 -0
  336. {numkong-7.2.2 → numkong-7.2.4}/test/test_set.py +0 -0
  337. {numkong-7.2.2 → numkong-7.2.4}/test/test_similarities.py +0 -0
  338. {numkong-7.2.2 → numkong-7.2.4}/test/test_sparse.py +0 -0
  339. {numkong-7.2.2 → numkong-7.2.4}/test/test_spatial.py +0 -0
  340. {numkong-7.2.2 → numkong-7.2.4}/test/test_tensor.py +0 -0
  341. {numkong-7.2.2 → numkong-7.2.4}/test/test_trigonometry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: numkong
3
- Version: 7.2.2
3
+ Version: 7.2.4
4
4
  Summary: Portable mixed-precision BLAS-like vector math library for x86 and ARM
5
5
  Home-page: https://github.com/ashvardanian/NumKong
6
6
  Author: Ash Vardanian
numkong-7.2.4/VERSION ADDED
@@ -0,0 +1 @@
1
+ 7.2.4
@@ -96,7 +96,7 @@
96
96
 
97
97
  #define NK_VERSION_MAJOR 7
98
98
  #define NK_VERSION_MINOR 2
99
- #define NK_VERSION_PATCH 2
99
+ #define NK_VERSION_PATCH 4
100
100
 
101
101
  /**
102
102
  * @brief Removes compile-time dispatching, and replaces it with runtime dispatching.
@@ -107,8 +107,8 @@ nk_define_each_scale_(i16, f32, nk_assign_from_to_, nk_f32_to_i16_serial) /
107
107
  nk_define_each_scale_(u16, f32, nk_assign_from_to_, nk_f32_to_u16_serial) // nk_each_scale_u16_serial
108
108
  nk_define_each_scale_(i32, f64, nk_assign_from_to_, nk_f64_to_i32_serial) // nk_each_scale_i32_serial
109
109
  nk_define_each_scale_(u32, f64, nk_assign_from_to_, nk_f64_to_u32_serial) // nk_each_scale_u32_serial
110
- nk_define_each_scale_(i64, f64, nk_assign_from_to_, nk_f64_to_i64_serial) // nk_each_scale_i64_serial
111
- nk_define_each_scale_(u64, f64, nk_assign_from_to_, nk_f64_to_u64_serial) // nk_each_scale_u64_serial
110
+ nk_define_each_scale_(i64, f64, nk_f64_from_i64_, nk_f64_to_i64_serial) // nk_each_scale_i64_serial
111
+ nk_define_each_scale_(u64, f64, nk_f64_from_u64_, nk_f64_to_u64_serial) // nk_each_scale_u64_serial
112
112
 
113
113
  nk_define_each_blend_(f64, f64, nk_assign_from_to_, nk_assign_from_to_) // nk_each_blend_f64_serial
114
114
  nk_define_each_blend_(f32, f32, nk_assign_from_to_, nk_assign_from_to_) // nk_each_blend_f32_serial
@@ -124,8 +124,8 @@ nk_define_each_blend_(i16, f32, nk_assign_from_to_, nk_f32_to_i16_serial) /
124
124
  nk_define_each_blend_(u16, f32, nk_assign_from_to_, nk_f32_to_u16_serial) // nk_each_blend_u16_serial
125
125
  nk_define_each_blend_(i32, f64, nk_assign_from_to_, nk_f64_to_i32_serial) // nk_each_blend_i32_serial
126
126
  nk_define_each_blend_(u32, f64, nk_assign_from_to_, nk_f64_to_u32_serial) // nk_each_blend_u32_serial
127
- nk_define_each_blend_(i64, f64, nk_assign_from_to_, nk_f64_to_i64_serial) // nk_each_blend_i64_serial
128
- nk_define_each_blend_(u64, f64, nk_assign_from_to_, nk_f64_to_u64_serial) // nk_each_blend_u64_serial
127
+ nk_define_each_blend_(i64, f64, nk_f64_from_i64_, nk_f64_to_i64_serial) // nk_each_blend_i64_serial
128
+ nk_define_each_blend_(u64, f64, nk_f64_from_u64_, nk_f64_to_u64_serial) // nk_each_blend_u64_serial
129
129
 
130
130
  nk_define_each_fma_(f64, f64, nk_assign_from_to_, nk_assign_from_to_) // nk_each_fma_f64_serial
131
131
  nk_define_each_fma_(f32, f32, nk_assign_from_to_, nk_assign_from_to_) // nk_each_fma_f32_serial
@@ -141,8 +141,8 @@ nk_define_each_fma_(i16, f32, nk_assign_from_to_, nk_f32_to_i16_serial) //
141
141
  nk_define_each_fma_(u16, f32, nk_assign_from_to_, nk_f32_to_u16_serial) // nk_each_fma_u16_serial
142
142
  nk_define_each_fma_(i32, f64, nk_assign_from_to_, nk_f64_to_i32_serial) // nk_each_fma_i32_serial
143
143
  nk_define_each_fma_(u32, f64, nk_assign_from_to_, nk_f64_to_u32_serial) // nk_each_fma_u32_serial
144
- nk_define_each_fma_(i64, f64, nk_assign_from_to_, nk_f64_to_i64_serial) // nk_each_fma_i64_serial
145
- nk_define_each_fma_(u64, f64, nk_assign_from_to_, nk_f64_to_u64_serial) // nk_each_fma_u64_serial
144
+ nk_define_each_fma_(i64, f64, nk_f64_from_i64_, nk_f64_to_i64_serial) // nk_each_fma_i64_serial
145
+ nk_define_each_fma_(u64, f64, nk_f64_from_u64_, nk_f64_to_u64_serial) // nk_each_fma_u64_serial
146
146
 
147
147
  #undef nk_define_each_scale_
148
148
  #undef nk_define_each_sum_
@@ -436,7 +436,7 @@ nk_define_det3x3_(f64)
436
436
  rotation[3] = 0, rotation[4] = 1, rotation[5] = 0; \
437
437
  rotation[6] = 0, rotation[7] = 0, rotation[8] = 1; \
438
438
  } \
439
- if (scale) *scale = 1.0; \
439
+ if (scale) *scale = (nk_##output_type##_t)1; \
440
440
  nk_##accumulator_type##_t sum_squared = 0, sum_squared_compensation = 0; \
441
441
  for (nk_size_t i = 0; i < n; ++i) { \
442
442
  load_and_convert(a + i * 3 + 0, &val_a_x), load_and_convert(b + i * 3 + 0, &val_b_x); \
@@ -534,7 +534,7 @@ nk_define_det3x3_(f64)
534
534
  if (rotation) { \
535
535
  for (int j = 0; j < 9; ++j) rotation[j] = (nk_##output_type##_t)rotation_matrix[j]; \
536
536
  } \
537
- if (scale) *scale = 1.0; \
537
+ if (scale) *scale = (nk_##output_type##_t)1; \
538
538
  /* Step 5: Compute RMSD after rotation */ \
539
539
  nk_##accumulator_type##_t sum_squared = 0, sum_squared_compensation = 0; \
540
540
  for (nk_size_t i = 0; i < n; ++i) { \
@@ -652,7 +652,7 @@ nk_define_det3x3_(f64)
652
652
  nk_##svd_type##_t trace_scaled_s = svd_s[0] + svd_s[4] + sign_det * svd_s[8]; \
653
653
  nk_##accumulator_type##_t scale_factor = (nk_##accumulator_type##_t)trace_scaled_s / \
654
654
  ((nk_##accumulator_type##_t)n * variance_a); \
655
- if (scale) *scale = scale_factor; \
655
+ if (scale) *scale = (nk_##output_type##_t)scale_factor; \
656
656
  if (rotation_det < 0) { \
657
657
  svd_v[2] = -svd_v[2], svd_v[5] = -svd_v[5], svd_v[8] = -svd_v[8]; \
658
658
  nk_rotation_from_svd_##svd_type##_serial_(svd_u, svd_v, rotation_matrix); \
@@ -89,8 +89,8 @@ NK_PUBLIC nk_u64_t nk_u64_saturating_mul_haswell(nk_u64_t a, nk_u64_t b) {
89
89
  }
90
90
  NK_PUBLIC nk_i64_t nk_i64_saturating_mul_haswell(nk_i64_t a, nk_i64_t b) {
91
91
  int sign = (a < 0) ^ (b < 0);
92
- nk_u64_t abs_a = a < 0 ? -(nk_u64_t)a : (nk_u64_t)a;
93
- nk_u64_t abs_b = b < 0 ? -(nk_u64_t)b : (nk_u64_t)b;
92
+ nk_u64_t abs_a = a < 0 ? (0u - (nk_u64_t)a) : (nk_u64_t)a;
93
+ nk_u64_t abs_b = b < 0 ? (0u - (nk_u64_t)b) : (nk_u64_t)b;
94
94
  unsigned long long high;
95
95
  unsigned long long low = _mulx_u64(abs_a, abs_b, &high);
96
96
  if (high || (sign && low > 9223372036854775808ull) || (!sign && low > 9223372036854775807ull))
@@ -98,8 +98,8 @@ NK_PUBLIC nk_u64_t nk_u64_saturating_mul_neon(nk_u64_t a, nk_u64_t b) {
98
98
  }
99
99
  NK_PUBLIC nk_i64_t nk_i64_saturating_mul_neon(nk_i64_t a, nk_i64_t b) {
100
100
  int sign = (a < 0) ^ (b < 0);
101
- nk_u64_t abs_a = a < 0 ? -(nk_u64_t)a : (nk_u64_t)a;
102
- nk_u64_t abs_b = b < 0 ? -(nk_u64_t)b : (nk_u64_t)b;
101
+ nk_u64_t abs_a = a < 0 ? (0u - (nk_u64_t)a) : (nk_u64_t)a;
102
+ nk_u64_t abs_b = b < 0 ? (0u - (nk_u64_t)b) : (nk_u64_t)b;
103
103
  nk_u64_t high = nk_u64_mulhigh_neon_(abs_a, abs_b);
104
104
  nk_u64_t low = abs_a * abs_b;
105
105
  if (high || (sign && low > 9223372036854775808ull) || (!sign && low > 9223372036854775807ull))
@@ -185,8 +185,8 @@ NK_PUBLIC nk_u64_t nk_u64_saturating_mul_rvv(nk_u64_t a, nk_u64_t b) {
185
185
  }
186
186
  NK_PUBLIC nk_i64_t nk_i64_saturating_mul_rvv(nk_i64_t a, nk_i64_t b) {
187
187
  int sign = (a < 0) ^ (b < 0);
188
- nk_u64_t abs_a = a < 0 ? -(nk_u64_t)a : (nk_u64_t)a;
189
- nk_u64_t abs_b = b < 0 ? -(nk_u64_t)b : (nk_u64_t)b;
188
+ nk_u64_t abs_a = a < 0 ? (0u - (nk_u64_t)a) : (nk_u64_t)a;
189
+ nk_u64_t abs_b = b < 0 ? (0u - (nk_u64_t)b) : (nk_u64_t)b;
190
190
  vuint64m1_t a_u64m1 = __riscv_vmv_v_x_u64m1(abs_a, 1);
191
191
  vuint64m1_t b_u64m1 = __riscv_vmv_v_x_u64m1(abs_b, 1);
192
192
  nk_u64_t high = __riscv_vmv_x_s_u64m1_u64(__riscv_vmulhu_vv_u64m1(a_u64m1, b_u64m1, 1));
@@ -238,8 +238,8 @@ NK_PUBLIC nk_i64_t nk_i64_saturating_mul_serial(nk_i64_t a, nk_i64_t b) {
238
238
  int sign = ((a < 0) ^ (b < 0)) ? -1 : 1; // Track the sign of the result
239
239
 
240
240
  // Take absolute values for easy multiplication and overflow detection
241
- nk_u64_t abs_a = (a < 0) ? -(nk_u64_t)a : (nk_u64_t)a;
242
- nk_u64_t abs_b = (b < 0) ? -(nk_u64_t)b : (nk_u64_t)b;
241
+ nk_u64_t abs_a = (a < 0) ? (0u - (nk_u64_t)a) : (nk_u64_t)a;
242
+ nk_u64_t abs_b = (b < 0) ? (0u - (nk_u64_t)b) : (nk_u64_t)b;
243
243
 
244
244
  // Split the absolute values into high and low 32-bit parts
245
245
  nk_u64_t a_high = abs_a >> 32;
@@ -101,8 +101,8 @@ extern "C" {
101
101
  if (a_norm_sq == 0 && b_norm_sq == 0) { *result = 0; } \
102
102
  else if (dot_product == 0) { *result = 1; } \
103
103
  else { \
104
- nk_##output_type##_t unclipped_distance = 1 - dot_product * compute_rsqrt(a_norm_sq) * \
105
- compute_rsqrt(b_norm_sq); \
104
+ nk_##output_type##_t unclipped_distance = (nk_##output_type##_t)( \
105
+ 1 - dot_product * compute_rsqrt(a_norm_sq) * compute_rsqrt(b_norm_sq)); \
106
106
  *result = unclipped_distance > 0 ? unclipped_distance : 0; \
107
107
  } \
108
108
  }
@@ -1541,6 +1541,12 @@ NK_INTERNAL nk_bf16_t nk_bf16_from_u16_(nk_u16_t bits) {
1541
1541
  return c.bf;
1542
1542
  }
1543
1543
 
1544
+ NK_INTERNAL void nk_f64_from_i64_(nk_i64_t const *src, nk_f64_t *dest) { *dest = (nk_f64_t)*src; }
1545
+ NK_INTERNAL void nk_f64_from_u64_(nk_u64_t const *src, nk_f64_t *dest) { *dest = (nk_f64_t)*src; }
1546
+ NK_INTERNAL void nk_f32_from_i32_(nk_i32_t const *src, nk_f32_t *dest) { *dest = (nk_f32_t)*src; }
1547
+ NK_INTERNAL void nk_f32_from_u32_(nk_u32_t const *src, nk_f32_t *dest) { *dest = (nk_f32_t)*src; }
1548
+ NK_INTERNAL void nk_f32_from_f64_(nk_f64_t const *src, nk_f32_t *dest) { *dest = (nk_f32_t)*src; }
1549
+
1544
1550
  /** @brief E4M3: NaN when (raw & 0x7F) == 0x7F (two NaN values: 0x7F, 0xFF). */
1545
1551
  NK_INTERNAL int nk_e4m3_is_nan_(nk_e4m3_t x) { return (x & 0x7F) == 0x7F; }
1546
1552
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: numkong
3
- Version: 7.2.2
3
+ Version: 7.2.4
4
4
  Summary: Portable mixed-precision BLAS-like vector math library for x86 and ARM
5
5
  Home-page: https://github.com/ashvardanian/NumKong
6
6
  Author: Ash Vardanian
@@ -1,7 +1,4 @@
1
1
  /* NumKong ISA probe: NEON (AArch64 baseline SIMD) */
2
- #if !defined(__ARM_NEON)
3
- #error "NEON not available"
4
- #endif
5
2
  #include <arm_neon.h>
6
3
  int main(void) {
7
4
  float32x4_t a = vdupq_n_f32(1.0f);
@@ -1,7 +1,4 @@
1
1
  /* NumKong ISA probe: NEON BF16 (ARMv8.6-A bfloat16 dot product) */
2
- #if !defined(__ARM_FEATURE_BF16_VECTOR_ARITHMETIC) && !(defined(__ARM_ARCH) && __ARM_ARCH >= 806)
3
- #error "NEON BF16 not available"
4
- #endif
5
2
  #include <arm_neon.h>
6
3
  int main(void) {
7
4
  bfloat16x8_t a = vdupq_n_bf16(1.0f);
@@ -1,7 +1,4 @@
1
1
  /* NumKong ISA probe: NEON FHM (ARMv8.2-A FP16 fused multiply-add) */
2
- #if !defined(__ARM_FEATURE_FP16_FML) && !(defined(__ARM_ARCH) && __ARM_ARCH >= 804)
3
- #error "NEON FHM not available"
4
- #endif
5
2
  #include <arm_neon.h>
6
3
  int main(void) {
7
4
  float16x8_t a = vdupq_n_f16(1.0f);
@@ -1,7 +1,4 @@
1
1
  /* NumKong ISA probe: NEON F16 (ARMv8.2-A half-precision) */
2
- #if !defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) && !(defined(__ARM_ARCH) && __ARM_ARCH >= 802)
3
- #error "NEON F16 not available"
4
- #endif
5
2
  #include <arm_neon.h>
6
3
  int main(void) {
7
4
  float16x8_t a = vdupq_n_f16(1.0f);
@@ -1,7 +1,4 @@
1
1
  /* NumKong ISA probe: NEON SDOT (ARMv8.2-A dot product) */
2
- #if !defined(__ARM_FEATURE_DOTPROD) && !(defined(__ARM_ARCH) && __ARM_ARCH >= 804)
3
- #error "NEON SDOT not available"
4
- #endif
5
2
  #include <arm_neon.h>
6
3
  int main(void) {
7
4
  int8x16_t a = vdupq_n_s8(1);
@@ -1,7 +1,4 @@
1
1
  /* NumKong ISA probe: NEON FP8 (fp8dot4) */
2
- #if !defined(__ARM_NEON)
3
- #error "Feature not available"
4
- #endif
5
2
  #include <arm_neon.h>
6
3
  int test_neonfp8(void) {
7
4
  mfloat8x16_t a = vreinterpretq_mf8_u8(vdupq_n_u8(0));
numkong-7.2.2/VERSION DELETED
@@ -1 +0,0 @@
1
- 7.2.2
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes