Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Zig
Javascript
GIMPLE
Ygen
sway
rust source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
mrustc (master)
rustc 1.0.0
rustc 1.1.0
rustc 1.10.0
rustc 1.11.0
rustc 1.12.0
rustc 1.13.0
rustc 1.14.0
rustc 1.15.1
rustc 1.16.0
rustc 1.17.0
rustc 1.18.0
rustc 1.19.0
rustc 1.2.0
rustc 1.20.0
rustc 1.21.0
rustc 1.22.0
rustc 1.23.0
rustc 1.24.0
rustc 1.25.0
rustc 1.26.0
rustc 1.27.0
rustc 1.27.1
rustc 1.28.0
rustc 1.29.0
rustc 1.3.0
rustc 1.30.0
rustc 1.31.0
rustc 1.32.0
rustc 1.33.0
rustc 1.34.0
rustc 1.35.0
rustc 1.36.0
rustc 1.37.0
rustc 1.38.0
rustc 1.39.0
rustc 1.4.0
rustc 1.40.0
rustc 1.41.0
rustc 1.42.0
rustc 1.43.0
rustc 1.44.0
rustc 1.45.0
rustc 1.45.2
rustc 1.46.0
rustc 1.47.0
rustc 1.48.0
rustc 1.49.0
rustc 1.5.0
rustc 1.50.0
rustc 1.51.0
rustc 1.52.0
rustc 1.53.0
rustc 1.54.0
rustc 1.55.0
rustc 1.56.0
rustc 1.57.0
rustc 1.58.0
rustc 1.59.0
rustc 1.6.0
rustc 1.60.0
rustc 1.61.0
rustc 1.62.0
rustc 1.63.0
rustc 1.64.0
rustc 1.65.0
rustc 1.66.0
rustc 1.67.0
rustc 1.68.0
rustc 1.69.0
rustc 1.7.0
rustc 1.70.0
rustc 1.71.0
rustc 1.72.0
rustc 1.73.0
rustc 1.74.0
rustc 1.75.0
rustc 1.76.0
rustc 1.77.0
rustc 1.78.0
rustc 1.79.0
rustc 1.8.0
rustc 1.80.0
rustc 1.81.0
rustc 1.82.0
rustc 1.83.0
rustc 1.84.0
rustc 1.85.0
rustc 1.86.0
rustc 1.87.0
rustc 1.88.0
rustc 1.89.0
rustc 1.9.0
rustc beta
rustc nightly
rustc-cg-gcc (master)
x86-64 GCCRS (GCC master)
x86-64 GCCRS (GCCRS master)
x86-64 GCCRS 14.1 (GCC assertions)
x86-64 GCCRS 14.1 (GCC)
x86-64 GCCRS 14.2 (GCC assertions)
x86-64 GCCRS 14.2 (GCC)
x86-64 GCCRS 14.3 (GCC assertions)
x86-64 GCCRS 14.3 (GCC)
x86-64 GCCRS 15.1 (GCC assertions)
x86-64 GCCRS 15.1 (GCC)
x86-64 GCCRS 15.2 (GCC assertions)
x86-64 GCCRS 15.2 (GCC)
Options
Source code
use num::{Complex, Float, traits::FloatConst}; pub fn fft128_wrapper(x: [Complex<f32>; 128]) -> [Complex<f32>; 128] { fft128(x) } #[inline] pub fn fft1<T: Float>(x: [Complex<T>; 1]) -> [Complex<T>; 1] { x } #[inline] pub fn fft2<T: Float + FloatConst, A: AsRef<[Complex<T>]>>( input: A, ) -> [Complex<T>; 2usize] { let n = 2usize; let x = input.as_ref(); assert_eq!(&n, &x.len()); let even: [Complex<T>; 1usize] = fft1([x[0usize]]); let odd: [Complex<T>; 1usize] = fft1([x[1usize]]); let t: [Complex<T>; 1usize] = [ Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(0usize).unwrap() / T::from(n).unwrap(), ) * odd[0usize], ]; [even[0usize] + t[0usize], even[0usize] - t[0usize]] } #[inline] pub fn fft4<T: Float + FloatConst, A: AsRef<[Complex<T>]>>( input: A, ) -> [Complex<T>; 4usize] { let n = 4usize; let x = input.as_ref(); assert_eq!(&n, &x.len()); let even: [Complex<T>; 2usize] = fft2([x[0usize], x[2usize]]); let odd: [Complex<T>; 2usize] = fft2([x[1usize], x[3usize]]); let t: [Complex<T>; 2usize] = [ Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(0usize).unwrap() / T::from(n).unwrap(), ) * odd[0usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(1usize).unwrap() / T::from(n).unwrap(), ) * odd[1usize], ]; [ even[0usize] + t[0usize], even[1usize] + t[1usize], even[0usize] - t[0usize], even[1usize] - t[1usize], ] } #[inline] pub fn fft8<T: Float + FloatConst, A: AsRef<[Complex<T>]>>( input: A, ) -> [Complex<T>; 8usize] { let n = 8usize; let x = input.as_ref(); assert_eq!(&n, &x.len()); let even: [Complex<T>; 4usize] = fft4([x[0usize], x[2usize], x[4usize], x[6usize]]); let odd: [Complex<T>; 4usize] = fft4([x[1usize], x[3usize], x[5usize], x[7usize]]); let t: [Complex<T>; 4usize] = [ Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(0usize).unwrap() / T::from(n).unwrap(), ) * odd[0usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(1usize).unwrap() / T::from(n).unwrap(), ) * odd[1usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(2usize).unwrap() / T::from(n).unwrap(), ) * odd[2usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(3usize).unwrap() / T::from(n).unwrap(), ) * odd[3usize], ]; [ even[0usize] + t[0usize], even[1usize] + t[1usize], even[2usize] + t[2usize], even[3usize] + t[3usize], even[0usize] - t[0usize], even[1usize] - t[1usize], even[2usize] - t[2usize], even[3usize] - t[3usize], ] } #[inline] pub fn fft16<T: Float + FloatConst, A: AsRef<[Complex<T>]>>( input: A, ) -> [Complex<T>; 16usize] { let n = 16usize; let x = input.as_ref(); assert_eq!(&n, &x.len()); let even: [Complex<T>; 8usize] = fft8([ x[0usize], x[2usize], x[4usize], x[6usize], x[8usize], x[10usize], x[12usize], x[14usize], ]); let odd: [Complex<T>; 8usize] = fft8([ x[1usize], x[3usize], x[5usize], x[7usize], x[9usize], x[11usize], x[13usize], x[15usize], ]); let t: [Complex<T>; 8usize] = [ Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(0usize).unwrap() / T::from(n).unwrap(), ) * odd[0usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(1usize).unwrap() / T::from(n).unwrap(), ) * odd[1usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(2usize).unwrap() / T::from(n).unwrap(), ) * odd[2usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(3usize).unwrap() / T::from(n).unwrap(), ) * odd[3usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(4usize).unwrap() / T::from(n).unwrap(), ) * odd[4usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(5usize).unwrap() / T::from(n).unwrap(), ) * odd[5usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(6usize).unwrap() / T::from(n).unwrap(), ) * odd[6usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(7usize).unwrap() / T::from(n).unwrap(), ) * odd[7usize], ]; [ even[0usize] + t[0usize], even[1usize] + t[1usize], even[2usize] + t[2usize], even[3usize] + t[3usize], even[4usize] + t[4usize], even[5usize] + t[5usize], even[6usize] + t[6usize], even[7usize] + t[7usize], even[0usize] - t[0usize], even[1usize] - t[1usize], even[2usize] - t[2usize], even[3usize] - t[3usize], even[4usize] - t[4usize], even[5usize] - t[5usize], even[6usize] - t[6usize], even[7usize] - t[7usize], ] } #[inline] pub fn fft32<T: Float + FloatConst, A: AsRef<[Complex<T>]>>( input: A, ) -> [Complex<T>; 32usize] { let n = 32usize; let x = input.as_ref(); assert_eq!(&n, &x.len()); let even: [Complex<T>; 16usize] = fft16([ x[0usize], x[2usize], x[4usize], x[6usize], x[8usize], x[10usize], x[12usize], x[14usize], x[16usize], x[18usize], x[20usize], x[22usize], x[24usize], x[26usize], x[28usize], x[30usize], ]); let odd: [Complex<T>; 16usize] = fft16([ x[1usize], x[3usize], x[5usize], x[7usize], x[9usize], x[11usize], x[13usize], x[15usize], x[17usize], x[19usize], x[21usize], x[23usize], x[25usize], x[27usize], x[29usize], x[31usize], ]); let t: [Complex<T>; 16usize] = [ Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(0usize).unwrap() / T::from(n).unwrap(), ) * odd[0usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(1usize).unwrap() / T::from(n).unwrap(), ) * odd[1usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(2usize).unwrap() / T::from(n).unwrap(), ) * odd[2usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(3usize).unwrap() / T::from(n).unwrap(), ) * odd[3usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(4usize).unwrap() / T::from(n).unwrap(), ) * odd[4usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(5usize).unwrap() / T::from(n).unwrap(), ) * odd[5usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(6usize).unwrap() / T::from(n).unwrap(), ) * odd[6usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(7usize).unwrap() / T::from(n).unwrap(), ) * odd[7usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(8usize).unwrap() / T::from(n).unwrap(), ) * odd[8usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(9usize).unwrap() / T::from(n).unwrap(), ) * odd[9usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(10usize).unwrap() / T::from(n).unwrap(), ) * odd[10usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(11usize).unwrap() / T::from(n).unwrap(), ) * odd[11usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(12usize).unwrap() / T::from(n).unwrap(), ) * odd[12usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(13usize).unwrap() / T::from(n).unwrap(), ) * odd[13usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(14usize).unwrap() / T::from(n).unwrap(), ) * odd[14usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(15usize).unwrap() / T::from(n).unwrap(), ) * odd[15usize], ]; [ even[0usize] + t[0usize], even[1usize] + t[1usize], even[2usize] + t[2usize], even[3usize] + t[3usize], even[4usize] + t[4usize], even[5usize] + t[5usize], even[6usize] + t[6usize], even[7usize] + t[7usize], even[8usize] + t[8usize], even[9usize] + t[9usize], even[10usize] + t[10usize], even[11usize] + t[11usize], even[12usize] + t[12usize], even[13usize] + t[13usize], even[14usize] + t[14usize], even[15usize] + t[15usize], even[0usize] - t[0usize], even[1usize] - t[1usize], even[2usize] - t[2usize], even[3usize] - t[3usize], even[4usize] - t[4usize], even[5usize] - t[5usize], even[6usize] - t[6usize], even[7usize] - t[7usize], even[8usize] - t[8usize], even[9usize] - t[9usize], even[10usize] - t[10usize], even[11usize] - t[11usize], even[12usize] - t[12usize], even[13usize] - t[13usize], even[14usize] - t[14usize], even[15usize] - t[15usize], ] } #[inline] pub fn fft64<T: Float + FloatConst, A: AsRef<[Complex<T>]>>( input: A, ) -> [Complex<T>; 64usize] { let n = 64usize; let x = input.as_ref(); assert_eq!(&n, &x.len()); let even: [Complex<T>; 32usize] = fft32([ x[0usize], x[2usize], x[4usize], x[6usize], x[8usize], x[10usize], x[12usize], x[14usize], x[16usize], x[18usize], x[20usize], x[22usize], x[24usize], x[26usize], x[28usize], x[30usize], x[32usize], x[34usize], x[36usize], x[38usize], x[40usize], x[42usize], x[44usize], x[46usize], x[48usize], x[50usize], x[52usize], x[54usize], x[56usize], x[58usize], x[60usize], x[62usize], ]); let odd: [Complex<T>; 32usize] = fft32([ x[1usize], x[3usize], x[5usize], x[7usize], x[9usize], x[11usize], x[13usize], x[15usize], x[17usize], x[19usize], x[21usize], x[23usize], x[25usize], x[27usize], x[29usize], x[31usize], x[33usize], x[35usize], x[37usize], x[39usize], x[41usize], x[43usize], x[45usize], x[47usize], x[49usize], x[51usize], x[53usize], x[55usize], x[57usize], x[59usize], x[61usize], x[63usize], ]); let t: [Complex<T>; 32usize] = [ Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(0usize).unwrap() / T::from(n).unwrap(), ) * odd[0usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(1usize).unwrap() / T::from(n).unwrap(), ) * odd[1usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(2usize).unwrap() / T::from(n).unwrap(), ) * odd[2usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(3usize).unwrap() / T::from(n).unwrap(), ) * odd[3usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(4usize).unwrap() / T::from(n).unwrap(), ) * odd[4usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(5usize).unwrap() / T::from(n).unwrap(), ) * odd[5usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(6usize).unwrap() / T::from(n).unwrap(), ) * odd[6usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(7usize).unwrap() / T::from(n).unwrap(), ) * odd[7usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(8usize).unwrap() / T::from(n).unwrap(), ) * odd[8usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(9usize).unwrap() / T::from(n).unwrap(), ) * odd[9usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(10usize).unwrap() / T::from(n).unwrap(), ) * odd[10usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(11usize).unwrap() / T::from(n).unwrap(), ) * odd[11usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(12usize).unwrap() / T::from(n).unwrap(), ) * odd[12usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(13usize).unwrap() / T::from(n).unwrap(), ) * odd[13usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(14usize).unwrap() / T::from(n).unwrap(), ) * odd[14usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(15usize).unwrap() / T::from(n).unwrap(), ) * odd[15usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(16usize).unwrap() / T::from(n).unwrap(), ) * odd[16usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(17usize).unwrap() / T::from(n).unwrap(), ) * odd[17usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(18usize).unwrap() / T::from(n).unwrap(), ) * odd[18usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(19usize).unwrap() / T::from(n).unwrap(), ) * odd[19usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(20usize).unwrap() / T::from(n).unwrap(), ) * odd[20usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(21usize).unwrap() / T::from(n).unwrap(), ) * odd[21usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(22usize).unwrap() / T::from(n).unwrap(), ) * odd[22usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(23usize).unwrap() / T::from(n).unwrap(), ) * odd[23usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(24usize).unwrap() / T::from(n).unwrap(), ) * odd[24usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(25usize).unwrap() / T::from(n).unwrap(), ) * odd[25usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(26usize).unwrap() / T::from(n).unwrap(), ) * odd[26usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(27usize).unwrap() / T::from(n).unwrap(), ) * odd[27usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(28usize).unwrap() / T::from(n).unwrap(), ) * odd[28usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(29usize).unwrap() / T::from(n).unwrap(), ) * odd[29usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(30usize).unwrap() / T::from(n).unwrap(), ) * odd[30usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(31usize).unwrap() / T::from(n).unwrap(), ) * odd[31usize], ]; [ even[0usize] + t[0usize], even[1usize] + t[1usize], even[2usize] + t[2usize], even[3usize] + t[3usize], even[4usize] + t[4usize], even[5usize] + t[5usize], even[6usize] + t[6usize], even[7usize] + t[7usize], even[8usize] + t[8usize], even[9usize] + t[9usize], even[10usize] + t[10usize], even[11usize] + t[11usize], even[12usize] + t[12usize], even[13usize] + t[13usize], even[14usize] + t[14usize], even[15usize] + t[15usize], even[16usize] + t[16usize], even[17usize] + t[17usize], even[18usize] + t[18usize], even[19usize] + t[19usize], even[20usize] + t[20usize], even[21usize] + t[21usize], even[22usize] + t[22usize], even[23usize] + t[23usize], even[24usize] + t[24usize], even[25usize] + t[25usize], even[26usize] + t[26usize], even[27usize] + t[27usize], even[28usize] + t[28usize], even[29usize] + t[29usize], even[30usize] + t[30usize], even[31usize] + t[31usize], even[0usize] - t[0usize], even[1usize] - t[1usize], even[2usize] - t[2usize], even[3usize] - t[3usize], even[4usize] - t[4usize], even[5usize] - t[5usize], even[6usize] - t[6usize], even[7usize] - t[7usize], even[8usize] - t[8usize], even[9usize] - t[9usize], even[10usize] - t[10usize], even[11usize] - t[11usize], even[12usize] - t[12usize], even[13usize] - t[13usize], even[14usize] - t[14usize], even[15usize] - t[15usize], even[16usize] - t[16usize], even[17usize] - t[17usize], even[18usize] - t[18usize], even[19usize] - t[19usize], even[20usize] - t[20usize], even[21usize] - t[21usize], even[22usize] - t[22usize], even[23usize] - t[23usize], even[24usize] - t[24usize], even[25usize] - t[25usize], even[26usize] - t[26usize], even[27usize] - t[27usize], even[28usize] - t[28usize], even[29usize] - t[29usize], even[30usize] - t[30usize], even[31usize] - t[31usize], ] } #[inline] pub fn fft128<T: Float + FloatConst, A: AsRef<[Complex<T>]>>( input: A, ) -> [Complex<T>; 128usize] { let n = 128usize; let x = input.as_ref(); assert_eq!(&n, &x.len()); let even: [Complex<T>; 64usize] = fft64([ x[0usize], x[2usize], x[4usize], x[6usize], x[8usize], x[10usize], x[12usize], x[14usize], x[16usize], x[18usize], x[20usize], x[22usize], x[24usize], x[26usize], x[28usize], x[30usize], x[32usize], x[34usize], x[36usize], x[38usize], x[40usize], x[42usize], x[44usize], x[46usize], x[48usize], x[50usize], x[52usize], x[54usize], x[56usize], x[58usize], x[60usize], x[62usize], x[64usize], x[66usize], x[68usize], x[70usize], x[72usize], x[74usize], x[76usize], x[78usize], x[80usize], x[82usize], x[84usize], x[86usize], x[88usize], x[90usize], x[92usize], x[94usize], x[96usize], x[98usize], x[100usize], x[102usize], x[104usize], x[106usize], x[108usize], x[110usize], x[112usize], x[114usize], x[116usize], x[118usize], x[120usize], x[122usize], x[124usize], x[126usize], ]); let odd: [Complex<T>; 64usize] = fft64([ x[1usize], x[3usize], x[5usize], x[7usize], x[9usize], x[11usize], x[13usize], x[15usize], x[17usize], x[19usize], x[21usize], x[23usize], x[25usize], x[27usize], x[29usize], x[31usize], x[33usize], x[35usize], x[37usize], x[39usize], x[41usize], x[43usize], x[45usize], x[47usize], x[49usize], x[51usize], x[53usize], x[55usize], x[57usize], x[59usize], x[61usize], x[63usize], x[65usize], x[67usize], x[69usize], x[71usize], x[73usize], x[75usize], x[77usize], x[79usize], x[81usize], x[83usize], x[85usize], x[87usize], x[89usize], x[91usize], x[93usize], x[95usize], x[97usize], x[99usize], x[101usize], x[103usize], x[105usize], x[107usize], x[109usize], x[111usize], x[113usize], x[115usize], x[117usize], x[119usize], x[121usize], x[123usize], x[125usize], x[127usize], ]); let t: [Complex<T>; 64usize] = [ Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(0usize).unwrap() / T::from(n).unwrap(), ) * odd[0usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(1usize).unwrap() / T::from(n).unwrap(), ) * odd[1usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(2usize).unwrap() / T::from(n).unwrap(), ) * odd[2usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(3usize).unwrap() / T::from(n).unwrap(), ) * odd[3usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(4usize).unwrap() / T::from(n).unwrap(), ) * odd[4usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(5usize).unwrap() / T::from(n).unwrap(), ) * odd[5usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(6usize).unwrap() / T::from(n).unwrap(), ) * odd[6usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(7usize).unwrap() / T::from(n).unwrap(), ) * odd[7usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(8usize).unwrap() / T::from(n).unwrap(), ) * odd[8usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(9usize).unwrap() / T::from(n).unwrap(), ) * odd[9usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(10usize).unwrap() / T::from(n).unwrap(), ) * odd[10usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(11usize).unwrap() / T::from(n).unwrap(), ) * odd[11usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(12usize).unwrap() / T::from(n).unwrap(), ) * odd[12usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(13usize).unwrap() / T::from(n).unwrap(), ) * odd[13usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(14usize).unwrap() / T::from(n).unwrap(), ) * odd[14usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(15usize).unwrap() / T::from(n).unwrap(), ) * odd[15usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(16usize).unwrap() / T::from(n).unwrap(), ) * odd[16usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(17usize).unwrap() / T::from(n).unwrap(), ) * odd[17usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(18usize).unwrap() / T::from(n).unwrap(), ) * odd[18usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(19usize).unwrap() / T::from(n).unwrap(), ) * odd[19usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(20usize).unwrap() / T::from(n).unwrap(), ) * odd[20usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(21usize).unwrap() / T::from(n).unwrap(), ) * odd[21usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(22usize).unwrap() / T::from(n).unwrap(), ) * odd[22usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(23usize).unwrap() / T::from(n).unwrap(), ) * odd[23usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(24usize).unwrap() / T::from(n).unwrap(), ) * odd[24usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(25usize).unwrap() / T::from(n).unwrap(), ) * odd[25usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(26usize).unwrap() / T::from(n).unwrap(), ) * odd[26usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(27usize).unwrap() / T::from(n).unwrap(), ) * odd[27usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(28usize).unwrap() / T::from(n).unwrap(), ) * odd[28usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(29usize).unwrap() / T::from(n).unwrap(), ) * odd[29usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(30usize).unwrap() / T::from(n).unwrap(), ) * odd[30usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(31usize).unwrap() / T::from(n).unwrap(), ) * odd[31usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(32usize).unwrap() / T::from(n).unwrap(), ) * odd[32usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(33usize).unwrap() / T::from(n).unwrap(), ) * odd[33usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(34usize).unwrap() / T::from(n).unwrap(), ) * odd[34usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(35usize).unwrap() / T::from(n).unwrap(), ) * odd[35usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(36usize).unwrap() / T::from(n).unwrap(), ) * odd[36usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(37usize).unwrap() / T::from(n).unwrap(), ) * odd[37usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(38usize).unwrap() / T::from(n).unwrap(), ) * odd[38usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(39usize).unwrap() / T::from(n).unwrap(), ) * odd[39usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(40usize).unwrap() / T::from(n).unwrap(), ) * odd[40usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(41usize).unwrap() / T::from(n).unwrap(), ) * odd[41usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(42usize).unwrap() / T::from(n).unwrap(), ) * odd[42usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(43usize).unwrap() / T::from(n).unwrap(), ) * odd[43usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(44usize).unwrap() / T::from(n).unwrap(), ) * odd[44usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(45usize).unwrap() / T::from(n).unwrap(), ) * odd[45usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(46usize).unwrap() / T::from(n).unwrap(), ) * odd[46usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(47usize).unwrap() / T::from(n).unwrap(), ) * odd[47usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(48usize).unwrap() / T::from(n).unwrap(), ) * odd[48usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(49usize).unwrap() / T::from(n).unwrap(), ) * odd[49usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(50usize).unwrap() / T::from(n).unwrap(), ) * odd[50usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(51usize).unwrap() / T::from(n).unwrap(), ) * odd[51usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(52usize).unwrap() / T::from(n).unwrap(), ) * odd[52usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(53usize).unwrap() / T::from(n).unwrap(), ) * odd[53usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(54usize).unwrap() / T::from(n).unwrap(), ) * odd[54usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(55usize).unwrap() / T::from(n).unwrap(), ) * odd[55usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(56usize).unwrap() / T::from(n).unwrap(), ) * odd[56usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(57usize).unwrap() / T::from(n).unwrap(), ) * odd[57usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(58usize).unwrap() / T::from(n).unwrap(), ) * odd[58usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(59usize).unwrap() / T::from(n).unwrap(), ) * odd[59usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(60usize).unwrap() / T::from(n).unwrap(), ) * odd[60usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(61usize).unwrap() / T::from(n).unwrap(), ) * odd[61usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(62usize).unwrap() / T::from(n).unwrap(), ) * odd[62usize], Complex::exp( Complex::<T>::i() * T::from(-2.0).unwrap() * T::PI() * T::from(63usize).unwrap() / T::from(n).unwrap(), ) * odd[63usize], ]; [ even[0usize] + t[0usize], even[1usize] + t[1usize], even[2usize] + t[2usize], even[3usize] + t[3usize], even[4usize] + t[4usize], even[5usize] + t[5usize], even[6usize] + t[6usize], even[7usize] + t[7usize], even[8usize] + t[8usize], even[9usize] + t[9usize], even[10usize] + t[10usize], even[11usize] + t[11usize], even[12usize] + t[12usize], even[13usize] + t[13usize], even[14usize] + t[14usize], even[15usize] + t[15usize], even[16usize] + t[16usize], even[17usize] + t[17usize], even[18usize] + t[18usize], even[19usize] + t[19usize], even[20usize] + t[20usize], even[21usize] + t[21usize], even[22usize] + t[22usize], even[23usize] + t[23usize], even[24usize] + t[24usize], even[25usize] + t[25usize], even[26usize] + t[26usize], even[27usize] + t[27usize], even[28usize] + t[28usize], even[29usize] + t[29usize], even[30usize] + t[30usize], even[31usize] + t[31usize], even[32usize] + t[32usize], even[33usize] + t[33usize], even[34usize] + t[34usize], even[35usize] + t[35usize], even[36usize] + t[36usize], even[37usize] + t[37usize], even[38usize] + t[38usize], even[39usize] + t[39usize], even[40usize] + t[40usize], even[41usize] + t[41usize], even[42usize] + t[42usize], even[43usize] + t[43usize], even[44usize] + t[44usize], even[45usize] + t[45usize], even[46usize] + t[46usize], even[47usize] + t[47usize], even[48usize] + t[48usize], even[49usize] + t[49usize], even[50usize] + t[50usize], even[51usize] + t[51usize], even[52usize] + t[52usize], even[53usize] + t[53usize], even[54usize] + t[54usize], even[55usize] + t[55usize], even[56usize] + t[56usize], even[57usize] + t[57usize], even[58usize] + t[58usize], even[59usize] + t[59usize], even[60usize] + t[60usize], even[61usize] + t[61usize], even[62usize] + t[62usize], even[63usize] + t[63usize], even[0usize] - t[0usize], even[1usize] - t[1usize], even[2usize] - t[2usize], even[3usize] - t[3usize], even[4usize] - t[4usize], even[5usize] - t[5usize], even[6usize] - t[6usize], even[7usize] - t[7usize], even[8usize] - t[8usize], even[9usize] - t[9usize], even[10usize] - t[10usize], even[11usize] - t[11usize], even[12usize] - t[12usize], even[13usize] - t[13usize], even[14usize] - t[14usize], even[15usize] - t[15usize], even[16usize] - t[16usize], even[17usize] - t[17usize], even[18usize] - t[18usize], even[19usize] - t[19usize], even[20usize] - t[20usize], even[21usize] - t[21usize], even[22usize] - t[22usize], even[23usize] - t[23usize], even[24usize] - t[24usize], even[25usize] - t[25usize], even[26usize] - t[26usize], even[27usize] - t[27usize], even[28usize] - t[28usize], even[29usize] - t[29usize], even[30usize] - t[30usize], even[31usize] - t[31usize], even[32usize] - t[32usize], even[33usize] - t[33usize], even[34usize] - t[34usize], even[35usize] - t[35usize], even[36usize] - t[36usize], even[37usize] - t[37usize], even[38usize] - t[38usize], even[39usize] - t[39usize], even[40usize] - t[40usize], even[41usize] - t[41usize], even[42usize] - t[42usize], even[43usize] - t[43usize], even[44usize] - t[44usize], even[45usize] - t[45usize], even[46usize] - t[46usize], even[47usize] - t[47usize], even[48usize] - t[48usize], even[49usize] - t[49usize], even[50usize] - t[50usize], even[51usize] - t[51usize], even[52usize] - t[52usize], even[53usize] - t[53usize], even[54usize] - t[54usize], even[55usize] - t[55usize], even[56usize] - t[56usize], even[57usize] - t[57usize], even[58usize] - t[58usize], even[59usize] - t[59usize], even[60usize] - t[60usize], even[61usize] - t[61usize], even[62usize] - t[62usize], even[63usize] - t[63usize], ] }
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree