pxdct 0.3.3__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 (253) hide show
  1. pxdct-0.3.3/.github/FUNDING.yml +3 -0
  2. pxdct-0.3.3/.github/workflows/build_push.yml +206 -0
  3. pxdct-0.3.3/.github/workflows/mirroring.yaml +25 -0
  4. pxdct-0.3.3/.github/workflows/no-response.yml +26 -0
  5. pxdct-0.3.3/.github/workflows/publish_pypi.yml +220 -0
  6. pxdct-0.3.3/.github/workflows/publish_release.yml +23 -0
  7. pxdct-0.3.3/.gitignore +8 -0
  8. pxdct-0.3.3/Cargo.lock +1226 -0
  9. pxdct-0.3.3/Cargo.toml +40 -0
  10. pxdct-0.3.3/LICENSE-APACHE.md +201 -0
  11. pxdct-0.3.3/LICENSE.md +26 -0
  12. pxdct-0.3.3/PKG-INFO +199 -0
  13. pxdct-0.3.3/README.md +65 -0
  14. pxdct-0.3.3/pxdct-py/Cargo.toml +25 -0
  15. pxdct-0.3.3/pxdct-py/README.md +180 -0
  16. pxdct-0.3.3/pxdct-py/src/lib.rs +724 -0
  17. pxdct-0.3.3/pxdct-py/tests/test_pxdct.py +624 -0
  18. pxdct-0.3.3/pyproject.toml +32 -0
  19. pxdct-0.3.3/python/pxdct/__init__.py +162 -0
  20. pxdct-0.3.3/src/avx/dct2_bf_power2.rs +417 -0
  21. pxdct-0.3.3/src/avx/dct2_bf_radix3.rs +749 -0
  22. pxdct-0.3.3/src/avx/dct2_butterflies.rs +96 -0
  23. pxdct-0.3.3/src/avx/mod.rs +83 -0
  24. pxdct-0.3.3/src/avx/mul_f32.rs +243 -0
  25. pxdct-0.3.3/src/avx/pfa_dct2_remap.rs +211 -0
  26. pxdct-0.3.3/src/avx/stored.rs +334 -0
  27. pxdct-0.3.3/src/avx/storef.rs +701 -0
  28. pxdct-0.3.3/src/avx/transpose_real_s.rs +439 -0
  29. pxdct-0.3.3/src/avx/type2/bf25d.rs +338 -0
  30. pxdct-0.3.3/src/avx/type2/bf25f.rs +338 -0
  31. pxdct-0.3.3/src/avx/type2/bf49d.rs +503 -0
  32. pxdct-0.3.3/src/avx/type2/bf49f.rs +376 -0
  33. pxdct-0.3.3/src/avx/type2/bf_radix6d.rs +554 -0
  34. pxdct-0.3.3/src/avx/type2/bf_radix6f.rs +607 -0
  35. pxdct-0.3.3/src/avx/type2/bf_radix9d.rs +985 -0
  36. pxdct-0.3.3/src/avx/type2/bf_split_radix2d.rs +1097 -0
  37. pxdct-0.3.3/src/avx/type2/bf_split_radix2f.rs +1169 -0
  38. pxdct-0.3.3/src/avx/type2/mixed_radix11d.rs +551 -0
  39. pxdct-0.3.3/src/avx/type2/mixed_radix11f.rs +563 -0
  40. pxdct-0.3.3/src/avx/type2/mixed_radix13d.rs +631 -0
  41. pxdct-0.3.3/src/avx/type2/mixed_radix13f.rs +645 -0
  42. pxdct-0.3.3/src/avx/type2/mixed_radix2.rs +603 -0
  43. pxdct-0.3.3/src/avx/type2/mixed_radix3d.rs +396 -0
  44. pxdct-0.3.3/src/avx/type2/mixed_radix3f.rs +403 -0
  45. pxdct-0.3.3/src/avx/type2/mixed_radix5d.rs +345 -0
  46. pxdct-0.3.3/src/avx/type2/mixed_radix5f.rs +356 -0
  47. pxdct-0.3.3/src/avx/type2/mixed_radix6d.rs +386 -0
  48. pxdct-0.3.3/src/avx/type2/mixed_radix6f.rs +452 -0
  49. pxdct-0.3.3/src/avx/type2/mixed_radix7d.rs +407 -0
  50. pxdct-0.3.3/src/avx/type2/mixed_radix7f.rs +414 -0
  51. pxdct-0.3.3/src/avx/type2/mixed_radix9d.rs +461 -0
  52. pxdct-0.3.3/src/avx/type2/mixed_radix9f.rs +471 -0
  53. pxdct-0.3.3/src/avx/type2/mod.rs +95 -0
  54. pxdct-0.3.3/src/avx/type2/prime_butterflies.rs +3609 -0
  55. pxdct-0.3.3/src/avx/type2/split_radixd.rs +384 -0
  56. pxdct-0.3.3/src/avx/type2/split_radixf.rs +387 -0
  57. pxdct-0.3.3/src/avx/type3/bf2n.rs +572 -0
  58. pxdct-0.3.3/src/avx/type3/mixed_radix3d.rs +385 -0
  59. pxdct-0.3.3/src/avx/type3/mixed_radix3f.rs +443 -0
  60. pxdct-0.3.3/src/avx/type3/mixed_radix5d.rs +364 -0
  61. pxdct-0.3.3/src/avx/type3/mixed_radix5f.rs +435 -0
  62. pxdct-0.3.3/src/avx/type3/mixed_radix7d.rs +440 -0
  63. pxdct-0.3.3/src/avx/type3/mixed_radix7f.rs +519 -0
  64. pxdct-0.3.3/src/avx/type3/mixed_radix9d.rs +514 -0
  65. pxdct-0.3.3/src/avx/type3/mixed_radix9f.rs +601 -0
  66. pxdct-0.3.3/src/avx/type3/mod.rs +51 -0
  67. pxdct-0.3.3/src/avx/type3/split_radixd.rs +240 -0
  68. pxdct-0.3.3/src/avx/type3/split_radixf.rs +264 -0
  69. pxdct-0.3.3/src/avx/type4/bf_power3.rs +382 -0
  70. pxdct-0.3.3/src/avx/type4/mixed_radix11d.rs +351 -0
  71. pxdct-0.3.3/src/avx/type4/mixed_radix11f.rs +358 -0
  72. pxdct-0.3.3/src/avx/type4/mixed_radix13d.rs +395 -0
  73. pxdct-0.3.3/src/avx/type4/mixed_radix13f.rs +403 -0
  74. pxdct-0.3.3/src/avx/type4/mixed_radix17d.rs +496 -0
  75. pxdct-0.3.3/src/avx/type4/mixed_radix17f.rs +504 -0
  76. pxdct-0.3.3/src/avx/type4/mixed_radix19d.rs +553 -0
  77. pxdct-0.3.3/src/avx/type4/mixed_radix19f.rs +561 -0
  78. pxdct-0.3.3/src/avx/type4/mixed_radix2d.rs +289 -0
  79. pxdct-0.3.3/src/avx/type4/mixed_radix2f.rs +370 -0
  80. pxdct-0.3.3/src/avx/type4/mixed_radix3d.rs +277 -0
  81. pxdct-0.3.3/src/avx/type4/mixed_radix3f.rs +288 -0
  82. pxdct-0.3.3/src/avx/type4/mixed_radix5d.rs +240 -0
  83. pxdct-0.3.3/src/avx/type4/mixed_radix5f.rs +250 -0
  84. pxdct-0.3.3/src/avx/type4/mixed_radix7d.rs +272 -0
  85. pxdct-0.3.3/src/avx/type4/mixed_radix7f.rs +279 -0
  86. pxdct-0.3.3/src/avx/type4/mixed_radix9d.rs +316 -0
  87. pxdct-0.3.3/src/avx/type4/mixed_radix9f.rs +323 -0
  88. pxdct-0.3.3/src/avx/type4/mod.rs +73 -0
  89. pxdct-0.3.3/src/avx/type4/prime_butterflies.rs +641 -0
  90. pxdct-0.3.3/src/avx/type4/radix2d.rs +302 -0
  91. pxdct-0.3.3/src/avx/type4/radix2f.rs +344 -0
  92. pxdct-0.3.3/src/avx/util.rs +305 -0
  93. pxdct-0.3.3/src/bidirectional.rs +116 -0
  94. pxdct-0.3.3/src/butterflies.rs +2507 -0
  95. pxdct-0.3.3/src/dst3.rs +239 -0
  96. pxdct-0.3.3/src/dst3_butterfly.rs +444 -0
  97. pxdct-0.3.3/src/factory_dct1.rs +179 -0
  98. pxdct-0.3.3/src/factory_dct2.rs +1876 -0
  99. pxdct-0.3.3/src/factory_dct3.rs +857 -0
  100. pxdct-0.3.3/src/factory_dct4.rs +974 -0
  101. pxdct-0.3.3/src/factory_dct7.rs +74 -0
  102. pxdct-0.3.3/src/factory_dst2.rs +242 -0
  103. pxdct-0.3.3/src/factory_dst7.rs +97 -0
  104. pxdct-0.3.3/src/factory_scaled_dct2.rs +312 -0
  105. pxdct-0.3.3/src/identity.rs +80 -0
  106. pxdct-0.3.3/src/lib.rs +3248 -0
  107. pxdct-0.3.3/src/mdct/imdct_fft.rs +372 -0
  108. pxdct-0.3.3/src/mdct/mdct_fft.rs +330 -0
  109. pxdct-0.3.3/src/mdct/mod.rs +36 -0
  110. pxdct-0.3.3/src/mdct/windowed_mdct.rs +839 -0
  111. pxdct-0.3.3/src/mla.rs +80 -0
  112. pxdct-0.3.3/src/neon/block_transpose.rs +378 -0
  113. pxdct-0.3.3/src/neon/fcma_mul_f32.rs +270 -0
  114. pxdct-0.3.3/src/neon/mod.rs +80 -0
  115. pxdct-0.3.3/src/neon/mul_f32.rs +190 -0
  116. pxdct-0.3.3/src/neon/pfa_dct2_remap.rs +177 -0
  117. pxdct-0.3.3/src/neon/store_d.rs +233 -0
  118. pxdct-0.3.3/src/neon/transpose.rs +249 -0
  119. pxdct-0.3.3/src/neon/type2/bf25.rs +324 -0
  120. pxdct-0.3.3/src/neon/type2/bf49.rs +499 -0
  121. pxdct-0.3.3/src/neon/type2/bf_radix3.rs +956 -0
  122. pxdct-0.3.3/src/neon/type2/bf_radix6d.rs +460 -0
  123. pxdct-0.3.3/src/neon/type2/bf_radix6f.rs +522 -0
  124. pxdct-0.3.3/src/neon/type2/bf_split_radix2.rs +1218 -0
  125. pxdct-0.3.3/src/neon/type2/bf_split_radix2d.rs +1021 -0
  126. pxdct-0.3.3/src/neon/type2/mixed_radix11f.rs +551 -0
  127. pxdct-0.3.3/src/neon/type2/mixed_radix13f.rs +630 -0
  128. pxdct-0.3.3/src/neon/type2/mixed_radix2.rs +559 -0
  129. pxdct-0.3.3/src/neon/type2/mixed_radix3.rs +392 -0
  130. pxdct-0.3.3/src/neon/type2/mixed_radix3d.rs +368 -0
  131. pxdct-0.3.3/src/neon/type2/mixed_radix5.rs +339 -0
  132. pxdct-0.3.3/src/neon/type2/mixed_radix5d.rs +336 -0
  133. pxdct-0.3.3/src/neon/type2/mixed_radix6.rs +390 -0
  134. pxdct-0.3.3/src/neon/type2/mixed_radix6d.rs +349 -0
  135. pxdct-0.3.3/src/neon/type2/mixed_radix7.rs +402 -0
  136. pxdct-0.3.3/src/neon/type2/mixed_radix7d.rs +398 -0
  137. pxdct-0.3.3/src/neon/type2/mixed_radix9.rs +458 -0
  138. pxdct-0.3.3/src/neon/type2/mixed_radix9d.rs +454 -0
  139. pxdct-0.3.3/src/neon/type2/mod.rs +85 -0
  140. pxdct-0.3.3/src/neon/type2/split_radixd.rs +456 -0
  141. pxdct-0.3.3/src/neon/type2/split_radixf.rs +471 -0
  142. pxdct-0.3.3/src/neon/type3/mixed_radix3d.rs +343 -0
  143. pxdct-0.3.3/src/neon/type3/mixed_radix3f.rs +309 -0
  144. pxdct-0.3.3/src/neon/type3/mixed_radix5d.rs +316 -0
  145. pxdct-0.3.3/src/neon/type3/mixed_radix5f.rs +408 -0
  146. pxdct-0.3.3/src/neon/type3/mixed_radix7d.rs +388 -0
  147. pxdct-0.3.3/src/neon/type3/mixed_radix7f.rs +425 -0
  148. pxdct-0.3.3/src/neon/type3/mixed_radix9d.rs +456 -0
  149. pxdct-0.3.3/src/neon/type3/mixed_radix9f.rs +500 -0
  150. pxdct-0.3.3/src/neon/type3/mod.rs +49 -0
  151. pxdct-0.3.3/src/neon/type3/split_radixd.rs +265 -0
  152. pxdct-0.3.3/src/neon/type3/split_radixf.rs +295 -0
  153. pxdct-0.3.3/src/neon/type4/bf3_butterfly.rs +214 -0
  154. pxdct-0.3.3/src/neon/type4/mixed_radix11d.rs +346 -0
  155. pxdct-0.3.3/src/neon/type4/mixed_radix11f.rs +349 -0
  156. pxdct-0.3.3/src/neon/type4/mixed_radix13d.rs +391 -0
  157. pxdct-0.3.3/src/neon/type4/mixed_radix13f.rs +394 -0
  158. pxdct-0.3.3/src/neon/type4/mixed_radix17d.rs +495 -0
  159. pxdct-0.3.3/src/neon/type4/mixed_radix17f.rs +498 -0
  160. pxdct-0.3.3/src/neon/type4/mixed_radix19d.rs +553 -0
  161. pxdct-0.3.3/src/neon/type4/mixed_radix19f.rs +556 -0
  162. pxdct-0.3.3/src/neon/type4/mixed_radix2f.rs +285 -0
  163. pxdct-0.3.3/src/neon/type4/mixed_radix3d.rs +267 -0
  164. pxdct-0.3.3/src/neon/type4/mixed_radix3f.rs +269 -0
  165. pxdct-0.3.3/src/neon/type4/mixed_radix5d.rs +233 -0
  166. pxdct-0.3.3/src/neon/type4/mixed_radix5f.rs +236 -0
  167. pxdct-0.3.3/src/neon/type4/mixed_radix7d.rs +265 -0
  168. pxdct-0.3.3/src/neon/type4/mixed_radix7f.rs +268 -0
  169. pxdct-0.3.3/src/neon/type4/mixed_radix9d.rs +310 -0
  170. pxdct-0.3.3/src/neon/type4/mixed_radix9f.rs +313 -0
  171. pxdct-0.3.3/src/neon/type4/mod.rs +67 -0
  172. pxdct-0.3.3/src/neon/type4/radix2f.rs +296 -0
  173. pxdct-0.3.3/src/neon/util.rs +426 -0
  174. pxdct-0.3.3/src/prime_factors.rs +162 -0
  175. pxdct-0.3.3/src/pxdct_error.rs +77 -0
  176. pxdct-0.3.3/src/scaling.rs +547 -0
  177. pxdct-0.3.3/src/spectrum_mul.rs +172 -0
  178. pxdct-0.3.3/src/transpose.rs +101 -0
  179. pxdct-0.3.3/src/twiddles.rs +100 -0
  180. pxdct-0.3.3/src/two_dims.rs +110 -0
  181. pxdct-0.3.3/src/type1/butterflies.rs +672 -0
  182. pxdct-0.3.3/src/type1/dst.rs +215 -0
  183. pxdct-0.3.3/src/type1/fft.rs +196 -0
  184. pxdct-0.3.3/src/type1/mod.rs +40 -0
  185. pxdct-0.3.3/src/type1/split_radix.rs +237 -0
  186. pxdct-0.3.3/src/type2/bf25.rs +334 -0
  187. pxdct-0.3.3/src/type2/bf49.rs +402 -0
  188. pxdct-0.3.3/src/type2/coprime.rs +564 -0
  189. pxdct-0.3.3/src/type2/dct_fft.rs +242 -0
  190. pxdct-0.3.3/src/type2/dst_butterflies.rs +550 -0
  191. pxdct-0.3.3/src/type2/dst_fft.rs +207 -0
  192. pxdct-0.3.3/src/type2/dst_radix3.rs +334 -0
  193. pxdct-0.3.3/src/type2/mixed_radix11.rs +580 -0
  194. pxdct-0.3.3/src/type2/mixed_radix13.rs +659 -0
  195. pxdct-0.3.3/src/type2/mixed_radix2.rs +212 -0
  196. pxdct-0.3.3/src/type2/mixed_radix3q.rs +344 -0
  197. pxdct-0.3.3/src/type2/mixed_radix5.rs +571 -0
  198. pxdct-0.3.3/src/type2/mixed_radix6.rs +321 -0
  199. pxdct-0.3.3/src/type2/mixed_radix7.rs +583 -0
  200. pxdct-0.3.3/src/type2/mixed_radix9.rs +505 -0
  201. pxdct-0.3.3/src/type2/mod.rs +87 -0
  202. pxdct-0.3.3/src/type2/power2_butterflies.rs +1388 -0
  203. pxdct-0.3.3/src/type2/prime_butterflies.rs +4167 -0
  204. pxdct-0.3.3/src/type2/scaled_butterflies.rs +374 -0
  205. pxdct-0.3.3/src/type2/split_radix.rs +423 -0
  206. pxdct-0.3.3/src/type2/util.rs +105 -0
  207. pxdct-0.3.3/src/type3/bf_f2.rs +672 -0
  208. pxdct-0.3.3/src/type3/butterflies.rs +1680 -0
  209. pxdct-0.3.3/src/type3/coprime.rs +445 -0
  210. pxdct-0.3.3/src/type3/fft.rs +226 -0
  211. pxdct-0.3.3/src/type3/identity.rs +88 -0
  212. pxdct-0.3.3/src/type3/mixed_radix3.rs +297 -0
  213. pxdct-0.3.3/src/type3/mixed_radix5.rs +363 -0
  214. pxdct-0.3.3/src/type3/mixed_radix7.rs +433 -0
  215. pxdct-0.3.3/src/type3/mixed_radix9.rs +504 -0
  216. pxdct-0.3.3/src/type3/mod.rs +65 -0
  217. pxdct-0.3.3/src/type3/prime_butterflies.rs +604 -0
  218. pxdct-0.3.3/src/type3/split_radix.rs +399 -0
  219. pxdct-0.3.3/src/type4/bf_3n.rs +492 -0
  220. pxdct-0.3.3/src/type4/butterflies.rs +1321 -0
  221. pxdct-0.3.3/src/type4/dst.rs +229 -0
  222. pxdct-0.3.3/src/type4/fft.rs +376 -0
  223. pxdct-0.3.3/src/type4/fft_even.rs +304 -0
  224. pxdct-0.3.3/src/type4/identity.rs +95 -0
  225. pxdct-0.3.3/src/type4/mixed_radix2.rs +254 -0
  226. pxdct-0.3.3/src/type4/mod.rs +88 -0
  227. pxdct-0.3.3/src/type4/power2_bf.rs +463 -0
  228. pxdct-0.3.3/src/type4/prime_butterflies.rs +2965 -0
  229. pxdct-0.3.3/src/type4/radix11.rs +374 -0
  230. pxdct-0.3.3/src/type4/radix13.rs +414 -0
  231. pxdct-0.3.3/src/type4/radix17.rs +506 -0
  232. pxdct-0.3.3/src/type4/radix19.rs +559 -0
  233. pxdct-0.3.3/src/type4/radix2.rs +257 -0
  234. pxdct-0.3.3/src/type4/radix3.rs +259 -0
  235. pxdct-0.3.3/src/type4/radix5.rs +285 -0
  236. pxdct-0.3.3/src/type4/radix7.rs +312 -0
  237. pxdct-0.3.3/src/type4/radix9.rs +341 -0
  238. pxdct-0.3.3/src/type4/utils.rs +47 -0
  239. pxdct-0.3.3/src/type5/dct_fft.rs +275 -0
  240. pxdct-0.3.3/src/type5/dst_fft.rs +244 -0
  241. pxdct-0.3.3/src/type5/mod.rs +63 -0
  242. pxdct-0.3.3/src/type6/dct_fft.rs +273 -0
  243. pxdct-0.3.3/src/type6/dst_fft.rs +248 -0
  244. pxdct-0.3.3/src/type6/mod.rs +33 -0
  245. pxdct-0.3.3/src/type7/butterflies.rs +863 -0
  246. pxdct-0.3.3/src/type7/butterflies_dct.rs +313 -0
  247. pxdct-0.3.3/src/type7/dct_fft.rs +265 -0
  248. pxdct-0.3.3/src/type7/dst_fft.rs +296 -0
  249. pxdct-0.3.3/src/type7/mod.rs +40 -0
  250. pxdct-0.3.3/src/type8/dct_fft.rs +243 -0
  251. pxdct-0.3.3/src/type8/dst_fft.rs +275 -0
  252. pxdct-0.3.3/src/type8/mod.rs +33 -0
  253. pxdct-0.3.3/src/util.rs +549 -0
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: awxkee
@@ -0,0 +1,206 @@
1
+ name: Build
2
+
3
+ concurrency:
4
+ group: ${{ github.workflow }}-${{ github.ref }}
5
+ cancel-in-progress: true
6
+
7
+ on:
8
+ push:
9
+ branches:
10
+ - 'master'
11
+ - '!ci_test_*'
12
+ tags-ignore:
13
+ - '*'
14
+ pull_request:
15
+ branches:
16
+ - 'master'
17
+
18
+ jobs:
19
+ build:
20
+ name: Build
21
+ runs-on: ubuntu-latest
22
+ strategy:
23
+ fail-fast: false
24
+ matrix:
25
+ rust: [ "1.89.0", stable ]
26
+ steps:
27
+ - uses: actions/checkout@v6
28
+ - uses: dtolnay/rust-toolchain@stable
29
+ with:
30
+ toolchain: ${{ matrix.rust }}
31
+ - run: rustup target add aarch64-unknown-linux-gnu x86_64-unknown-linux-gnu i686-unknown-linux-gnu powerpc-unknown-linux-gnu wasm32-unknown-unknown
32
+ - run: RUSTFLAGS="-C target-feature=+neon" cargo build --target aarch64-unknown-linux-gnu
33
+ - run: RUSTFLAGS="-C target-feature=+neon" cargo build --target aarch64-unknown-linux-gnu --no-default-features
34
+ - run: RUSTFLAGS="-C target-feature=+avx2" cargo build --target i686-unknown-linux-gnu
35
+ - run: cargo build --target powerpc-unknown-linux-gnu
36
+ - run: RUSTFLAGS="-C target-feature=+avx2" cargo build --target x86_64-unknown-linux-gnu
37
+ - run: RUSTFLAGS="-C target-feature=+avx2" cargo build --target x86_64-unknown-linux-gnu --no-default-features --features avx
38
+ - run: RUSTFLAGS="-C target-feature=+avx2" cargo +nightly build --target x86_64-unknown-linux-gnu --no-default-features --features avx
39
+ - run: RUSTFLAGS="-C target-feature=+simd128" cargo build --target wasm32-unknown-unknown
40
+
41
+ tests_arm:
42
+ name: Tests
43
+ strategy:
44
+ matrix:
45
+ features: [ "", neon, fcma ]
46
+ runs-on: ubuntu-24.04-arm
47
+ steps:
48
+ - uses: actions/checkout@v6
49
+ - uses: dtolnay/rust-toolchain@nightly
50
+ - run: cargo test --no-default-features --features "${{ matrix.features }}"
51
+
52
+ tests_x86:
53
+ name: Tests
54
+ strategy:
55
+ matrix:
56
+ features: [ "", avx ]
57
+ runs-on: ubuntu-latest
58
+ steps:
59
+ - uses: actions/checkout@v6
60
+ - uses: dtolnay/rust-toolchain@stable
61
+ - run: cargo test --no-default-features --features "${{ matrix.features }}"
62
+
63
+ clippy_x86:
64
+ name: Clippy x86 Stable
65
+ runs-on: ubuntu-latest
66
+ steps:
67
+ - uses: actions/checkout@v6
68
+ - uses: dtolnay/rust-toolchain@stable
69
+ - run: cargo clippy --features avx -- -D warnings
70
+ - run: cargo clippy --no-default-features -- -D warnings
71
+
72
+ clippy_x86_nightly:
73
+ name: Clippy x86 Nightly
74
+ runs-on: ubuntu-latest
75
+ steps:
76
+ - uses: actions/checkout@v6
77
+ - uses: dtolnay/rust-toolchain@nightly
78
+ - run: rustup component add clippy
79
+ - run: cargo clippy --all-features -- -D warnings
80
+
81
+ clippy_arm:
82
+ name: Clippy ARM
83
+ runs-on: ubuntu-24.04-arm
84
+ steps:
85
+ - uses: actions/checkout@v6
86
+ - uses: dtolnay/rust-toolchain@stable
87
+ - run: cargo clippy -- -D warnings
88
+
89
+ fuzz_arm:
90
+ name: Fuzzing ARM
91
+ runs-on: ubuntu-24.04-arm
92
+ strategy:
93
+ matrix:
94
+ feature: [ "", neon, fcma ]
95
+ steps:
96
+ - uses: actions/checkout@v6
97
+ - uses: dtolnay/rust-toolchain@nightly
98
+ - run: cargo install cargo-fuzz
99
+ - run: cargo fuzz run dct --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
100
+ - run: cargo fuzz run dct4 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
101
+ - run: cargo fuzz run dct2_f64 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
102
+ - run: cargo fuzz run dct4_f64 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
103
+ - run: cargo fuzz run type1 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
104
+ - run: cargo fuzz run type7 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
105
+ - run: cargo fuzz run type6 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
106
+ - run: cargo fuzz run type5 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
107
+ - run: cargo fuzz run type8 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
108
+
109
+ fuzz_x86_64:
110
+ name: Fuzzing x86_64
111
+ runs-on: ubuntu-latest
112
+ strategy:
113
+ matrix:
114
+ feature: [ "", avx ]
115
+ steps:
116
+ - uses: actions/checkout@v6
117
+ - uses: dtolnay/rust-toolchain@nightly
118
+ - run: cargo install cargo-fuzz
119
+ - run: cargo fuzz run dct --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
120
+ - run: cargo fuzz run dct4 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
121
+ - run: cargo fuzz run dct2_f64 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
122
+ - run: cargo fuzz run dct4_f64 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
123
+ - run: cargo fuzz run type1 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
124
+ - run: cargo fuzz run type7 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
125
+ - run: cargo fuzz run type6 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
126
+ - run: cargo fuzz run type5 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
127
+ - run: cargo fuzz run type8 --no-default-features --features "${{ matrix.feature }}" -- -max_total_time=12
128
+
129
+ tests_x86_sse_isolated:
130
+ name: Testing x86 SSE isolated
131
+ runs-on: ubuntu-latest
132
+ steps:
133
+ - uses: actions/checkout@v6
134
+ - uses: dtolnay/rust-toolchain@nightly
135
+ - run: |
136
+ sudo apt-get -y update
137
+ sudo apt-get install -y qemu-user
138
+ - run: |
139
+ failed=0
140
+ tests=$(cargo +nightly test --lib -- --list 2>/dev/null | grep ': test' | sed 's/: test//')
141
+ while read -r test; do
142
+ rc=0
143
+ echo "Running: $test"
144
+ output=$(RUSTFLAGS="-C target-feature=+sse4.1,-avx,-avx2,-fma" \
145
+ CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="qemu-x86_64 -cpu Nehalem" SHORT_TEST=yes \
146
+ cargo +nightly test --lib -- "$test" --exact 2>&1) || rc=$?
147
+ echo "$output" | grep -E "FAILED|ok|signal 4"
148
+ if [ "${rc:-0}" -ne 0 ]; then
149
+ echo "❌ Test failed: $test"
150
+ echo "$output"
151
+ failed=1
152
+ else
153
+ echo "$output" | grep -E "ok|signal 4"
154
+ fi
155
+ done <<< "$tests"
156
+ exit $failed
157
+
158
+ tests_x86_avx2_isolated:
159
+ name: Testing x86 AVX2 isolated (no FMA)
160
+ runs-on: ubuntu-latest
161
+ steps:
162
+ - uses: actions/checkout@v6
163
+ - uses: dtolnay/rust-toolchain@nightly
164
+ - run: |
165
+ sudo apt-get -y update
166
+ sudo apt-get install -y qemu-user
167
+ - run: |
168
+ failed=0
169
+ tests=$(cargo +nightly test --lib -- --list 2>/dev/null | grep ': test' | sed 's/: test//')
170
+ while read -r test; do
171
+ rc=0
172
+ echo "Running: $test"
173
+ output=$(RUSTFLAGS="-C target-feature=+avx2,-fma" \
174
+ CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="qemu-x86_64 -cpu Haswell-noTSX,avx2=on,fma=off" SHORT_TEST=yes \
175
+ cargo +nightly test --lib --target x86_64-unknown-linux-gnu -- "$test" --exact 2>&1) || rc=$?
176
+ echo "$output" | grep -E "FAILED|ok|signal 4"
177
+ if [ "${rc:-0}" -ne 0 ]; then
178
+ echo "❌ Test failed: $test"
179
+ echo "$output"
180
+ failed=1
181
+ else
182
+ echo "$output" | grep -E "ok|signal 4"
183
+ fi
184
+ done <<< "$tests"
185
+ exit $failed
186
+
187
+ python_bindings:
188
+ name: Python bindings
189
+ runs-on: ubuntu-latest
190
+ steps:
191
+ - uses: actions/checkout@v6
192
+ - uses: dtolnay/rust-toolchain@stable
193
+ - uses: actions/setup-python@v5
194
+ with:
195
+ python-version: '3.12'
196
+ - name: Create venv and install dependencies
197
+ run: |
198
+ python -m venv pxdct-py/.venv
199
+ pxdct-py/.venv/bin/pip install --upgrade pip
200
+ pxdct-py/.venv/bin/pip install maturin pytest numpy
201
+ - name: Build and install pxdct
202
+ working-directory: pxdct-py
203
+ run: .venv/bin/maturin develop --release
204
+ - name: Run Python tests
205
+ working-directory: pxdct-py
206
+ run: .venv/bin/pytest tests/test_pxdct.py -v
@@ -0,0 +1,25 @@
1
+ name: Mirror to GitLab and Codeberg
2
+
3
+ on:
4
+ push:
5
+ branches: [ 'master' ]
6
+ tags:
7
+ - '*'
8
+
9
+ jobs:
10
+ mirror:
11
+ runs-on: ubuntu-latest
12
+ environment: mirroring
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - name: Mirror to GitLab
19
+ run: |
20
+ git remote add gitlab https://oauth2:${{ secrets.GITLAB_TOKEN }}@gitlab.com/awxkee/pxdct.git
21
+ git remote add codeberg https://awxkee:${{ secrets.CODEBERG_TOKEN }}@codeberg.org/awxkee/pxdct.git
22
+ git push gitlab --all
23
+ git push gitlab --tags
24
+ git push codeberg --all
25
+ git push codeberg --tags
@@ -0,0 +1,26 @@
1
+ name: no-response
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 0 * * *' # Runs daily at midnight
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ noResponse:
10
+ permissions:
11
+ issues: write
12
+ pull-requests: write
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/stale@v10
16
+ with:
17
+ repo-token: ${{ github.token }}
18
+ days-before-stale: -1
19
+ days-before-close: 14
20
+ only-labels: 'waiting for author'
21
+ stale-issue-label: 'waiting for author'
22
+ stale-pr-label: 'waiting for author'
23
+ remove-stale-when-updated: true
24
+ ignore-updates: false
25
+ close-issue-message: This issue has been automatically closed due to inactivity. We requested additional information but have not received a response from the original author. Without the requested details, we cannot proceed. If you have or find the information needed, please comment so we can reopen the issue.
26
+ close-pr-message: This pull request has been automatically closed due to inactivity. We requested additional information but have not received a response from the original author. Without the requested details, we cannot proceed. If you have the needed information or updates, please reopen the PR or comment so we can continue the review.
@@ -0,0 +1,220 @@
1
+ # This file is autogenerated by maturin v1.12.4
2
+ # To update, run
3
+ #
4
+ # maturin generate-ci github
5
+ #
6
+ name: PyPi Python publisher
7
+
8
+ concurrency:
9
+ group: ${{ github.workflow }}-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ on:
13
+ push:
14
+ tags:
15
+ - '[0-9]*'
16
+
17
+ permissions:
18
+ contents: read
19
+
20
+ jobs:
21
+ linux:
22
+ runs-on: ${{ matrix.platform.runner }}
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ platform:
27
+ - runner: ubuntu-22.04
28
+ target: x86_64
29
+ toolchain: stable
30
+ features: avx
31
+ - runner: ubuntu-22.04
32
+ target: x86
33
+ toolchain: stable
34
+ features: avx
35
+ - runner: ubuntu-22.04
36
+ target: aarch64
37
+ toolchain: nightly
38
+ features: fcma
39
+ - runner: ubuntu-22.04
40
+ target: armv7
41
+ toolchain: stable
42
+ features: ""
43
+ - runner: ubuntu-22.04
44
+ target: s390x
45
+ toolchain: stable
46
+ features: ""
47
+ - runner: ubuntu-22.04
48
+ target: ppc64le
49
+ toolchain: stable
50
+ features: ""
51
+ steps:
52
+ - uses: actions/checkout@v6
53
+ - uses: actions/setup-python@v6
54
+ with:
55
+ python-version: 3.x
56
+ - name: Build wheels
57
+ uses: PyO3/maturin-action@v1
58
+ with:
59
+ rust-toolchain: ${{ matrix.platform.toolchain }}
60
+ target: ${{ matrix.platform.target }}
61
+ args: --release --out dist --find-interpreter ${{ matrix.platform.features != '' && format('--features {0}', matrix.platform.features) || '' }}
62
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
63
+ manylinux: auto
64
+ working-directory: ./pxdct-py
65
+ - name: Upload wheels
66
+ uses: actions/upload-artifact@v5
67
+ with:
68
+ name: wheels-linux-${{ matrix.platform.target }}
69
+ path: ./pxdct-py/dist
70
+
71
+ musllinux:
72
+ runs-on: ${{ matrix.platform.runner }}
73
+ strategy:
74
+ fail-fast: false
75
+ matrix:
76
+ platform:
77
+ - runner: ubuntu-22.04
78
+ target: x86_64
79
+ - runner: ubuntu-22.04
80
+ target: x86
81
+ - runner: ubuntu-22.04
82
+ target: aarch64
83
+ - runner: ubuntu-22.04
84
+ target: armv7
85
+ steps:
86
+ - uses: actions/checkout@v6
87
+ - uses: actions/setup-python@v6
88
+ with:
89
+ python-version: 3.x
90
+ - name: Build wheels
91
+ uses: PyO3/maturin-action@v1
92
+ with:
93
+ target: ${{ matrix.platform.target }}
94
+ args: --release --out dist --find-interpreter
95
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
96
+ manylinux: musllinux_1_2
97
+ working-directory: ./pxdct-py
98
+ - name: Upload wheels
99
+ uses: actions/upload-artifact@v5
100
+ with:
101
+ name: wheels-musllinux-${{ matrix.platform.target }}
102
+ path: ./pxdct-py/dist
103
+
104
+ windows:
105
+ runs-on: ${{ matrix.platform.runner }}
106
+ strategy:
107
+ fail-fast: false
108
+ matrix:
109
+ platform:
110
+ - runner: windows-latest
111
+ target: x64
112
+ python_arch: x64
113
+ toolchain: stable
114
+ features: avx
115
+ - runner: windows-latest
116
+ target: x86
117
+ python_arch: x86
118
+ toolchain: stable
119
+ features: ""
120
+ - runner: windows-11-arm
121
+ target: aarch64
122
+ python_arch: arm64
123
+ toolchain: nightly
124
+ features: fcma
125
+ steps:
126
+ - uses: actions/checkout@v6
127
+ - uses: actions/setup-python@v6
128
+ with:
129
+ python-version: 3.13
130
+ architecture: ${{ matrix.platform.python_arch }}
131
+ - name: Build wheels
132
+ uses: PyO3/maturin-action@v1
133
+ with:
134
+ rust-toolchain: ${{ matrix.platform.toolchain }}
135
+ target: ${{ matrix.platform.target }}
136
+ args: --release --out dist --find-interpreter ${{ matrix.platform.features != '' && format('--features {0}', matrix.platform.features) || '' }}
137
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
138
+ working-directory: ./pxdct-py
139
+ - name: Upload wheels
140
+ uses: actions/upload-artifact@v5
141
+ with:
142
+ name: wheels-windows-${{ matrix.platform.target }}
143
+ path: ./pxdct-py/dist
144
+
145
+ macos:
146
+ runs-on: ${{ matrix.platform.runner }}
147
+ strategy:
148
+ fail-fast: false
149
+ matrix:
150
+ platform:
151
+ - runner: macos-15-intel
152
+ target: x86_64
153
+ features: avx
154
+ toolchain: stable
155
+ - runner: macos-latest
156
+ target: aarch64
157
+ features: neon,fcma
158
+ toolchain: nightly
159
+ steps:
160
+ - uses: actions/checkout@v6
161
+ - uses: actions/setup-python@v6
162
+ with:
163
+ python-version: 3.x
164
+ - name: Build wheels
165
+ uses: PyO3/maturin-action@v1
166
+ with:
167
+ rust-toolchain: ${{ matrix.platform.toolchain }}
168
+ target: ${{ matrix.platform.target }}
169
+ args: --release --out dist --find-interpreter --features ${{ matrix.platform.features }}
170
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
171
+ working-directory: ./pxdct-py
172
+ - name: Upload wheels
173
+ uses: actions/upload-artifact@v5
174
+ with:
175
+ name: wheels-macos-${{ matrix.platform.target }}
176
+ path: ./pxdct-py/dist
177
+
178
+ sdist:
179
+ runs-on: ubuntu-latest
180
+ steps:
181
+ - uses: actions/checkout@v6
182
+ - name: Build sdist
183
+ uses: PyO3/maturin-action@v1
184
+ with:
185
+ command: sdist
186
+ args: --out dist
187
+ working-directory: ./pxdct-py
188
+ - name: Upload sdist
189
+ uses: actions/upload-artifact@v5
190
+ with:
191
+ name: wheels-sdist
192
+ path: ./pxdct-py/dist
193
+
194
+ release:
195
+ name: Release
196
+ runs-on: ubuntu-latest
197
+ if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
198
+ needs: [linux, musllinux, windows, macos, sdist]
199
+ environment: Cargo
200
+ permissions:
201
+ # Use to sign the release artifacts
202
+ id-token: write
203
+ # Used to upload release artifacts
204
+ contents: write
205
+ # Used to generate artifact attestation
206
+ attestations: write
207
+ steps:
208
+ - uses: actions/download-artifact@v6
209
+ - name: Generate artifact attestation
210
+ uses: actions/attest-build-provenance@v3
211
+ with:
212
+ subject-path: 'wheels-*/*'
213
+ - name: Install uv
214
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
215
+ uses: astral-sh/setup-uv@v7
216
+ - name: Publish to PyPI
217
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
218
+ run: uv publish 'wheels-*/*'
219
+ env:
220
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,23 @@
1
+ name: Create Release
2
+
3
+ concurrency:
4
+ group: ${{ github.workflow }}-${{ github.ref }}
5
+ cancel-in-progress: true
6
+
7
+ on:
8
+ push:
9
+ tags:
10
+ - '*'
11
+
12
+ jobs:
13
+ build_and_publish:
14
+ name: Build
15
+ runs-on: ubuntu-latest
16
+ environment: Cargo
17
+ steps:
18
+ - uses: actions/checkout@v6
19
+ - uses: actions-rust-lang/setup-rust-toolchain@v1
20
+ - name: Make a release
21
+ env:
22
+ CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_TOKEN }}
23
+ run: cargo publish --manifest-path Cargo.toml
pxdct-0.3.3/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ /target
2
+ Cargo.lock
3
+ .idea
4
+ Untitled.ipynb
5
+ .ipynb_checkpoints
6
+ docs
7
+ pxdct-py/.venv
8
+ *.so