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.
- pxdct-0.3.3/.github/FUNDING.yml +3 -0
- pxdct-0.3.3/.github/workflows/build_push.yml +206 -0
- pxdct-0.3.3/.github/workflows/mirroring.yaml +25 -0
- pxdct-0.3.3/.github/workflows/no-response.yml +26 -0
- pxdct-0.3.3/.github/workflows/publish_pypi.yml +220 -0
- pxdct-0.3.3/.github/workflows/publish_release.yml +23 -0
- pxdct-0.3.3/.gitignore +8 -0
- pxdct-0.3.3/Cargo.lock +1226 -0
- pxdct-0.3.3/Cargo.toml +40 -0
- pxdct-0.3.3/LICENSE-APACHE.md +201 -0
- pxdct-0.3.3/LICENSE.md +26 -0
- pxdct-0.3.3/PKG-INFO +199 -0
- pxdct-0.3.3/README.md +65 -0
- pxdct-0.3.3/pxdct-py/Cargo.toml +25 -0
- pxdct-0.3.3/pxdct-py/README.md +180 -0
- pxdct-0.3.3/pxdct-py/src/lib.rs +724 -0
- pxdct-0.3.3/pxdct-py/tests/test_pxdct.py +624 -0
- pxdct-0.3.3/pyproject.toml +32 -0
- pxdct-0.3.3/python/pxdct/__init__.py +162 -0
- pxdct-0.3.3/src/avx/dct2_bf_power2.rs +417 -0
- pxdct-0.3.3/src/avx/dct2_bf_radix3.rs +749 -0
- pxdct-0.3.3/src/avx/dct2_butterflies.rs +96 -0
- pxdct-0.3.3/src/avx/mod.rs +83 -0
- pxdct-0.3.3/src/avx/mul_f32.rs +243 -0
- pxdct-0.3.3/src/avx/pfa_dct2_remap.rs +211 -0
- pxdct-0.3.3/src/avx/stored.rs +334 -0
- pxdct-0.3.3/src/avx/storef.rs +701 -0
- pxdct-0.3.3/src/avx/transpose_real_s.rs +439 -0
- pxdct-0.3.3/src/avx/type2/bf25d.rs +338 -0
- pxdct-0.3.3/src/avx/type2/bf25f.rs +338 -0
- pxdct-0.3.3/src/avx/type2/bf49d.rs +503 -0
- pxdct-0.3.3/src/avx/type2/bf49f.rs +376 -0
- pxdct-0.3.3/src/avx/type2/bf_radix6d.rs +554 -0
- pxdct-0.3.3/src/avx/type2/bf_radix6f.rs +607 -0
- pxdct-0.3.3/src/avx/type2/bf_radix9d.rs +985 -0
- pxdct-0.3.3/src/avx/type2/bf_split_radix2d.rs +1097 -0
- pxdct-0.3.3/src/avx/type2/bf_split_radix2f.rs +1169 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix11d.rs +551 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix11f.rs +563 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix13d.rs +631 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix13f.rs +645 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix2.rs +603 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix3d.rs +396 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix3f.rs +403 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix5d.rs +345 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix5f.rs +356 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix6d.rs +386 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix6f.rs +452 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix7d.rs +407 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix7f.rs +414 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix9d.rs +461 -0
- pxdct-0.3.3/src/avx/type2/mixed_radix9f.rs +471 -0
- pxdct-0.3.3/src/avx/type2/mod.rs +95 -0
- pxdct-0.3.3/src/avx/type2/prime_butterflies.rs +3609 -0
- pxdct-0.3.3/src/avx/type2/split_radixd.rs +384 -0
- pxdct-0.3.3/src/avx/type2/split_radixf.rs +387 -0
- pxdct-0.3.3/src/avx/type3/bf2n.rs +572 -0
- pxdct-0.3.3/src/avx/type3/mixed_radix3d.rs +385 -0
- pxdct-0.3.3/src/avx/type3/mixed_radix3f.rs +443 -0
- pxdct-0.3.3/src/avx/type3/mixed_radix5d.rs +364 -0
- pxdct-0.3.3/src/avx/type3/mixed_radix5f.rs +435 -0
- pxdct-0.3.3/src/avx/type3/mixed_radix7d.rs +440 -0
- pxdct-0.3.3/src/avx/type3/mixed_radix7f.rs +519 -0
- pxdct-0.3.3/src/avx/type3/mixed_radix9d.rs +514 -0
- pxdct-0.3.3/src/avx/type3/mixed_radix9f.rs +601 -0
- pxdct-0.3.3/src/avx/type3/mod.rs +51 -0
- pxdct-0.3.3/src/avx/type3/split_radixd.rs +240 -0
- pxdct-0.3.3/src/avx/type3/split_radixf.rs +264 -0
- pxdct-0.3.3/src/avx/type4/bf_power3.rs +382 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix11d.rs +351 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix11f.rs +358 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix13d.rs +395 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix13f.rs +403 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix17d.rs +496 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix17f.rs +504 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix19d.rs +553 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix19f.rs +561 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix2d.rs +289 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix2f.rs +370 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix3d.rs +277 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix3f.rs +288 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix5d.rs +240 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix5f.rs +250 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix7d.rs +272 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix7f.rs +279 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix9d.rs +316 -0
- pxdct-0.3.3/src/avx/type4/mixed_radix9f.rs +323 -0
- pxdct-0.3.3/src/avx/type4/mod.rs +73 -0
- pxdct-0.3.3/src/avx/type4/prime_butterflies.rs +641 -0
- pxdct-0.3.3/src/avx/type4/radix2d.rs +302 -0
- pxdct-0.3.3/src/avx/type4/radix2f.rs +344 -0
- pxdct-0.3.3/src/avx/util.rs +305 -0
- pxdct-0.3.3/src/bidirectional.rs +116 -0
- pxdct-0.3.3/src/butterflies.rs +2507 -0
- pxdct-0.3.3/src/dst3.rs +239 -0
- pxdct-0.3.3/src/dst3_butterfly.rs +444 -0
- pxdct-0.3.3/src/factory_dct1.rs +179 -0
- pxdct-0.3.3/src/factory_dct2.rs +1876 -0
- pxdct-0.3.3/src/factory_dct3.rs +857 -0
- pxdct-0.3.3/src/factory_dct4.rs +974 -0
- pxdct-0.3.3/src/factory_dct7.rs +74 -0
- pxdct-0.3.3/src/factory_dst2.rs +242 -0
- pxdct-0.3.3/src/factory_dst7.rs +97 -0
- pxdct-0.3.3/src/factory_scaled_dct2.rs +312 -0
- pxdct-0.3.3/src/identity.rs +80 -0
- pxdct-0.3.3/src/lib.rs +3248 -0
- pxdct-0.3.3/src/mdct/imdct_fft.rs +372 -0
- pxdct-0.3.3/src/mdct/mdct_fft.rs +330 -0
- pxdct-0.3.3/src/mdct/mod.rs +36 -0
- pxdct-0.3.3/src/mdct/windowed_mdct.rs +839 -0
- pxdct-0.3.3/src/mla.rs +80 -0
- pxdct-0.3.3/src/neon/block_transpose.rs +378 -0
- pxdct-0.3.3/src/neon/fcma_mul_f32.rs +270 -0
- pxdct-0.3.3/src/neon/mod.rs +80 -0
- pxdct-0.3.3/src/neon/mul_f32.rs +190 -0
- pxdct-0.3.3/src/neon/pfa_dct2_remap.rs +177 -0
- pxdct-0.3.3/src/neon/store_d.rs +233 -0
- pxdct-0.3.3/src/neon/transpose.rs +249 -0
- pxdct-0.3.3/src/neon/type2/bf25.rs +324 -0
- pxdct-0.3.3/src/neon/type2/bf49.rs +499 -0
- pxdct-0.3.3/src/neon/type2/bf_radix3.rs +956 -0
- pxdct-0.3.3/src/neon/type2/bf_radix6d.rs +460 -0
- pxdct-0.3.3/src/neon/type2/bf_radix6f.rs +522 -0
- pxdct-0.3.3/src/neon/type2/bf_split_radix2.rs +1218 -0
- pxdct-0.3.3/src/neon/type2/bf_split_radix2d.rs +1021 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix11f.rs +551 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix13f.rs +630 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix2.rs +559 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix3.rs +392 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix3d.rs +368 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix5.rs +339 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix5d.rs +336 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix6.rs +390 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix6d.rs +349 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix7.rs +402 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix7d.rs +398 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix9.rs +458 -0
- pxdct-0.3.3/src/neon/type2/mixed_radix9d.rs +454 -0
- pxdct-0.3.3/src/neon/type2/mod.rs +85 -0
- pxdct-0.3.3/src/neon/type2/split_radixd.rs +456 -0
- pxdct-0.3.3/src/neon/type2/split_radixf.rs +471 -0
- pxdct-0.3.3/src/neon/type3/mixed_radix3d.rs +343 -0
- pxdct-0.3.3/src/neon/type3/mixed_radix3f.rs +309 -0
- pxdct-0.3.3/src/neon/type3/mixed_radix5d.rs +316 -0
- pxdct-0.3.3/src/neon/type3/mixed_radix5f.rs +408 -0
- pxdct-0.3.3/src/neon/type3/mixed_radix7d.rs +388 -0
- pxdct-0.3.3/src/neon/type3/mixed_radix7f.rs +425 -0
- pxdct-0.3.3/src/neon/type3/mixed_radix9d.rs +456 -0
- pxdct-0.3.3/src/neon/type3/mixed_radix9f.rs +500 -0
- pxdct-0.3.3/src/neon/type3/mod.rs +49 -0
- pxdct-0.3.3/src/neon/type3/split_radixd.rs +265 -0
- pxdct-0.3.3/src/neon/type3/split_radixf.rs +295 -0
- pxdct-0.3.3/src/neon/type4/bf3_butterfly.rs +214 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix11d.rs +346 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix11f.rs +349 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix13d.rs +391 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix13f.rs +394 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix17d.rs +495 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix17f.rs +498 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix19d.rs +553 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix19f.rs +556 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix2f.rs +285 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix3d.rs +267 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix3f.rs +269 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix5d.rs +233 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix5f.rs +236 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix7d.rs +265 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix7f.rs +268 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix9d.rs +310 -0
- pxdct-0.3.3/src/neon/type4/mixed_radix9f.rs +313 -0
- pxdct-0.3.3/src/neon/type4/mod.rs +67 -0
- pxdct-0.3.3/src/neon/type4/radix2f.rs +296 -0
- pxdct-0.3.3/src/neon/util.rs +426 -0
- pxdct-0.3.3/src/prime_factors.rs +162 -0
- pxdct-0.3.3/src/pxdct_error.rs +77 -0
- pxdct-0.3.3/src/scaling.rs +547 -0
- pxdct-0.3.3/src/spectrum_mul.rs +172 -0
- pxdct-0.3.3/src/transpose.rs +101 -0
- pxdct-0.3.3/src/twiddles.rs +100 -0
- pxdct-0.3.3/src/two_dims.rs +110 -0
- pxdct-0.3.3/src/type1/butterflies.rs +672 -0
- pxdct-0.3.3/src/type1/dst.rs +215 -0
- pxdct-0.3.3/src/type1/fft.rs +196 -0
- pxdct-0.3.3/src/type1/mod.rs +40 -0
- pxdct-0.3.3/src/type1/split_radix.rs +237 -0
- pxdct-0.3.3/src/type2/bf25.rs +334 -0
- pxdct-0.3.3/src/type2/bf49.rs +402 -0
- pxdct-0.3.3/src/type2/coprime.rs +564 -0
- pxdct-0.3.3/src/type2/dct_fft.rs +242 -0
- pxdct-0.3.3/src/type2/dst_butterflies.rs +550 -0
- pxdct-0.3.3/src/type2/dst_fft.rs +207 -0
- pxdct-0.3.3/src/type2/dst_radix3.rs +334 -0
- pxdct-0.3.3/src/type2/mixed_radix11.rs +580 -0
- pxdct-0.3.3/src/type2/mixed_radix13.rs +659 -0
- pxdct-0.3.3/src/type2/mixed_radix2.rs +212 -0
- pxdct-0.3.3/src/type2/mixed_radix3q.rs +344 -0
- pxdct-0.3.3/src/type2/mixed_radix5.rs +571 -0
- pxdct-0.3.3/src/type2/mixed_radix6.rs +321 -0
- pxdct-0.3.3/src/type2/mixed_radix7.rs +583 -0
- pxdct-0.3.3/src/type2/mixed_radix9.rs +505 -0
- pxdct-0.3.3/src/type2/mod.rs +87 -0
- pxdct-0.3.3/src/type2/power2_butterflies.rs +1388 -0
- pxdct-0.3.3/src/type2/prime_butterflies.rs +4167 -0
- pxdct-0.3.3/src/type2/scaled_butterflies.rs +374 -0
- pxdct-0.3.3/src/type2/split_radix.rs +423 -0
- pxdct-0.3.3/src/type2/util.rs +105 -0
- pxdct-0.3.3/src/type3/bf_f2.rs +672 -0
- pxdct-0.3.3/src/type3/butterflies.rs +1680 -0
- pxdct-0.3.3/src/type3/coprime.rs +445 -0
- pxdct-0.3.3/src/type3/fft.rs +226 -0
- pxdct-0.3.3/src/type3/identity.rs +88 -0
- pxdct-0.3.3/src/type3/mixed_radix3.rs +297 -0
- pxdct-0.3.3/src/type3/mixed_radix5.rs +363 -0
- pxdct-0.3.3/src/type3/mixed_radix7.rs +433 -0
- pxdct-0.3.3/src/type3/mixed_radix9.rs +504 -0
- pxdct-0.3.3/src/type3/mod.rs +65 -0
- pxdct-0.3.3/src/type3/prime_butterflies.rs +604 -0
- pxdct-0.3.3/src/type3/split_radix.rs +399 -0
- pxdct-0.3.3/src/type4/bf_3n.rs +492 -0
- pxdct-0.3.3/src/type4/butterflies.rs +1321 -0
- pxdct-0.3.3/src/type4/dst.rs +229 -0
- pxdct-0.3.3/src/type4/fft.rs +376 -0
- pxdct-0.3.3/src/type4/fft_even.rs +304 -0
- pxdct-0.3.3/src/type4/identity.rs +95 -0
- pxdct-0.3.3/src/type4/mixed_radix2.rs +254 -0
- pxdct-0.3.3/src/type4/mod.rs +88 -0
- pxdct-0.3.3/src/type4/power2_bf.rs +463 -0
- pxdct-0.3.3/src/type4/prime_butterflies.rs +2965 -0
- pxdct-0.3.3/src/type4/radix11.rs +374 -0
- pxdct-0.3.3/src/type4/radix13.rs +414 -0
- pxdct-0.3.3/src/type4/radix17.rs +506 -0
- pxdct-0.3.3/src/type4/radix19.rs +559 -0
- pxdct-0.3.3/src/type4/radix2.rs +257 -0
- pxdct-0.3.3/src/type4/radix3.rs +259 -0
- pxdct-0.3.3/src/type4/radix5.rs +285 -0
- pxdct-0.3.3/src/type4/radix7.rs +312 -0
- pxdct-0.3.3/src/type4/radix9.rs +341 -0
- pxdct-0.3.3/src/type4/utils.rs +47 -0
- pxdct-0.3.3/src/type5/dct_fft.rs +275 -0
- pxdct-0.3.3/src/type5/dst_fft.rs +244 -0
- pxdct-0.3.3/src/type5/mod.rs +63 -0
- pxdct-0.3.3/src/type6/dct_fft.rs +273 -0
- pxdct-0.3.3/src/type6/dst_fft.rs +248 -0
- pxdct-0.3.3/src/type6/mod.rs +33 -0
- pxdct-0.3.3/src/type7/butterflies.rs +863 -0
- pxdct-0.3.3/src/type7/butterflies_dct.rs +313 -0
- pxdct-0.3.3/src/type7/dct_fft.rs +265 -0
- pxdct-0.3.3/src/type7/dst_fft.rs +296 -0
- pxdct-0.3.3/src/type7/mod.rs +40 -0
- pxdct-0.3.3/src/type8/dct_fft.rs +243 -0
- pxdct-0.3.3/src/type8/dst_fft.rs +275 -0
- pxdct-0.3.3/src/type8/mod.rs +33 -0
- pxdct-0.3.3/src/util.rs +549 -0
|
@@ -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
|