|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Fast Fourier Transform (FFT) and DSP Toolkit. More...
#include <fft.H>
Classes | |
| struct | AnalogPrototype |
| Parameters for an analog filter prototype (S-domain). More... | |
| struct | BalancedPolynomial |
| class | BatchedISTFTProcessor |
| Stateful multichannel ISTFT processor with one synthesizer per channel. More... | |
| class | BatchedSTFTProcessor |
| Stateful multichannel STFT processor with one analyzer per channel. More... | |
| struct | BiquadSection |
| A stable Second-Order Section (SOS) building block. More... | |
| struct | CoherenceEstimate |
| Magnitude-squared coherence sampled in Hertz. More... | |
| struct | CrossSpectralDensity |
| One-sided cross-spectral density estimate sampled in Hertz. More... | |
| struct | FrequencyResponse |
| Discrete frequency response sampled on a fixed angular grid. More... | |
| struct | GainMarginInfo |
| Gain-margin estimate around a phase crossover. More... | |
| struct | IIRCoefficients |
| Coefficients for an Infinite Impulse Response (IIR) filter. More... | |
| struct | Is_Std_Complex |
| struct | Is_Std_Complex< std::complex< T > > |
| struct | ISTFTOptions |
| Options for ISTFT reconstruction. More... | |
| class | ISTFTProcessor |
| Stateful ISTFT processor for chunked frame-by-frame synthesis. More... | |
| struct | JacobiValues |
| Value triplet for Jacobi elliptic functions (sn, cn, dn). More... | |
| class | LFilter |
| Stateful direct-form II transposed IIR filter. More... | |
| class | LFilterBank |
| Stateful bank of direct-form II transposed IIR filters. More... | |
| class | OverlapAdd |
| Reusable overlap-add convolver for long real sequences. More... | |
| class | OverlapAddBank |
| Multichannel overlap-add convolver with one shared kernel FFT. More... | |
| class | OverlapSave |
| Reusable overlap-save convolver for streaming real FIR filtering. More... | |
| class | PartitionedConvolver |
| Uniform partitioned FIR convolver for low-latency streaming. More... | |
| struct | PhaseMarginInfo |
| Phase-margin estimate around a gain crossover. More... | |
| class | Plan |
| Precomputed FFT plan for repeated transforms of the same size. More... | |
| struct | PoleZeroPair |
| Greedy nearest-neighbor pole/zero pairing entry. More... | |
| struct | PolynomialEvaluation |
| struct | PowerSpectralDensity |
| One-sided power spectral density estimate sampled in Hertz. More... | |
| struct | ResamplePolyOptions |
| Options for default polyphase resampling filter design. More... | |
| struct | RootGroup |
| Rationale: Group of one or more roots (typically a conjugate pair) sharing a common geometric center. More... | |
| struct | SeriesEvaluation |
| class | SOSFilter |
| Stateful cascade of second-order sections. More... | |
| class | SOSFilterBank |
| Stateful bank of SOS cascades, one per channel. More... | |
| struct | STFTOptions |
| Options for STFT analysis. More... | |
| class | STFTProcessor |
| Stateful STFT processor for chunked real-time analysis. More... | |
| struct | TensorLayout |
| Layout descriptor for a flat tensor buffer. More... | |
| struct | TransferTerms |
| Internal storage for complex transfer function evaluation terms. More... | |
| struct | WeightedFrequencyGrid |
| Frequency-domain grid with target values and importance weights. More... | |
| struct | WelchOptions |
| Options for Welch PSD, CSD, and coherence estimation. More... | |
Public Types | |
| enum class | SimdBackend { scalar , avx2 , neon } |
| SIMD hardware acceleration backends. More... | |
| enum class | SimdPreference { automatic , scalar_only , avx2_only , neon_only } |
| User-selected SIMD dispatch preference. More... | |
| enum class | SpectrogramLayout { channel_frame_bin , frame_channel_bin } |
| Logical layout for multichannel spectrograms. More... | |
| using | value_type = Real |
| using | Complex = std::complex< Real > |
Static Private Member Functions | |
| static Complex | twiddle_at (const Real angle, const size_t index) |
| Computes a single twiddle factor exp(j * angle * index). | |
| static Real | transform_stages (const size_t n) noexcept |
| Returns log2(N) stages, used for numerical error scaling. | |
| static Real | real_projection_tolerance (const Complex &value, const size_t n) noexcept |
| Rationale: Estimates the maximum expected numerical noise for a value after an N-point transform, used to validate real projections. | |
| static Real | hermitian_tolerance (const Complex &lhs, const Complex &rhs, const size_t n) noexcept |
| Rationale: Numerical tolerance for Hermitian symmetry checks. | |
| static void | validate_real_spectrum (const Array< Complex > &input, const char *ctx) |
| Rationale: Ensures a complex spectrum has the Hermitian symmetry (X[k] = X[N-k]*) required to be the transform of a real signal. | |
| static Array< Real > | cosine_sum_window (const size_t n, const Real a0, const Real a1=Real(0), const Real a2=Real(0)) |
| Internal generator for generalized cosine windows (Hann, Hamming, Blackman). | |
| template<typename T > | |
| static Array< T > | reverse_copy (const Array< T > &input) |
| Functional reverse. | |
| template<typename T > | |
| static Array< T > | prefix_copy (const Array< T > &input, const size_t length) |
| Functional prefix extraction. | |
| template<typename T > | |
| static Array< T > | slice_copy (const Array< T > &input, const size_t offset, const size_t length) |
| Functional slice extraction. | |
| static size_t | default_filtfilt_pad_length (const size_t signal_size, const size_t coeff_size) noexcept |
| Rationale: Rule-of-thumb for filtfilt padding to allow transients to decay. | |
| static Array< Real > | reflect_pad_signal (const Array< Real > &signal, const size_t pad_len) |
| Rationale: Applies reflection padding at signal edges to reduce boundary artifacts during filtering. | |
| static Array< Real > | zero_pad_edges (const Array< Real > &signal, const size_t left_pad, const size_t right_pad) |
| functional zero-padding at both ends. | |
| static Array< Real > | overlap_profile (const Array< Real > &analysis_window, const Array< Real > &synthesis_window, const size_t hop_size, const char *ctx) |
| Rationale: Computes the effective window product for a windowed overlap-add process to validate reconstruction constraints. | |
| static bool | overlap_profile_has_nola (const Array< Real > &profile) noexcept |
| Rationale: Non-zero Overlap-Add (NOLA) ensures the signal can be reconstructed (it's never multiplied by zero in all frames). | |
| static bool | overlap_profile_has_cola (const Array< Real > &profile) noexcept |
| Rationale: Constant Overlap-Add (COLA) ensures that OLA reconstruction has no amplitude modulation artifacts. | |
| static void | validate_overlap_constraints (const Array< Real > &analysis_window, const Array< Real > &synthesis_window, const size_t hop_size, const bool validate_nola, const bool validate_cola, const char *ctx) |
| Rationale: Internal validator for STFT/ISTFT windowing parameters. | |
| static Array< size_t > | frame_offsets_impl (const size_t signal_size, const size_t frame_size, const size_t hop_size, const bool pad_end, const char *ctx) |
| Computes framing offsets. | |
| static Real | max_abs_value (const Array< Real > &input) noexcept |
| L-infinity norm. | |
| static Real | sum_values (const Array< Real > &input) noexcept |
| Sum reduction. | |
| static Real | sum_squares (const Array< Real > &input) noexcept |
| L2 norm squared. | |
| static Array< Real > | demean_copy (const Array< Real > &input) |
| Returns a copy with DC offset removed. | |
| static Array< Real > | one_sided_frequency_grid (const size_t fft_size, const Real sample_rate, const char *ctx) |
| Maps bin indices to frequency in Hz. | |
| static bool | is_one_sided_interior_bin (const size_t bin, const size_t fft_size) noexcept |
| Identifies non-redundant spectrum bins (excluding DC and Nyquist). | |
| static size_t | resolve_welch_hop_size (const WelchOptions &options, const size_t frame_size, const char *ctx) |
| Default hop size for Welch analysis (50% overlap). | |
| static size_t | resolve_welch_fft_size (const WelchOptions &options, const size_t frame_size, const char *ctx) |
| Default FFT size for Welch analysis (zero-padded to power of 2). | |
| static Array< Array< Real > > | prepare_welch_frames (const Array< Real > &signal, const Array< Real > &window, const WelchOptions &options, const char *ctx) |
| Rationale: Encapsulates frame extraction, detrending and windowing common to Welch and other spectral estimators. | |
| template<typename Density > | |
| static void | apply_one_sided_density_scaling (Density &value, const size_t bin, const size_t fft_size) noexcept |
| Rationale: Multiplies spectral densities by 2 for interior bins to account for energy in the omitted negative frequency half. | |
| static size_t | effective_coeff_length (const Array< Real > &input) noexcept |
| Returns length excluding trailing insignificant zeros. | |
| static Array< Real > | scaled_copy (const Array< Real > &input, const Real factor) |
| Scalar scaling. | |
| static Real | scaled_tolerance (const Real reference, const Real multiplier=Real(256)) noexcept |
| static Real | series_zero_tolerance (const size_t coeff_count, const Real multiplier=Real(256)) noexcept |
| static IIRCoefficients | normalize_iir_coefficients (const Array< Real > &numerator, const Array< Real > &denominator, const char *ctx) |
| static Array< Real > | solve_dense_system (Array< Real > matrix, Array< Real > rhs, const size_t n, const char *ctx) |
| static Array< Real > | iir_steady_state (const Array< Real > &numerator, const Array< Real > &denominator, const char *ctx) |
| static Array< Real > | iir_filter_impl (const Array< Real > &signal, const Array< Real > &numerator, const Array< Real > &denominator, const Array< Real > &initial_state, const char *ctx, Array< Real > *final_state=nullptr) |
| static Array< Real > | iir_filtfilt_impl (const Array< Real > &signal, const Array< Real > &numerator, const Array< Real > &denominator, const char *ctx) |
| static Array< Real > | sos_filtfilt_impl (const Array< Real > &signal, const Array< BiquadSection > §ions, const char *ctx) |
| template<typename T > | |
| static void | append_all (Array< T > &dst, const Array< T > &src) |
| template<typename T > | |
| static void | drop_prefix (Array< T > &input, const size_t count) |
| static constexpr size_t | saturating_product (const size_t lhs, const size_t rhs) noexcept |
| static bool | should_parallelize_batch_work (ThreadPool *pool, const size_t batch_size, const size_t transform_size, const size_t min_work=8192) noexcept |
| static size_t | count_non_empty_real_batch (const Array< Array< Real > > &batch) noexcept |
| static size_t | recommended_cache_tile_size (const size_t transform_size, const size_t batch_size, ThreadPool *pool) noexcept |
| static Array< Real > | build_padded_frame_from_prefix (const Array< Real > &input, const size_t frame_size) |
| static size_t | validate_stft_options (const Array< Real > &window, const STFTOptions &options, const char *ctx) |
| static Array< Complex > | prepare_stft_frame_input (const Array< Real > &frame, const Array< Real > &window, const size_t fft_size) |
| static Array< Array< Complex > > | transform_stft_frames (const Array< Array< Real > > &frames, const Array< Real > &window, const size_t fft_size, const Plan &plan, ThreadPool *pool, const size_t chunk_size) |
| static Array< Array< Complex > > | stft_impl (const Array< Real > &signal, const Array< Real > &window, const STFTOptions &options, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| static Complex | evaluate_transfer_at (const Array< Real > &numerator, const Array< Real > &denominator, const Real omega, const char *ctx) |
| static FrequencyResponse | freqz_impl (const Array< Real > &numerator, const Array< Real > &denominator, const size_t num_points, const bool whole, const char *ctx) |
| static SeriesEvaluation | evaluate_series_at_unit_circle (const Array< Real > &coefficients, const Real omega, const char *ctx) |
| static PolynomialEvaluation | evaluate_polynomial_and_derivative (const Array< Real > &coefficients, const Complex &x, const char *ctx) |
| static std::pair< Array< Real >, Real > | divide_polynomial_by_linear_root (const Array< Real > &coefficients, const Real root, const char *ctx) |
| static std::pair< Array< Real >, Array< Complex > > | extract_repeated_unit_roots (const Array< Real > &coefficients, const char *ctx) |
| static Real | polynomial_root_upper_bound (const Array< Real > &monic) noexcept |
| static Real | polynomial_root_lower_bound (const Array< Real > &monic) noexcept |
| static BalancedPolynomial | balance_polynomial_for_roots (const Array< Real > &coefficients, const char *ctx) |
| static Array< Complex > | initialize_root_guesses (const Array< Real > &coefficients) |
| static bool | try_aberth_ehrlich_roots (const Array< Real > &coefficients, const Real tol, Array< Complex > &roots, const size_t max_iterations=192) noexcept |
| static bool | try_durand_kerner_roots (const Array< Real > &coefficients, const Real tol, Array< Complex > &roots, const size_t max_iterations=192) noexcept |
| static void | polish_roots_with_newton (const Array< Real > &coefficients, Array< Complex > &roots, const Real tol, const size_t iterations) noexcept |
| static void | enforce_real_polynomial_symmetry (Array< Complex > &roots, const Real tol) noexcept |
| static bool | roots_pass_residual_check (const Array< Real > &coefficients, const Array< Complex > &roots, const Real tol) noexcept |
| static bool | try_laguerre_roots (const Array< Real > &coefficients, const Real tol, Array< Complex > &roots) noexcept |
| static Array< Complex > | polynomial_roots_impl (const Array< Real > &coefficients, const char *ctx) |
| Rationale: Master implementation for polynomial root-finding. | |
| static Array< Real > | trim_leading_zeros_copy (const Array< Real > &input) noexcept |
| Rationale: Copy utility that removes leading zero coefficients, effectively normalizing the polynomial degree. | |
| static TransferTerms | evaluate_transfer_terms_at (const Array< Real > &numerator, const Array< Real > &denominator, const Real omega, const char *ctx) |
| implementation helper for evaluating H(z) and its derivatives on the unit circle. | |
| static Array< Real > | analytic_group_delay_impl (const Array< Real > &numerator, const Array< Real > &denominator, const size_t num_points, const bool whole, const char *ctx) |
| Rationale: Analytic calculation of group delay (-dphi/domega) using the complex derivative of the transfer function, which is more accurate than numerical differentiation. | |
| static Array< Real > | analytic_sos_group_delay_impl (const Array< BiquadSection > §ions, const FrequencyResponse &response, const char *ctx) |
| implementation of analytic group delay for SOS cascades. | |
| static Array< Real > | analytic_phase_delay_impl (const Array< Real > &numerator, const Array< Real > &denominator, const size_t num_points, const bool whole, const char *ctx) |
| implementation of analytic phase delay calculation. | |
| static Real | max_root_radius (const Array< Complex > &roots) noexcept |
| Returns the magnitude of the largest root in the set. | |
| static Array< PoleZeroPair > | pole_zero_pairs_impl (const Array< Complex > &zeros, const Array< Complex > &poles) |
| Rationale: Matches zeros and poles into pairs by minimizing Euclidean distance, aiding in SOS decomposition. | |
| static Real | minimum_cancellation_distance_impl (const Array< PoleZeroPair > &pairs) noexcept |
| Rationale: Estimates the minimum distance between any matched pole and zero to identify potential cancellations. | |
| template<typename T > | |
| static Array< T > | polynomial_multiply (const Array< T > &lhs, const Array< T > &rhs) |
| Rationale: Standard polynomial multiplication (O(N*M)). | |
| template<typename T > | |
| static void | add_scaled_polynomial (Array< T > &dst, const Array< T > &src, const T scale) |
| Rationale: In-place addition of a scaled polynomial. | |
| static Real | integer_power (const Real base, const size_t exponent) noexcept |
| Fast integer power utility. | |
| static Array< Real > | signed_binomial (const size_t power, const Real sign) |
| Rationale: Computes (1 + sign*x)^power coefficients. | |
| static Array< Real > | bilinear_substitute_polynomial (const Array< Real > &analog, const size_t order, const Real sample_rate, const char *ctx) |
| Rationale: Performs the bilinear substitution mapping from the S-plane to the Z-domain: H(z) = H(s)|s=2*fs*(z-1)/(z+1). | |
| static Array< Complex > | polynomial_from_roots_complex (const Array< Complex > &roots) |
| Rationale: Polynomial expansion (z-r1)(z-r2)... | |
| static Array< Real > | trim_polynomial_leading_zeros (const Array< Real > &input, const char *ctx) |
| Validation wrapper for trim_leading_zeros_copy. | |
| static Array< Real > | polynomial_power (const Array< Real > &poly, const size_t exponent, const char *ctx) |
| implementation of P(x)^n via successive multiplication. | |
| static Array< Real > | substitute_rational_polynomial (const Array< Real > &poly, const Array< Real > &numerator, const Array< Real > &denominator, const char *ctx) |
| Rationale: Evaluates P(N(z)/D(z)) by scaling by the common denominator D(z)^degree and evaluating the resulting nested polynomial expansion. | |
| static IIRCoefficients | apply_analog_rational_transform (const Array< Real > &numerator, const Array< Real > &denominator, const Array< Real > &map_numerator, const Array< Real > &map_denominator, const char *ctx) |
| Rationale: Transforms an analog transfer function H(s) via rational substitution s = N(z)/D(z), as used in bilinear or frequency-selective mappings. | |
| static Array< Real > | real_polynomial_from_roots (const Array< Complex > &roots, const char *ctx) |
| Rationale: Constructs a real-coefficient polynomial from a set of complex roots, verifying that roots appear in conjugate pairs. | |
| static Complex | group_center (const Array< Complex > &roots) noexcept |
| Geometric center of a root set. | |
| static Array< Complex > | enforce_conjugate_symmetry (const Array< Complex > &roots) |
| Enforce conjugate symmetry on roots of a real-coefficient polynomial. | |
| static Array< RootGroup > | root_groups_impl (const Array< Complex > &raw_roots, const char *ctx) |
| Rationale: Partitions a set of roots into real sections and conjugate pairs to facilitate SOS decomposition. | |
| static BiquadSection | section_from_coefficients (const Array< Real > &numerator, const Array< Real > &denominator, const char *ctx) |
| Rationale: Converts generic IIR coefficients into a stabilized BiquadSection structure, enforcing the second-order limit. | |
| static IIRCoefficients | bilinear_transform_impl (const Array< Real > &analog_numerator, const Array< Real > &analog_denominator, const Real sample_rate, const char *ctx) |
| implementation helper for the bilinear transform. | |
| static Real | prewarp_frequency (const Real cutoff_frequency, const Real sample_rate, const char *ctx) |
| Rationale: Prewarps an analog cutoff frequency to compensate for the non-linear frequency mapping of the bilinear transform. | |
| static Real | comp_ellint_1_impl (const Real k) |
| static Real | carlson_rf_impl (Real x, Real y, Real z) |
| static Real | ellint_1_impl (const Real k, const Real phi) |
| static Real | complete_elliptic_first_kind (const Real modulus, const char *ctx) |
| Rationale: Complete elliptic integral K(k) using the modulus convention required by elliptic filter design. | |
| static JacobiValues | jacobi_sn_cn_dn (const Real argument, const Real modulus, const char *ctx) |
| Rationale: Simultanous calculation of Jacobi sn, cn, dn functions using the descending Landen transformation or AGM. | |
| static Real | inverse_jacobi_sc (const Real value, const Real modulus, const char *ctx) |
| static Real | solve_elliptic_selectivity_modulus (const Real k1, const size_t order, const char *ctx) |
| static Complex | elliptic_cd_minus_imaginary (const Real u, const Real v, const Real modulus, const char *ctx) |
| static AnalogPrototype | butterworth_prototype (const size_t order, const char *ctx) |
| static AnalogPrototype | chebyshev1_prototype (const size_t order, const Real ripple_db, const char *ctx) |
| static AnalogPrototype | chebyshev2_prototype (const size_t order, const Real attenuation_db, const char *ctx) |
| static AnalogPrototype | elliptic_prototype (const size_t order, const Real ripple_db, const Real attenuation_db, const char *ctx) |
| static Real | evaluate_analog_transfer_magnitude (const Array< Real > &numerator, const Array< Real > &denominator, const Real omega, const char *ctx) |
| Rationale: Direct evaluation of |H(j*omega)| for an analog transfer function. | |
| static Array< Real > | reverse_bessel_polynomial (const size_t order, const char *ctx) |
| Rationale: Generates coefficients for the Reverse Bessel Polynomial used in Bessel filter prototypes. | |
| static AnalogPrototype | bessel_prototype (const size_t order, const char *ctx) |
| implementation of the Bessel filter analog prototype. | |
| static Array< BiquadSection > | design_low_high_sections (const AnalogPrototype &prototype, const Real cutoff_frequency, const Real sample_rate, const bool highpass, const char *ctx) |
| internal helper for designing standard lowpass/highpass SOS filters. | |
| static Array< BiquadSection > | design_prototype_sections (const AnalogPrototype &prototype, const size_t order, const Real cutoff_frequency, const Real sample_rate, const bool highpass, const char *ctx) |
| static std::pair< Real, Real > | prewarp_band_edges (const Real low_cutoff_frequency, const Real high_cutoff_frequency, const Real sample_rate, const char *ctx) |
| Prewarps a pair of band edges for bilinear transform. | |
| static Array< BiquadSection > | transfer_function_to_sections (const IIRCoefficients &coeffs, const Array< RootGroup > &zero_groups, const char *ctx) |
| Rationale: Decomposes a general IIR transfer function into a cascade of Second-Order Sections (SOS) by pairing poles and zeros. | |
| static Array< BiquadSection > | transfer_function_to_sections (const Array< Real > &numerator, const Array< Real > &denominator, const char *ctx) |
| overload of transfer_function_to_sections using raw coefficients. | |
| static Array< BiquadSection > | design_bandstop_sections_without_numerator_roots (const AnalogPrototype &prototype, const size_t order, const Real low_cutoff_frequency, const Real high_cutoff_frequency, const Real sample_rate, const char *ctx) |
| Specialization for band-stop designs to handle zeros explicitly. | |
| static Array< BiquadSection > | design_transformed_sections (const AnalogPrototype &prototype, const Array< Real > &map_numerator, const Array< Real > &map_denominator, const Real sample_rate, const char *ctx) |
| Generic implementation for designing transformed SOS cascades. | |
| static Real | modified_bessel_i0 (const Real x) noexcept |
| Standard Zeroth-order Modified Bessel function of the first kind. | |
| static Real | normalized_sinc (const Real x) noexcept |
| Standard normalized sinc function sin(pi*x)/(pi*x). | |
| static Real | evaluate_fir_response_magnitude (const Array< Real > &coeffs, const Real omega, const char *ctx) |
| implementation helper for FIR frequency response magnitude. | |
| static void | normalize_fir_at_omega (Array< Real > &coeffs, const Real omega, const char *ctx) |
Normalizes FIR coefficients to have unit gain at frequency omega. | |
| static Array< Real > | firwin_lowpass_impl (const size_t num_taps, const Real cutoff_frequency, const Real sample_rate, const Array< Real > &window, const char *ctx) |
| implementation of the window-method FIR design. | |
| static Real | integrate_cos_basis (const Real omega_lo, const Real omega_hi, const size_t harmonic) noexcept |
| Rationale: Evaluates integral of cos(k*w) from omega_lo to omega_hi. | |
| static Real | integrate_cos_product (const Real omega_lo, const Real omega_hi, const size_t lhs_harmonic, const size_t rhs_harmonic) noexcept |
| Rationale: Evaluates integral of cos(m*w)*cos(n*w). | |
| static Real | integrate_offset_cos_basis (const Real omega_lo, const Real omega_hi, const size_t harmonic) noexcept |
| implementation helper for firls slope integration. | |
| static Real | integrate_linear_cos_basis (const Real omega_lo, const Real omega_hi, const Real desired_lo, const Real desired_hi, const size_t harmonic) noexcept |
| implementation helper for firls linear band integration. | |
| static Array< Real > | firls_impl (const size_t num_taps, const Array< Real > &bands, const Array< Real > &desired, const Real sample_rate, const Array< Real > &weights, const char *ctx) |
| implementation of Least-Squares FIR design. | |
| static WeightedFrequencyGrid | build_weighted_frequency_grid (const size_t num_taps, const Array< Real > &bands, const Array< Real > &desired, const Real sample_rate, const Array< Real > &weights, const size_t grid_density, const char *ctx) |
| static Real | evaluate_cosine_series (const Array< Real > &coefficients, const Real omega) noexcept |
| static Array< size_t > | evenly_spaced_extrema (const size_t grid_size, const size_t extremal_count) |
| static Array< size_t > | choose_remez_extrema (const Array< Real > &weighted_error, const size_t required_count, const char *ctx) |
| static Array< Real > | solve_remez_cosine_series (const Array< Real > &omega, const Array< Real > &desired, const Array< Real > &weight, const Array< size_t > &extrema, const size_t half_order, const char *ctx) |
| static Array< Real > | remez_impl (const size_t num_taps, const Array< Real > &bands, const Array< Real > &desired, const Real sample_rate, const Array< Real > &weights, const size_t grid_density, const size_t max_iterations, const char *ctx) |
| static Real | interpolate_crossing (const Real x0, const Real y0, const Real x1, const Real y1, const Real target) noexcept |
| static Real | interpolate_value_at (const Real x0, const Real y0, const Real x1, const Real y1, const Real x) noexcept |
| static Real | align_phase_near_reference (const Real raw_phase, const Real reference_phase) noexcept |
| template<typename Evaluator > | |
| static Real | refine_scalar_crossing (const Evaluator &evaluator, const Real x0, const Real y0, const Real x1, const Real y1, const Real target) |
| static Complex | evaluate_sos_transfer_at (const Array< BiquadSection > §ions, const Real omega, const char *ctx) |
| static PhaseMarginInfo | phase_margin_impl (const FrequencyResponse &response) |
| static GainMarginInfo | gain_margin_impl (const FrequencyResponse &response) |
| implementation helper for Gain Margin calculation. | |
| template<typename Evaluator > | |
| static PhaseMarginInfo | phase_margin_refined_impl (const FrequencyResponse &response, const Evaluator &evaluator) |
| implementation of refined Phase Margin calculation using analytic evaluation. | |
| template<typename Evaluator > | |
| static GainMarginInfo | gain_margin_refined_impl (const FrequencyResponse &response, const Evaluator &evaluator) |
| implementation of refined Gain Margin calculation using analytic evaluation. | |
| static Array< Real > | unwrap_phase (const Array< Real > &phase) |
| implementation of phase unwrapping (removes +/- 2*pi jumps). | |
| static Array< Real > | group_delay_impl (const FrequencyResponse &response) |
| implementation of numeric group delay calculation. | |
| static Array< Real > | phase_delay_impl (const FrequencyResponse &response) |
| implementation of numeric phase delay calculation. | |
| static void | validate_istft_configuration (const Array< Real > &analysis_window, const Array< Real > &synthesis_window, const size_t fft_size, const ISTFTOptions &options, const char *ctx) |
| Rationale: Validates and normalizes ISTFT parameters, checking window constraints and FFT size. | |
| static Array< Real > | istft_impl (const Array< Array< Complex > > &spectrogram, const Array< Real > &analysis_window, const Array< Real > &synthesis_window, const ISTFTOptions &options, ThreadPool *pool, const size_t chunk_size) |
| implementation of the Inverse Short-Time Fourier Transform. | |
| static Array< Complex > | zero_padded_copy (const Array< Complex > &input, const size_t n) |
Returns a copy of input zero-padded to size n. | |
| static Array< Real > | zero_padded_copy (const Array< Real > &input, const size_t n) |
Returns a copy of input zero-padded to size n. | |
| static void | trim_to_size (Array< Complex > &input, const size_t n) |
Trims input to size n. | |
| template<typename T , typename Container > requires requires(const Container & c) { std::begin(c); std::end(c); requires std::convertible_to<decltype(*std::begin(c)), T>; } | |
| static Array< T > | to_array (const Container &input) |
| template<typename Container > requires Is_Complex_Container<Container> | |
| static Array< Complex > | build_complex_input (const Container &input) |
| template<typename Container > requires Is_Real_Container<Container> | |
| static Array< Real > | build_real_input (const Container &input) |
| static size_t | tensor_element_count (const Array< size_t > &shape, const char *ctx) |
| static Array< size_t > | row_major_strides (const Array< size_t > &shape, const char *ctx) |
| static size_t | tensor_max_offset (const Array< size_t > &shape, const Array< size_t > &strides, const char *ctx) |
| static TensorLayout | normalize_tensor_layout (const Array< Complex > &data, const TensorLayout &layout, const char *ctx) |
| Rationale: Validates a tensor layout and infers row-major strides if they are not provided. | |
| static Array< size_t > | normalize_axes (const Array< size_t > &axes, const size_t rank, const char *ctx) |
| Rationale: Validates axis indices against the tensor rank and ensures no axis is specified more than once. | |
| static Array< size_t > | axis_base_offsets (const Array< size_t > &shape, const Array< size_t > &strides, const size_t axis) |
| Rationale: Generates the base memory offsets for all 1D slices along a specific axis in a multidimensional tensor. | |
| static Array< Complex > | gather_axis_slice (const Array< Complex > &data, const size_t base_offset, const size_t axis_length, const size_t axis_stride) |
| Rationale: Extracts a non-contiguous slice of data along a tensor axis into a contiguous array for FFT processing. | |
| static void | scatter_axis_slice (Array< Complex > &data, const size_t base_offset, const size_t axis_stride, const Array< Complex > &slice) |
| Rationale: Writes back a transformed contiguous slice into its original (potentially non-contiguous) memory locations. | |
| static void | transform_axis_impl (Array< Complex > &data, const TensorLayout &layout, const size_t axis, const bool invert, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| Rationale: Internal implementation of a 1D FFT along a single tensor axis. | |
| static void | transform_axes_impl (Array< Complex > &data, const TensorLayout &layout, const Array< size_t > &axes, const bool invert, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| Rationale: Internal implementation of a multi-axis tensor transform. | |
| static Array< size_t > | matrix_shape (const Array< Array< Complex > > &input, const char *ctx) |
| Rationale: Validates that an Array of Arrays represents a rectangular matrix and returns its {rows, cols} shape. | |
| static Array< Complex > | flatten_matrix_row_major (const Array< Array< Complex > > &input, const char *ctx) |
| Rationale: Flattens a 2D matrix into a 1D row-major array. | |
| static Array< Array< Complex > > | reshape_matrix_row_major (const Array< Complex > &input, const size_t rows, const size_t cols, const char *ctx) |
| Rationale: Reshapes a 1D row-major array back into a 2D matrix. | |
| static Array< size_t > | tensor3_shape (const Array< Array< Array< Complex > > > &input, const char *ctx) |
| Rationale: Validates that a nested Array represents a 3D tensor and returns its {d0, d1, d2} shape. | |
| static Array< Complex > | flatten_tensor3_row_major (const Array< Array< Array< Complex > > > &input, const char *ctx) |
| Rationale: Flattens a 3D tensor into a 1D row-major array. | |
| static Array< Array< Array< Complex > > > | reshape_tensor3_row_major (const Array< Complex > &input, const size_t dim0, const size_t dim1, const size_t dim2, const char *ctx) |
| Rationale: Reshapes a 1D row-major array back into a 3D tensor. | |
| static Array< Array< Array< Complex > > > | transpose_spectrogram_layout_impl (const Array< Array< Array< Complex > > > &input, const SpectrogramLayout source, const SpectrogramLayout target, const char *ctx) |
| Rationale: Internal implementation for transposing between multichannel spectrogram layouts (e.g. | |
| static Array< Complex > | lift_real_input (const Array< Real > &input) |
| Lifts a real-valued input array to the complex domain. | |
| static Array< Complex > | transform_real_optimized (const Array< Real > &input, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| Rationale: Optimized FFT for real signals of size N (power-of-two). | |
| template<typename InversePackedTransform > | |
| static Array< Real > | inverse_transform_real_optimized_impl (const Array< Complex > &input, const char *ctx, ThreadPool *pool, const size_t chunk_size, InversePackedTransform inverse_packed) |
| Rationale: Optimized Inverse FFT for real signals of size N (power-of-two). | |
| static Array< Real > | multiply_real_optimized (const Array< Real > &a, const Array< Real > &b, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| Rationale: Efficiently multiplies two real sequences using a single N-point complex FFT by packing one sequence into the real part and the other into the imaginary part. | |
| static Array< Complex > | multiply_complex_impl (const Array< Complex > &a, const Array< Complex > &b, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| Rationale: Linear convolution of two complex sequences via FFT. | |
| static Array< Real > | project_real_output (const Array< Complex > &input, const char *ctx) |
| Projects a complex-valued output array back to the real domain. | |
| static void | bit_reverse (Array< Complex > &a) noexcept |
| Performs bit-reversal permutation in-place. | |
| static size_t | next_power_of_two (const size_t n) |
| Calculates the smallest power of two greater than or equal to n. | |
| static void | transform_impl (Array< Complex > &a, const bool invert, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| implementation of the power-of-two iterative FFT using mixed radix-2/4. | |
| static Array< size_t > | factor_small_radices (size_t n) |
| Rationale: Factors a number into small primes (2, 3, 4, 5) to determine if a composite FFT kernel is applicable. | |
| static Array< Complex > | project_to_plan_spectrum (const Plan &plan, const Array< Real > &input, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| static Array< Array< Complex > > | project_to_plan_batch_spectra (const Plan &plan, const Array< Array< Real > > &input, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| static Array< Complex > | compact_real_spectrum (const Array< Complex > &full_spectrum) |
| static Array< Array< Complex > > | compact_real_batch_spectra (const Array< Array< Complex > > &full_spectra) |
| static size_t | resolve_irfft_signal_size (const Array< Complex > &spectrum, const size_t signal_size, const char *ctx) |
| static Array< Complex > | expand_real_spectrum (const Array< Complex > &spectrum, const size_t signal_size, const char *ctx) |
| static Array< Array< Complex > > | expand_real_batch_spectra (const Array< Array< Complex > > &spectra, const size_t signal_size, const char *ctx) |
| static Array< Array< Real > > | project_real_batch_output (const Array< Array< Complex > > &input, const char *ctx) |
| static void | transform_any_size_impl (Array< Complex > &a, const bool invert, ThreadPool *pool=nullptr, const size_t chunk_size=0) |
| static Array< Real > | inverse_transform_real_general_impl (const Array< Complex > &input, const char *ctx, ThreadPool *pool, const size_t chunk_size) |
Static Private Attributes | |
| template<typename Container > | |
| static constexpr bool | Is_Complex_Container |
| template<typename Container > | |
| static constexpr bool | Is_Real_Container |
| template<typename Container > | |
| static constexpr bool | Is_Biquad_Container |
| template<typename Container > | |
| static constexpr bool | Is_Real_Batch_Container |
| static constexpr size_t | twiddle_refresh_period = 32 |
Fast Fourier Transform (FFT) and DSP Toolkit.
The FFT class provides a high-performance suite for time-to-frequency domain conversion and signal processing.
p) leverage a ThreadPool for large-scale data processing.All methods are static; there is no shared mutable instance state. Multiple threads may call any method concurrently on independent data without synchronization. The one exception is Plan: a single Plan object must not be used concurrently from multiple threads unless all concurrent calls are read-only (query-only methods).
transformed, convolve) provide the basic guarantee: if std::bad_alloc or any other exception is thrown, no resources are leaked and all objects remain in a valid (though possibly partially modified) state.transform(Array<Complex>&, bool)) provide the basic guarantee: the array remains valid but may be partially transformed if an exception is thrown mid-way.std::bad_alloc (memory allocation failure), std::invalid_argument (zero-length or unsupported input), and std::domain_error (e.g. non-Hermitian spectrum passed to an inverse real transform).noexcept; all may propagate exceptions.| Real | Floating-point precision (double, float, long double). |
| using Aleph::FFT< Real >::Complex = std::complex<Real> |
| using Aleph::FFT< Real >::value_type = Real |
|
strong |
|
strong |
|
strong |
|
inlinestaticprivate |
Rationale: In-place addition of a scaled polynomial.
Definition at line 2422 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::bilinear_substitute_polynomial().
|
inlinestaticprivatenoexcept |
Definition at line 4429 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::gain_margin_refined_impl(), and Aleph::FFT< Real >::phase_margin_refined_impl().
|
inlinestaticprivate |
Rationale: Analytic calculation of group delay (-dphi/domega) using the complex derivative of the transfer function, which is more accurate than numerical differentiation.
Definition at line 2174 of file fft.H.
References Aleph::Array< T >::create(), Aleph::FFT< Real >::TransferTerms::denominator, Aleph::FFT< Real >::TransferTerms::denominator_derivative, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::evaluate_transfer_terms_at(), Aleph::FFT< Real >::freqz_impl(), Aleph::FFT< Real >::group_delay_impl(), Aleph::FFT< Real >::FrequencyResponse::magnitude(), Aleph::FFT< Real >::max_abs_value(), Aleph::FFT< Real >::TransferTerms::numerator, Aleph::FFT< Real >::TransferTerms::numerator_derivative, Aleph::FFT< Real >::FrequencyResponse::omega, and Aleph::FFT< Real >::series_zero_tolerance().
Referenced by Aleph::FFT< Real >::analytic_phase_delay_impl(), Aleph::FFT< Real >::group_delay(), and Aleph::FFT< Real >::group_delay().
|
inlinestaticprivate |
implementation of analytic phase delay calculation.
Definition at line 2248 of file fft.H.
References Aleph::FFT< Real >::analytic_group_delay_impl(), Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::freqz_impl(), Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::FrequencyResponse::response, Aleph::Array< T >::size(), and Aleph::FFT< Real >::unwrap_phase().
Referenced by Aleph::FFT< Real >::phase_delay(), and Aleph::FFT< Real >::phase_delay().
|
inlinestaticprivate |
implementation of analytic group delay for SOS cascades.
Definition at line 2208 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::FFT< Real >::TransferTerms::denominator, Aleph::FFT< Real >::TransferTerms::denominator_derivative, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_transfer_terms_at(), Aleph::FFT< Real >::group_delay_impl(), Aleph::FFT< Real >::TransferTerms::numerator, Aleph::FFT< Real >::TransferTerms::numerator_derivative, Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::series_zero_tolerance(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::group_delay(), and Aleph::FFT< Real >::phase_delay().
|
inlinestaticprivate |
Definition at line 1262 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::STFTProcessor::append_samples(), Aleph::FFT< Real >::OverlapSave::convolve(), Aleph::FFT< Real >::PartitionedConvolver::convolve(), Aleph::FFT< Real >::OverlapSave::flush(), Aleph::FFT< Real >::PartitionedConvolver::flush(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::ISTFTProcessor::pprocess_block(), Aleph::FFT< Real >::ISTFTProcessor::process_block(), Aleph::FFT< Real >::OverlapSave::process_block(), Aleph::FFT< Real >::PartitionedConvolver::process_block(), Aleph::FFT< Real >::zeros(), and Aleph::FFT< Real >::zeros().
|
inlinestaticprivate |
Rationale: Transforms an analog transfer function H(s) via rational substitution s = N(z)/D(z), as used in bilinear or frequency-selective mappings.
Definition at line 2606 of file fft.H.
References ah_domain_error_if, Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::IIRCoefficients::numerator, Aleph::FFT< Real >::polynomial_multiply(), Aleph::FFT< Real >::polynomial_power(), Aleph::FFT< Real >::scaled_tolerance(), Aleph::FFT< Real >::substitute_rational_polynomial(), and Aleph::FFT< Real >::trim_polynomial_leading_zeros().
Referenced by Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), and Aleph::FFT< Real >::design_transformed_sections().
|
inlinestatic |
Applies a Blackman window of matching size to a complex signal.
Definition at line 9006 of file fft.H.
References Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::blackman_window(), and Aleph::Array< T >::size().
|
inlinestatic |
Applies a Blackman window of matching size to a real signal.
Definition at line 8985 of file fft.H.
References Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::blackman_window(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::apply_blackman_window().
|
inlinestatic |
Definition at line 9449 of file fft.H.
References Aleph::FFT< Real >::apply_blackman_window(), and Aleph::FFT< Real >::build_real_input().
|
inlinestatic |
Definition at line 9473 of file fft.H.
References Aleph::FFT< Real >::apply_blackman_window(), and Aleph::FFT< Real >::build_complex_input().
|
inlinestatic |
Applies a Hamming window of matching size to a complex signal.
Definition at line 8999 of file fft.H.
References Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::hamming_window(), and Aleph::Array< T >::size().
|
inlinestatic |
Applies a Hamming window of matching size to a real signal.
Definition at line 8978 of file fft.H.
References Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::hamming_window(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::apply_hamming_window().
|
inlinestatic |
Definition at line 9441 of file fft.H.
References Aleph::FFT< Real >::apply_hamming_window(), and Aleph::FFT< Real >::build_real_input().
|
inlinestatic |
Definition at line 9465 of file fft.H.
References Aleph::FFT< Real >::apply_hamming_window(), and Aleph::FFT< Real >::build_complex_input().
|
inlinestatic |
Applies a Hann window of matching size to a complex signal.
Definition at line 8992 of file fft.H.
References Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::hann_window(), and Aleph::Array< T >::size().
|
inlinestatic |
Applies a Hann window of matching size to a real signal.
Definition at line 8971 of file fft.H.
References Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::hann_window(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::apply_hann_window().
|
inlinestatic |
Definition at line 9433 of file fft.H.
References Aleph::FFT< Real >::apply_hann_window(), and Aleph::FFT< Real >::build_real_input().
|
inlinestatic |
Definition at line 9457 of file fft.H.
References Aleph::FFT< Real >::apply_hann_window(), and Aleph::FFT< Real >::build_complex_input().
|
inlinestaticprivatenoexcept |
Rationale: Multiplies spectral densities by 2 for interior bins to account for energy in the omitted negative frequency half.
Definition at line 856 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::is_one_sided_interior_bin().
|
inlinestatic |
Applies a real window sample-by-sample to a complex signal.
Definition at line 8941 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), output, and Aleph::Array< T >::size().
|
inlinestatic |
Applies a real window sample-by-sample to a real signal.
Definition at line 8927 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), output, and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::apply_blackman_window(), Aleph::FFT< Real >::apply_blackman_window(), Aleph::FFT< Real >::apply_hamming_window(), Aleph::FFT< Real >::apply_hamming_window(), Aleph::FFT< Real >::apply_hann_window(), Aleph::FFT< Real >::apply_hann_window(), Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::prepare_stft_frame_input(), Aleph::FFT< Real >::prepare_welch_frames(), Aleph::FFT< Real >::windowed_spectrum(), and Aleph::FFT< Real >::windowed_spectrum().
|
inlinestatic |
Definition at line 8956 of file fft.H.
References Aleph::FFT< Real >::apply_window(), and Aleph::FFT< Real >::build_real_input().
|
inlinestatic |
Definition at line 8964 of file fft.H.
References Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::build_complex_input(), and Aleph::FFT< Real >::build_real_input().
|
inlinestaticnoexcept |
Returns whether the runtime CPU can execute the AVX2 double kernel when it has been compiled in.
Definition at line 6065 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::avx2_runtime_available(), and Aleph::FFT< Real >::detected_simd_backend().
|
inlinestaticconstexprnoexcept |
|
inlinestaticnoexcept |
Returns whether AVX2 dispatch is supported at runtime.
Definition at line 6257 of file fft.H.
References Aleph::FFT< Real >::avx2_dispatch_available().
|
inlinestaticprivate |
Rationale: Generates the base memory offsets for all 1D slices along a specific axis in a multidimensional tensor.
Definition at line 5176 of file fft.H.
References Aleph::Array< T >::append(), Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), offset, Aleph::Array< T >::reserve(), Aleph::FFT< Real >::saturating_product(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::transform_axis_impl().
|
inlinestaticprivate |
Definition at line 1645 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::and, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::max_abs_value(), Aleph::FFT< Real >::BalancedPolynomial::monic, output, Aleph::FFT< Real >::polynomial_root_lower_bound(), Aleph::FFT< Real >::polynomial_root_upper_bound(), and Aleph::FFT< Real >::scaled_tolerance().
Referenced by Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestatic |
|
inlinestatic |
|
inlinestaticnoexcept |
Returns the SIMD backend selected for throughput-oriented batch plan paths under the current runtime policy.
Definition at line 6221 of file fft.H.
References Aleph::FFT< Real >::automatic, Aleph::FFT< Real >::avx2, Aleph::FFT< Real >::avx2_only, Aleph::FFT< Real >::detected_simd_backend(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::neon, Aleph::FFT< Real >::neon_only, Aleph::FFT< Real >::scalar, Aleph::FFT< Real >::scalar_only, and Aleph::FFT< Real >::simd_preference().
Referenced by Aleph::FFT< Real >::batched_plan_simd_backend_name().
|
inlinestaticnoexcept |
Returns the active batch-plan SIMD backend name.
Definition at line 6243 of file fft.H.
References Aleph::FFT< Real >::batched_plan_simd_backend(), and Aleph::FFT< Real >::simd_backend_name().
|
inlinestatic |
One-shot batched causal SOS filtering across real channels.
Definition at line 12092 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::sosfilt().
Referenced by Aleph::FFT< Real >::batched_sosfilt().
|
inlinestatic |
Definition at line 12129 of file fft.H.
References Aleph::Array< T >::append(), Aleph::FFT< Real >::batched_sosfilt(), Aleph::FFT< Real >::build_real_input(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Batched STFT over a collection of real signals.
Definition at line 11247 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), options, output, and Aleph::FFT< Real >::stft_impl().
Referenced by Aleph::FFT< Real >::batched_stft().
|
inlinestatic |
Hann-window batched STFT.
Definition at line 11289 of file fft.H.
References Aleph::FFT< Real >::batched_stft(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::hann_window(), and options.
|
inlinestatic |
Digital Bessel band-pass design returned as SOS.
Definition at line 13432 of file fft.H.
References Aleph::FFT< Real >::bessel_prototype(), Aleph::FFT< Real >::design_transformed_sections(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::prewarp_band_edges().
|
inlinestatic |
Digital Bessel band-stop design returned as SOS.
Definition at line 13454 of file fft.H.
References Aleph::FFT< Real >::bessel_prototype(), Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Digital Bessel high-pass design returned as SOS.
Definition at line 13418 of file fft.H.
References Aleph::FFT< Real >::bessel_prototype(), Aleph::FFT< Real >::design_low_high_sections(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Digital Bessel low-pass design returned as SOS.
The analog prototype is normalized so that the digital cutoff matches the -3 dB point after bilinear mapping.
Definition at line 13404 of file fft.H.
References Aleph::FFT< Real >::bessel_prototype(), Aleph::FFT< Real >::design_low_high_sections(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestaticprivate |
implementation of the Bessel filter analog prototype.
Definition at line 3476 of file fft.H.
References ah_runtime_error_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_analog_transfer_magnitude(), Aleph::FFT< Real >::AnalogPrototype::poles, Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::polynomial_roots_impl(), Aleph::FFT< Real >::real_polynomial_from_roots(), Aleph::FFT< Real >::reverse_bessel_polynomial(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::bessel_bandpass(), Aleph::FFT< Real >::bessel_bandstop(), Aleph::FFT< Real >::bessel_highpass(), and Aleph::FFT< Real >::bessel_lowpass().
|
inlinestaticprivate |
Rationale: Performs the bilinear substitution mapping from the S-plane to the Z-domain: H(z) = H(s)|s=2*fs*(z-1)/(z+1).
Definition at line 2462 of file fft.H.
References Aleph::FFT< Real >::add_scaled_polynomial(), ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::integer_power(), output, Aleph::FFT< Real >::polynomial_multiply(), Aleph::FFT< Real >::signed_binomial(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::bilinear_transform_impl().
|
inlinestatic |
Bilinear transform of an analog transfer function.
Definition at line 13152 of file fft.H.
References Aleph::FFT< Real >::bilinear_transform_impl(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::bilinear_transform().
|
inlinestatic |
Definition at line 13165 of file fft.H.
References Aleph::FFT< Real >::bilinear_transform(), Aleph::FFT< Real >::build_real_input(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestaticprivate |
implementation helper for the bilinear transform.
Definition at line 2891 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::bilinear_substitute_polynomial(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::normalize_iir_coefficients().
Referenced by Aleph::FFT< Real >::bilinear_transform(), Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), Aleph::FFT< Real >::design_prototype_sections(), and Aleph::FFT< Real >::design_transformed_sections().
|
inlinestaticprivatenoexcept |
Performs bit-reversal permutation in-place.
This is a required preprocessing step for the iterative Cooley-Tukey FFT. It rearranges the elements of the array such that the element at index 'i' is moved to the index formed by reversing the bits of 'i'.
| a | The array to be permuted. |
Definition at line 5800 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::transform_impl().
|
inlinestatic |
Returns a Blackman window of length n.
Definition at line 8878 of file fft.H.
References Aleph::FFT< Real >::cosine_sum_window(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::apply_blackman_window(), and Aleph::FFT< Real >::apply_blackman_window().
|
inlinestaticprivate |
Definition at line 5043 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::apply_blackman_window(), Aleph::FFT< Real >::apply_hamming_window(), Aleph::FFT< Real >::apply_hann_window(), Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::inverse_transform_real(), Aleph::FFT< Real >::irfft(), Aleph::FFT< Real >::magnitude_spectrum(), Aleph::FFT< Real >::multiply(), Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::pinverse_transform_real(), Aleph::FFT< Real >::pirfft(), Aleph::FFT< Real >::pmultiply(), Aleph::FFT< Real >::power_spectrum(), Aleph::FFT< Real >::ISTFTProcessor::pprocess_frame(), Aleph::FFT< Real >::ISTFTProcessor::process_frame(), Aleph::FFT< Real >::ptransform_padded(), Aleph::FFT< Real >::ptransformed(), Aleph::FFT< Real >::transform_padded(), Aleph::FFT< Real >::transformed(), and Aleph::FFT< Real >::windowed_spectrum().
|
inlinestaticprivate |
Definition at line 1341 of file fft.H.
References Aleph::Array< T >::create(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::STFTProcessor::emit_ready_frames().
|
inlinestaticprivate |
Definition at line 5051 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::apply_blackman_window(), Aleph::FFT< Real >::apply_hamming_window(), Aleph::FFT< Real >::apply_hann_window(), Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::batched_sosfilt(), Aleph::FFT< Real >::bilinear_transform(), Aleph::FFT< Real >::OverlapSave::convolve(), Aleph::FFT< Real >::PartitionedConvolver::convolve(), Aleph::FFT< Real >::OverlapAdd::convolve(), Aleph::FFT< Real >::LFilter::filter(), Aleph::FFT< Real >::SOSFilter::filter(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::firls(), Aleph::FFT< Real >::firls(), Aleph::FFT< Real >::frame_signal(), Aleph::FFT< Real >::freqz(), Aleph::FFT< Real >::gain_margin(), Aleph::FFT< Real >::group_delay(), Aleph::FFT< Real >::group_delay(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::is_stable(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::multiply(), Aleph::FFT< Real >::overlap_add_convolution(), Aleph::FFT< Real >::overlap_save_convolution(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::partitioned_convolution(), Aleph::FFT< Real >::OverlapAdd::pconvolve(), Aleph::FFT< Real >::pfiltfilt(), Aleph::FFT< Real >::phase_delay(), Aleph::FFT< Real >::phase_delay(), Aleph::FFT< Real >::phase_margin(), Aleph::FFT< Real >::pmultiply(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::poverlap_add_convolution(), Aleph::FFT< Real >::STFTProcessor::pprocess_block(), Aleph::FFT< Real >::OverlapAdd::pprocess_block(), Aleph::FFT< Real >::prfft(), Aleph::FFT< Real >::STFTProcessor::process_block(), Aleph::FFT< Real >::OverlapAdd::process_block(), Aleph::FFT< Real >::OverlapSave::process_block(), Aleph::FFT< Real >::PartitionedConvolver::process_block(), Aleph::FFT< Real >::pstft(), Aleph::FFT< Real >::pstft(), Aleph::FFT< Real >::ptransform(), Aleph::FFT< Real >::ptransform_padded(), Aleph::FFT< Real >::remez(), Aleph::FFT< Real >::remez(), Aleph::FFT< Real >::resample_poly(), Aleph::FFT< Real >::rfft(), Aleph::FFT< Real >::sosfilt(), Aleph::FFT< Real >::stability_margin(), Aleph::FFT< Real >::stft(), Aleph::FFT< Real >::stft(), Aleph::FFT< Real >::stft(), Aleph::FFT< Real >::stft(), Aleph::FFT< Real >::transform(), Aleph::FFT< Real >::transform_padded(), Aleph::FFT< Real >::upfirdn(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::window_coherent_gain(), Aleph::FFT< Real >::window_enbw(), Aleph::FFT< Real >::window_energy(), Aleph::FFT< Real >::windowed_spectrum(), and Aleph::FFT< Real >::zeros().
|
inlinestaticprivate |
Definition at line 4063 of file fft.H.
References ah_invalid_argument_if, ah_runtime_error_if, Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::low(), Aleph::FFT< Real >::scaled_tolerance(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::remez_impl().
|
inlinestatic |
Digital Butterworth band-pass design returned as SOS.
Definition at line 13206 of file fft.H.
References Aleph::FFT< Real >::butterworth_prototype(), Aleph::FFT< Real >::design_transformed_sections(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::prewarp_band_edges().
|
inlinestatic |
Digital Butterworth band-stop design returned as SOS.
Definition at line 13228 of file fft.H.
References Aleph::FFT< Real >::butterworth_prototype(), Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Digital Butterworth high-pass design returned as SOS.
Definition at line 13191 of file fft.H.
References Aleph::FFT< Real >::butterworth_prototype(), Aleph::FFT< Real >::design_prototype_sections(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Digital Butterworth low-pass design returned as SOS.
Definition at line 13176 of file fft.H.
References Aleph::FFT< Real >::butterworth_prototype(), Aleph::FFT< Real >::design_prototype_sections(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestaticprivate |
Definition at line 3213 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), k, and Aleph::FFT< Real >::AnalogPrototype::poles.
Referenced by Aleph::FFT< Real >::butterworth_bandpass(), Aleph::FFT< Real >::butterworth_bandstop(), Aleph::FFT< Real >::butterworth_highpass(), and Aleph::FFT< Real >::butterworth_lowpass().
|
inlinestaticprivate |
Definition at line 2983 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and y.
Referenced by Aleph::FFT< Real >::ellint_1_impl().
|
inlinestatic |
Digital Chebyshev-I band-pass design returned as SOS.
Definition at line 13277 of file fft.H.
References Aleph::FFT< Real >::chebyshev1_prototype(), Aleph::FFT< Real >::design_transformed_sections(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::prewarp_band_edges().
|
inlinestatic |
Digital Chebyshev-I band-stop design returned as SOS.
Definition at line 13301 of file fft.H.
References Aleph::FFT< Real >::chebyshev1_prototype(), Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Digital Chebyshev-I high-pass design returned as SOS.
Definition at line 13260 of file fft.H.
References Aleph::FFT< Real >::chebyshev1_prototype(), Aleph::FFT< Real >::design_prototype_sections(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Digital Chebyshev-I low-pass design returned as SOS.
Definition at line 13243 of file fft.H.
References Aleph::FFT< Real >::chebyshev1_prototype(), Aleph::FFT< Real >::design_prototype_sections(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestaticprivate |
Definition at line 3237 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), k, Aleph::FFT< Real >::AnalogPrototype::poles, Aleph::FFT< Real >::real_polynomial_from_roots(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::chebyshev1_bandpass(), Aleph::FFT< Real >::chebyshev1_bandstop(), Aleph::FFT< Real >::chebyshev1_highpass(), Aleph::FFT< Real >::chebyshev1_lowpass(), and Aleph::FFT< Real >::elliptic_prototype().
|
inlinestatic |
Digital Chebyshev-II band-pass design returned as SOS.
Definition at line 13352 of file fft.H.
References Aleph::FFT< Real >::chebyshev2_prototype(), Aleph::FFT< Real >::design_transformed_sections(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::prewarp_band_edges().
|
inlinestatic |
Digital Chebyshev-II band-stop design returned as SOS.
Definition at line 13376 of file fft.H.
References Aleph::FFT< Real >::chebyshev2_prototype(), Aleph::FFT< Real >::design_transformed_sections(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::prewarp_band_edges().
|
inlinestatic |
Digital Chebyshev-II high-pass design returned as SOS.
Definition at line 13336 of file fft.H.
References Aleph::FFT< Real >::chebyshev2_prototype(), Aleph::FFT< Real >::design_low_high_sections(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Digital Chebyshev-II low-pass design returned as SOS.
Definition at line 13320 of file fft.H.
References Aleph::FFT< Real >::chebyshev2_prototype(), Aleph::FFT< Real >::design_low_high_sections(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestaticprivate |
Definition at line 3276 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), k, Aleph::FFT< Real >::real_polynomial_from_roots(), Aleph::Array< T >::reserve(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::AnalogPrototype::zeros.
Referenced by Aleph::FFT< Real >::chebyshev2_bandpass(), Aleph::FFT< Real >::chebyshev2_bandstop(), Aleph::FFT< Real >::chebyshev2_highpass(), and Aleph::FFT< Real >::chebyshev2_lowpass().
|
inlinestaticprivate |
Definition at line 4189 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evenly_spaced_extrema(), floor(), Aleph::Array< T >::reserve(), Aleph::FFT< Real >::scaled_tolerance(), Aleph::Array< T >::size(), and Aleph::sum().
Referenced by Aleph::FFT< Real >::remez_impl().
|
inlinestatic |
|
inlinestatic |
|
inlinestaticprivate |
Definition at line 2967 of file fft.H.
References Aleph::and, Aleph::divide_and_conquer_partition_dp(), and k.
Referenced by Aleph::FFT< Real >::complete_elliptic_first_kind(), and Aleph::FFT< Real >::ellint_1_impl().
|
inlinestaticprivate |
Definition at line 7693 of file fft.H.
References Aleph::FFT< Real >::compact_real_spectrum(), Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::Plan::prfft_batch(), and Aleph::FFT< Real >::Plan::rfft_batch().
|
inlinestaticprivate |
Definition at line 7680 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::compact_real_batch_spectra(), Aleph::FFT< Real >::prfft(), Aleph::FFT< Real >::Plan::prfft(), Aleph::FFT< Real >::rfft(), and Aleph::FFT< Real >::Plan::rfft().
|
inlinestaticprivate |
Rationale: Complete elliptic integral K(k) using the modulus convention required by elliptic filter design.
Definition at line 3045 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::comp_ellint_1_impl(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::elliptic_prototype(), Aleph::FFT< Real >::jacobi_sn_cn_dn(), and Aleph::FFT< Real >::solve_elliptic_selectivity_modulus().
|
inlinestaticprivate |
Internal generator for generalized cosine windows (Hann, Hamming, Blackman).
Definition at line 472 of file fft.H.
References Aleph::Array< T >::append(), Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::blackman_window(), Aleph::FFT< Real >::hamming_window(), and Aleph::FFT< Real >::hann_window().
|
inlinestaticprivatenoexcept |
Definition at line 1315 of file fft.H.
References Aleph::count(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::OverlapAddBank::process_chunk_batch_impl().
|
inlinestatic |
|
inlinestatic |
|
inlinestaticprivatenoexcept |
Rationale: Rule-of-thumb for filtfilt padding to allow transients to decay.
Definition at line 546 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::iir_filtfilt_impl(), Aleph::FFT< Real >::pfiltfilt(), and Aleph::FFT< Real >::sos_filtfilt_impl().
|
inlinestaticprivate |
Returns a copy with DC offset removed.
Definition at line 759 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::mean(), output, and Aleph::FFT< Real >::sum_values().
Referenced by Aleph::FFT< Real >::prepare_welch_frames().
|
inlinestaticprivate |
Specialization for band-stop designs to handle zeros explicitly.
Definition at line 3702 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::apply_analog_rational_transform(), Aleph::FFT< Real >::bilinear_transform_impl(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::group_center(), Aleph::FFT< Real >::prewarp_band_edges(), Aleph::FFT< Real >::real_polynomial_from_roots(), Aleph::Array< T >::reserve(), Aleph::FFT< Real >::RootGroup::roots, and Aleph::FFT< Real >::transfer_function_to_sections().
Referenced by Aleph::FFT< Real >::bessel_bandstop(), Aleph::FFT< Real >::butterworth_bandstop(), and Aleph::FFT< Real >::chebyshev1_bandstop().
|
inlinestaticprivate |
internal helper for designing standard lowpass/highpass SOS filters.
Definition at line 3526 of file fft.H.
References Aleph::FFT< Real >::design_transformed_sections(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::prewarp_frequency().
Referenced by Aleph::FFT< Real >::bessel_highpass(), Aleph::FFT< Real >::bessel_lowpass(), Aleph::FFT< Real >::chebyshev2_highpass(), Aleph::FFT< Real >::chebyshev2_lowpass(), Aleph::FFT< Real >::elliptic_highpass(), and Aleph::FFT< Real >::elliptic_lowpass().
|
inlinestaticprivate |
Definition at line 3542 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::bilinear_transform_impl(), Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::integer_power(), Aleph::FFT< Real >::prewarp_frequency(), Aleph::FFT< Real >::real_polynomial_from_roots(), Aleph::Array< T >::reserve(), Aleph::FFT< Real >::root_groups_impl(), and Aleph::FFT< Real >::section_from_coefficients().
Referenced by Aleph::FFT< Real >::butterworth_highpass(), Aleph::FFT< Real >::butterworth_lowpass(), Aleph::FFT< Real >::chebyshev1_highpass(), and Aleph::FFT< Real >::chebyshev1_lowpass().
|
inlinestaticprivate |
Generic implementation for designing transformed SOS cascades.
Definition at line 3753 of file fft.H.
References Aleph::FFT< Real >::apply_analog_rational_transform(), Aleph::FFT< Real >::bilinear_transform_impl(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::real_polynomial_from_roots(), and Aleph::FFT< Real >::transfer_function_to_sections().
Referenced by Aleph::FFT< Real >::bessel_bandpass(), Aleph::FFT< Real >::butterworth_bandpass(), Aleph::FFT< Real >::chebyshev1_bandpass(), Aleph::FFT< Real >::chebyshev2_bandpass(), Aleph::FFT< Real >::chebyshev2_bandstop(), Aleph::FFT< Real >::design_low_high_sections(), Aleph::FFT< Real >::elliptic_bandpass(), and Aleph::FFT< Real >::elliptic_bandstop().
|
inlinestaticnoexcept |
Returns the best SIMD backend supported by the current hardware among the kernels compiled for this precision.
Definition at line 6138 of file fft.H.
References Aleph::FFT< Real >::avx2, Aleph::FFT< Real >::avx2_dispatch_available(), Aleph::FFT< Real >::neon, Aleph::FFT< Real >::neon_dispatch_available(), and Aleph::FFT< Real >::scalar.
Referenced by Aleph::FFT< Real >::batched_plan_simd_backend(), Aleph::FFT< Real >::detected_simd_backend_name(), Aleph::FFT< Real >::Plan::should_use_avx2(), Aleph::FFT< Real >::Plan::should_use_neon(), and Aleph::FFT< Real >::simd_backend().
|
inlinestaticnoexcept |
Returns the detected hardware SIMD backend name.
Definition at line 6149 of file fft.H.
References Aleph::FFT< Real >::detected_simd_backend(), and Aleph::FFT< Real >::simd_backend_name().
|
inlinestaticprivate |
Definition at line 1563 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), remainder(), and root().
Referenced by Aleph::FFT< Real >::extract_repeated_unit_roots().
|
inlinestaticprivate |
Definition at line 1271 of file fft.H.
References ah_invalid_argument_if, Aleph::count(), Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::STFTProcessor::emit_ready_frames(), and Aleph::FFT< Real >::ISTFTProcessor::normalize_prefix().
|
inlinestaticprivatenoexcept |
Returns length excluding trailing insignificant zeros.
Definition at line 866 of file fft.H.
References Aleph::and, Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::max_abs_value().
Referenced by Aleph::FFT< Real >::analytic_group_delay_impl(), Aleph::FFT< Real >::apply_analog_rational_transform(), Aleph::FFT< Real >::balance_polynomial_for_roots(), Aleph::FFT< Real >::divide_polynomial_by_linear_root(), Aleph::FFT< Real >::evaluate_polynomial_and_derivative(), Aleph::FFT< Real >::evaluate_series_at_unit_circle(), Aleph::FFT< Real >::extract_repeated_unit_roots(), Aleph::FFT< Real >::initialize_root_guesses(), Aleph::FFT< Real >::normalize_iir_coefficients(), Aleph::FFT< Real >::polynomial_roots_impl(), Aleph::FFT< Real >::resample_poly(), and Aleph::FFT< Real >::substitute_rational_polynomial().
|
inlinestaticprivate |
Definition at line 3017 of file fft.H.
References Aleph::FFT< Real >::carlson_rf_impl(), Aleph::FFT< Real >::comp_ellint_1_impl(), Aleph::divide_and_conquer_partition_dp(), and k.
Referenced by Aleph::FFT< Real >::inverse_jacobi_sc(), and Aleph::FFT< Real >::jacobi_sn_cn_dn().
|
inlinestatic |
Digital elliptic/Cauer band-pass design returned as SOS.
Definition at line 13505 of file fft.H.
References Aleph::FFT< Real >::design_transformed_sections(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::elliptic_prototype(), and Aleph::FFT< Real >::prewarp_band_edges().
|
inlinestatic |
Digital elliptic/Cauer band-stop design returned as SOS.
Definition at line 13531 of file fft.H.
References Aleph::FFT< Real >::design_transformed_sections(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::elliptic_prototype(), and Aleph::FFT< Real >::prewarp_band_edges().
|
inlinestaticprivate |
Definition at line 3194 of file fft.H.
References ah_domain_error_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::jacobi_sn_cn_dn(), and Aleph::FFT< Real >::scaled_tolerance().
Referenced by Aleph::FFT< Real >::elliptic_prototype().
|
inlinestatic |
Digital elliptic/Cauer high-pass design returned as SOS.
Definition at line 13487 of file fft.H.
References Aleph::FFT< Real >::design_low_high_sections(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::elliptic_prototype().
|
inlinestatic |
Digital elliptic/Cauer low-pass design returned as SOS.
Definition at line 13469 of file fft.H.
References Aleph::FFT< Real >::design_low_high_sections(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::elliptic_prototype().
|
inlinestaticprivate |
Definition at line 3328 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::FFT< Real >::chebyshev1_prototype(), Aleph::FFT< Real >::JacobiValues::cn, Aleph::FFT< Real >::complete_elliptic_first_kind(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::elliptic_cd_minus_imaginary(), Aleph::FFT< Real >::inverse_jacobi_sc(), Aleph::FFT< Real >::jacobi_sn_cn_dn(), r, Aleph::FFT< Real >::real_polynomial_from_roots(), Aleph::Array< T >::reserve(), Aleph::FFT< Real >::scaled_tolerance(), Aleph::Array< T >::size(), Aleph::FFT< Real >::JacobiValues::sn, Aleph::FFT< Real >::solve_elliptic_selectivity_modulus(), and Aleph::FFT< Real >::AnalogPrototype::zeros.
Referenced by Aleph::FFT< Real >::elliptic_bandpass(), Aleph::FFT< Real >::elliptic_bandstop(), Aleph::FFT< Real >::elliptic_highpass(), and Aleph::FFT< Real >::elliptic_lowpass().
|
inlinestaticprivate |
Enforce conjugate symmetry on roots of a real-coefficient polynomial.
For every complex root the nearest conjugate candidate is found and both are replaced by the exact conjugate pair built from the average of their real parts and imaginary magnitudes.
Definition at line 2702 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::error(), Aleph::FFT< Real >::max_root_radius(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::root_groups_impl().
|
inlinestaticprivatenoexcept |
Definition at line 1860 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::error().
Referenced by Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestaticprivate |
Rationale: Direct evaluation of |H(j*omega)| for an analog transfer function.
Definition at line 3428 of file fft.H.
References ah_domain_error_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_polynomial_and_derivative(), Aleph::FFT< Real >::max_abs_value(), and Aleph::FFT< Real >::scaled_tolerance().
Referenced by Aleph::FFT< Real >::bessel_prototype().
|
inlinestaticprivatenoexcept |
Definition at line 4160 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and k.
Referenced by Aleph::FFT< Real >::remez_impl().
|
inlinestaticprivate |
implementation helper for FIR frequency response magnitude.
Definition at line 3816 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::evaluate_transfer_at().
Referenced by Aleph::FFT< Real >::normalize_fir_at_omega().
|
inlinestaticprivate |
Definition at line 1545 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), output, and Aleph::FFT< Real >::PolynomialEvaluation::value.
Referenced by Aleph::FFT< Real >::evaluate_analog_transfer_magnitude(), Aleph::FFT< Real >::extract_repeated_unit_roots(), Aleph::FFT< Real >::polish_roots_with_newton(), Aleph::FFT< Real >::roots_pass_residual_check(), Aleph::FFT< Real >::try_aberth_ehrlich_roots(), and Aleph::FFT< Real >::try_durand_kerner_roots().
|
inlinestaticprivate |
Definition at line 1517 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::max_abs_value(), output, and Aleph::FFT< Real >::SeriesEvaluation::value.
Referenced by Aleph::FFT< Real >::evaluate_transfer_at(), and Aleph::FFT< Real >::evaluate_transfer_terms_at().
|
inlinestaticprivate |
Definition at line 4487 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::evaluate_transfer_at().
Referenced by Aleph::FFT< Real >::gain_margin(), and Aleph::FFT< Real >::phase_margin().
|
inlinestaticprivate |
Definition at line 1466 of file fft.H.
References ah_domain_error_if, Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_series_at_unit_circle(), Aleph::FFT< Real >::normalize_iir_coefficients(), Aleph::FFT< Real >::IIRCoefficients::numerator, Aleph::FFT< Real >::series_zero_tolerance(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::evaluate_fir_response_magnitude(), Aleph::FFT< Real >::evaluate_sos_transfer_at(), Aleph::FFT< Real >::freqz(), Aleph::FFT< Real >::freqz_impl(), Aleph::FFT< Real >::gain_margin(), and Aleph::FFT< Real >::phase_margin().
|
inlinestaticprivate |
implementation helper for evaluating H(z) and its derivatives on the unit circle.
Definition at line 2142 of file fft.H.
References ah_domain_error_if, Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::FFT< Real >::TransferTerms::denominator, Aleph::FFT< Real >::TransferTerms::denominator_derivative, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_series_at_unit_circle(), Aleph::FFT< Real >::normalize_iir_coefficients(), Aleph::FFT< Real >::IIRCoefficients::numerator, Aleph::FFT< Real >::TransferTerms::numerator, Aleph::FFT< Real >::TransferTerms::numerator_derivative, Aleph::FFT< Real >::series_zero_tolerance(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::analytic_group_delay_impl(), and Aleph::FFT< Real >::analytic_sos_group_delay_impl().
|
inlinestaticprivate |
Definition at line 4170 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::choose_remez_extrema(), and Aleph::FFT< Real >::remez_impl().
|
inlinestaticprivate |
Definition at line 7748 of file fft.H.
References Aleph::Array< T >::append(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::expand_real_spectrum(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::Plan::irfft_batch(), and Aleph::FFT< Real >::Plan::pirfft_batch().
|
inlinestaticprivate |
Definition at line 7728 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::resolve_irfft_signal_size(), and Aleph::FFT< Real >::spectrum().
Referenced by Aleph::FFT< Real >::expand_real_batch_spectra(), Aleph::FFT< Real >::Plan::irfft(), Aleph::FFT< Real >::irfft(), Aleph::FFT< Real >::Plan::pirfft(), and Aleph::FFT< Real >::pirfft().
|
inlinestaticprivate |
Definition at line 1580 of file fft.H.
References Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::divide_polynomial_by_linear_root(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::evaluate_polynomial_and_derivative(), Aleph::FFT< Real >::max_abs_value(), remainder(), root(), Aleph::FFT< Real >::scaled_tolerance(), Aleph::FFT< Real >::trim_leading_zeros_copy(), and Aleph::FFT< Real >::PolynomialEvaluation::value.
Referenced by Aleph::FFT< Real >::zeros().
|
inlinestaticprivate |
Rationale: Factors a number into small primes (2, 3, 4, 5) to determine if a composite FFT kernel is applicable.
Definition at line 5962 of file fft.H.
References Aleph::Array< T >::append(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::Plan::Plan().
|
inlinestatic |
Zero-phase filtering of a cascade of biquad sections.
Definition at line 13686 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::sos_filtfilt_impl().
|
inlinestatic |
Zero-phase FIR filtering via forward-backward convolution.
This implementation uses reflect padding, a forward causal FIR pass, time reversal, and a second FIR pass. The output length matches the input length.
Definition at line 13562 of file fft.H.
References Aleph::Array< T >::create(), Aleph::FFT< Real >::default_filtfilt_pad_length(), Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), output, Aleph::FFT< Real >::prefix_copy(), Aleph::FFT< Real >::reflect_pad_signal(), Aleph::FFT< Real >::reverse_copy(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::slice_copy().
Referenced by Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::filtfilt(), and Aleph::FFT< Real >::filtfilt().
|
inlinestatic |
Zero-phase IIR filtering using transfer-function coefficients.
The denominator is interpreted in the standard DSP form a[0] y[n] + a[1] y[n-1] + ... = b[0] x[n] + .... Coefficients are normalized by a[0] internally and the recursion uses transposed direct-form II with steady-state endpoint initialization.
Definition at line 13658 of file fft.H.
References Aleph::FFT< Real >::iir_filtfilt_impl().
|
inlinestatic |
Zero-phase filtering of one biquad section.
Definition at line 13678 of file fft.H.
References Aleph::FFT< Real >::filtfilt(), and section().
|
inlinestatic |
Zero-phase IIR filtering with explicit coefficient groups.
Definition at line 13670 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::FFT< Real >::filtfilt(), and Aleph::FFT< Real >::IIRCoefficients::numerator.
|
inlinestatic |
Definition at line 13718 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::FFT< Real >::filtfilt(), and section().
|
inlinestatic |
Definition at line 13627 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::filtfilt().
|
inlinestatic |
Definition at line 13709 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::filtfilt().
|
inlinestatic |
Definition at line 13697 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::filtfilt().
|
inlinestatic |
Definition at line 13728 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::filtfilt().
|
inlinestatic |
FIR design by weighted least squares over piecewise-linear bands.
Definition at line 9170 of file fft.H.
Referenced by Aleph::FFT< Real >::firls(), and Aleph::FFT< Real >::firls().
|
inlinestatic |
Definition at line 9188 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::firls().
|
inlinestatic |
Definition at line 9206 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::firls().
|
inlinestaticprivate |
implementation of Least-Squares FIR design.
Definition at line 3941 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::integrate_cos_product(), Aleph::FFT< Real >::integrate_linear_cos_basis(), k, Aleph::Array< T >::reserve(), Aleph::FFT< Real >::scaled_tolerance(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::solve_dense_system().
|
inlinestatic |
FIR band-pass design via the window method.
Definition at line 9076 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::firwin_lowpass_impl(), Aleph::low(), and Aleph::FFT< Real >::normalize_fir_at_omega().
Referenced by Aleph::FFT< Real >::firwin_bandpass(), and Aleph::FFT< Real >::firwin_bandstop().
|
inlinestatic |
FIR band-pass design using a Kaiser window.
Definition at line 9118 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::firwin_bandpass(), Aleph::FFT< Real >::kaiser_beta(), and Aleph::FFT< Real >::kaiser_window().
|
inlinestatic |
FIR band-stop design via the window method.
Definition at line 9133 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::firwin_bandpass(), Aleph::FFT< Real >::normalize_fir_at_omega(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::firwin_bandstop().
|
inlinestatic |
FIR band-stop design using a Kaiser window.
Definition at line 9155 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::firwin_bandstop(), Aleph::FFT< Real >::kaiser_beta(), and Aleph::FFT< Real >::kaiser_window().
|
inlinestatic |
FIR high-pass design via spectral inversion of a low-pass design.
Definition at line 9040 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::firwin_lowpass_impl(), Aleph::FFT< Real >::normalize_fir_at_omega(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::firwin_highpass().
|
inlinestatic |
FIR high-pass design using a Kaiser window.
Definition at line 9063 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::firwin_highpass(), Aleph::FFT< Real >::kaiser_beta(), and Aleph::FFT< Real >::kaiser_window().
|
inlinestatic |
FIR low-pass design via the window method.
Definition at line 9013 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::firwin_lowpass_impl().
Referenced by Aleph::FFT< Real >::firwin_lowpass().
|
inlinestatic |
FIR low-pass design via the window method using a Kaiser window.
Definition at line 9027 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::firwin_lowpass(), Aleph::FFT< Real >::kaiser_beta(), and Aleph::FFT< Real >::kaiser_window().
|
inlinestaticprivate |
implementation of the window-method FIR design.
Definition at line 3842 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), m, Aleph::FFT< Real >::normalize_fir_at_omega(), Aleph::FFT< Real >::normalized_sinc(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::firwin_bandpass(), Aleph::FFT< Real >::firwin_highpass(), and Aleph::FFT< Real >::firwin_lowpass().
|
inlinestaticprivate |
Rationale: Flattens a 2D matrix into a 1D row-major array.
Definition at line 5355 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::matrix_shape(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::ptransformed2d(), and Aleph::FFT< Real >::transformed2d().
|
inlinestaticprivate |
Rationale: Flattens a 3D tensor into a 1D row-major array.
Definition at line 5424 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), k, Aleph::Array< T >::reserve(), and Aleph::FFT< Real >::tensor3_shape().
Referenced by Aleph::FFT< Real >::ptransformed2d_batch(), Aleph::FFT< Real >::ptransformed3d(), Aleph::FFT< Real >::transformed2d_batch(), and Aleph::FFT< Real >::transformed3d().
|
inlinestatic |
Returns the frame start offsets used by frame_signal.
Definition at line 9566 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::frame_offsets_impl().
|
inlinestaticprivate |
Computes framing offsets.
Definition at line 700 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::Array< T >::append(), Aleph::divide_and_conquer_partition_dp(), and offset.
Referenced by Aleph::FFT< Real >::frame_offsets(), and Aleph::FFT< Real >::frame_signal().
|
inlinestatic |
Splits a real signal into frames using a fixed hop size.
If pad_end is true, the last frame is zero-padded to frame_size. Otherwise, only complete frames are returned.
Definition at line 9875 of file fft.H.
References Aleph::Array< T >::append(), Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::frame_offsets_impl(), Aleph::Array< T >::is_empty(), offset, and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::frame_signal(), Aleph::FFT< Real >::prepare_welch_frames(), and Aleph::FFT< Real >::stft_impl().
|
inlinestatic |
Definition at line 9911 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::frame_signal().
|
inlinestatic |
Definition at line 12174 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_transfer_at(), Aleph::FFT< Real >::FrequencyResponse::omega, and output.
|
inlinestatic |
Samples the discrete-time transfer response on the unit circle.
Definition at line 12140 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::freqz_impl().
Referenced by Aleph::FFT< Real >::freqz(), Aleph::FFT< Real >::freqz(), Aleph::FFT< Real >::freqz(), Aleph::FFT< Real >::freqz(), Aleph::FFT< Real >::freqz(), Aleph::FFT< Real >::gain_margin(), Aleph::FFT< Real >::gain_margin(), Aleph::FFT< Real >::group_delay(), Aleph::FFT< Real >::phase_delay(), Aleph::FFT< Real >::phase_margin(), and Aleph::FFT< Real >::phase_margin().
|
inlinestatic |
FIR frequency response.
Definition at line 12150 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::freqz().
|
inlinestatic |
Definition at line 12166 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::freqz(), and section().
|
inlinestatic |
Definition at line 12158 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::freqz(), and Aleph::FFT< Real >::IIRCoefficients::numerator.
|
inlinestatic |
Definition at line 12209 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::freqz().
|
inlinestatic |
Definition at line 12223 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::freqz().
|
inlinestaticprivate |
Definition at line 1487 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_transfer_at(), Aleph::FFT< Real >::FrequencyResponse::omega, and output.
Referenced by Aleph::FFT< Real >::analytic_group_delay_impl(), Aleph::FFT< Real >::analytic_phase_delay_impl(), and Aleph::FFT< Real >::freqz().
|
inlinestatic |
Definition at line 13087 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_sos_transfer_at(), Aleph::FFT< Real >::freqz(), and Aleph::FFT< Real >::gain_margin_refined_impl().
|
inlinestatic |
Definition at line 13012 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_transfer_at(), Aleph::FFT< Real >::freqz(), and Aleph::FFT< Real >::gain_margin_refined_impl().
|
inlinestatic |
Definition at line 13060 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::gain_margin(), and section().
|
inlinestatic |
Estimates gain margin around the -pi phase crossover.
Definition at line 12985 of file fft.H.
References Aleph::FFT< Real >::gain_margin_impl().
Referenced by Aleph::FFT< Real >::gain_margin(), Aleph::FFT< Real >::gain_margin(), Aleph::FFT< Real >::gain_margin(), and Aleph::FFT< Real >::gain_margin().
|
inlinestatic |
Definition at line 13041 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::gain_margin(), and Aleph::FFT< Real >::IIRCoefficients::numerator.
|
inlinestatic |
Definition at line 13119 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::gain_margin().
|
inlinestatic |
Definition at line 13143 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::gain_margin().
|
inlinestaticprivate |
implementation helper for Gain Margin calculation.
Definition at line 4560 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::interpolate_crossing(), Aleph::FFT< Real >::interpolate_value_at(), m, Aleph::FFT< Real >::FrequencyResponse::magnitude(), Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::FrequencyResponse::response, Aleph::Array< T >::size(), and Aleph::FFT< Real >::unwrap_phase().
Referenced by Aleph::FFT< Real >::gain_margin().
|
inlinestaticprivate |
implementation of refined Gain Margin calculation using analytic evaluation.
Definition at line 4700 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::align_phase_near_reference(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::interpolate_value_at(), m, Aleph::FFT< Real >::FrequencyResponse::magnitude(), Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::refine_scalar_crossing(), Aleph::FFT< Real >::FrequencyResponse::response, Aleph::Array< T >::size(), Aleph::FFT< Real >::unwrap_phase(), and w.
Referenced by Aleph::FFT< Real >::gain_margin(), and Aleph::FFT< Real >::gain_margin().
|
inlinestaticprivate |
Rationale: Extracts a non-contiguous slice of data along a tensor axis into a contiguous array for FFT processing.
Definition at line 5230 of file fft.H.
References Aleph::Array< T >::create(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::transform_axis_impl().
|
inlinestaticprivatenoexcept |
Geometric center of a root set.
Definition at line 2686 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), and Aleph::FFT< Real >::root_groups_impl().
|
inlinestatic |
Definition at line 12877 of file fft.H.
References Aleph::FFT< Real >::analytic_sos_group_delay_impl(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::freqz().
|
inlinestatic |
Definition at line 12789 of file fft.H.
References Aleph::FFT< Real >::analytic_group_delay_impl(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Definition at line 12815 of file fft.H.
References Aleph::FFT< Real >::analytic_group_delay_impl(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Definition at line 12855 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::group_delay(), and section().
|
inlinestatic |
Definition at line 12939 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::group_delay().
|
inlinestatic |
Estimates group delay from a sampled frequency response.
Definition at line 12776 of file fft.H.
References Aleph::FFT< Real >::group_delay_impl().
Referenced by Aleph::FFT< Real >::group_delay(), Aleph::FFT< Real >::group_delay(), Aleph::FFT< Real >::group_delay(), Aleph::FFT< Real >::group_delay(), and Aleph::FFT< Real >::group_delay().
|
inlinestatic |
Definition at line 12839 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::group_delay(), and Aleph::FFT< Real >::IIRCoefficients::numerator.
|
inlinestatic |
Definition at line 12911 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::group_delay().
|
inlinestatic |
Definition at line 12959 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::group_delay().
|
inlinestaticprivate |
implementation of numeric group delay calculation.
Definition at line 4805 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::FrequencyResponse::response, Aleph::Array< T >::size(), and Aleph::FFT< Real >::unwrap_phase().
Referenced by Aleph::FFT< Real >::analytic_group_delay_impl(), Aleph::FFT< Real >::analytic_sos_group_delay_impl(), Aleph::FFT< Real >::group_delay(), and Aleph::FFT< Real >::phase_delay_impl().
|
inlinestatic |
Returns a Hamming window of length n.
Definition at line 8871 of file fft.H.
References Aleph::FFT< Real >::cosine_sum_window(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::apply_hamming_window(), and Aleph::FFT< Real >::apply_hamming_window().
|
inlinestatic |
Returns a Hann window of length n.
Definition at line 8864 of file fft.H.
References Aleph::FFT< Real >::cosine_sum_window(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::apply_hann_window(), Aleph::FFT< Real >::apply_hann_window(), Aleph::FFT< Real >::batched_stft(), Aleph::FFT< Real >::istft(), Aleph::FFT< Real >::istft(), Aleph::FFT< Real >::pbatched_stft(), Aleph::FFT< Real >::pistft(), Aleph::FFT< Real >::pistft(), Aleph::FFT< Real >::pstft(), Aleph::FFT< Real >::stft(), and Aleph::FFT< Real >::stft().
|
inlinestatic |
Definition at line 12566 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Detects near pole/zero cancellations under a tolerance.
Definition at line 12526 of file fft.H.
References Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::poles(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::zeros().
Referenced by Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), and Aleph::FFT< Real >::has_near_pole_zero_cancellation().
|
inlinestatic |
Definition at line 12538 of file fft.H.
References Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12557 of file fft.H.
References Aleph::FFT< Real >::has_near_pole_zero_cancellation(), and section().
|
inlinestatic |
Definition at line 12548 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::FFT< Real >::has_near_pole_zero_cancellation(), and Aleph::FFT< Real >::IIRCoefficients::numerator.
|
inlinestatic |
Definition at line 12577 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::has_near_pole_zero_cancellation().
|
inlinestatic |
Definition at line 12589 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::has_near_pole_zero_cancellation().
|
inlinestaticprivatenoexcept |
Rationale: Numerical tolerance for Hermitian symmetry checks.
Determines if X[k] and X[N-k]* are "close enough".
Definition at line 425 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_stages().
Referenced by Aleph::FFT< Real >::validate_real_spectrum().
|
inlinestaticprivate |
Definition at line 1097 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), output, Aleph::Array< T >::size(), and y.
Referenced by Aleph::FFT< Real >::LFilter::filter(), Aleph::FFT< Real >::SOSFilter::filter(), Aleph::FFT< Real >::iir_filtfilt_impl(), and Aleph::FFT< Real >::sos_filtfilt_impl().
|
inlinestaticprivate |
Definition at line 1148 of file fft.H.
References Aleph::Array< T >::create(), Aleph::FFT< Real >::default_filtfilt_pad_length(), Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::iir_filter_impl(), Aleph::FFT< Real >::iir_steady_state(), Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::normalize_iir_coefficients(), Aleph::FFT< Real >::IIRCoefficients::numerator, output, Aleph::FFT< Real >::reflect_pad_signal(), Aleph::FFT< Real >::reverse_copy(), Aleph::FFT< Real >::scaled_copy(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::slice_copy().
Referenced by Aleph::FFT< Real >::filtfilt().
|
inlinestaticprivate |
Definition at line 1058 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::solve_dense_system().
Referenced by Aleph::FFT< Real >::iir_filtfilt_impl(), and Aleph::FFT< Real >::sos_filtfilt_impl().
|
inlinestaticprivate |
Definition at line 1693 of file fft.H.
References Aleph::and, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::polynomial_root_lower_bound(), and Aleph::FFT< Real >::polynomial_root_upper_bound().
Referenced by Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestaticprivatenoexcept |
Fast integer power utility.
Definition at line 2436 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::bilinear_substitute_polynomial(), and Aleph::FFT< Real >::design_prototype_sections().
|
inlinestaticprivatenoexcept |
Rationale: Evaluates integral of cos(k*w) from omega_lo to omega_hi.
Definition at line 3880 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and k.
Referenced by Aleph::FFT< Real >::integrate_cos_product(), and Aleph::FFT< Real >::integrate_linear_cos_basis().
|
inlinestaticprivatenoexcept |
Rationale: Evaluates integral of cos(m*w)*cos(n*w).
Definition at line 3893 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::integrate_cos_basis().
Referenced by Aleph::FFT< Real >::firls_impl().
|
inlinestaticprivatenoexcept |
implementation helper for firls linear band integration.
Definition at line 3922 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::integrate_cos_basis(), and Aleph::FFT< Real >::integrate_offset_cos_basis().
Referenced by Aleph::FFT< Real >::firls_impl().
|
inlinestaticprivatenoexcept |
implementation helper for firls slope integration.
Definition at line 3907 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and k.
Referenced by Aleph::FFT< Real >::integrate_linear_cos_basis().
|
inlinestaticprivatenoexcept |
Definition at line 4401 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), y0(), and y1().
Referenced by Aleph::FFT< Real >::gain_margin_impl(), Aleph::FFT< Real >::phase_margin_impl(), and Aleph::FFT< Real >::refine_scalar_crossing().
|
inlinestaticprivatenoexcept |
Definition at line 4415 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), y0(), and y1().
Referenced by Aleph::FFT< Real >::gain_margin_impl(), Aleph::FFT< Real >::gain_margin_refined_impl(), Aleph::FFT< Real >::phase_margin_impl(), and Aleph::FFT< Real >::phase_margin_refined_impl().
|
inlinestaticprivate |
Definition at line 3143 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ellint_1_impl().
Referenced by Aleph::FFT< Real >::elliptic_prototype().
|
inlinestatic |
Computes the Inverse Fast Fourier Transform (IFFT).
Functional wrapper for the inverse transform. Generic iterable containers of std::complex values are accepted through a separate overload.
| input | The frequency-domain complex values. |
| std::invalid_argument | if the input size is zero. |
Definition at line 8654 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed().
|
inlinestatic |
Forward IFFT for complex-valued containers.
Definition at line 8671 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed().
|
inlinestatic |
Functional inverse 2-D FFT wrapper.
Definition at line 8117 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed2d().
|
inlinestatic |
Functional inverse 3-D FFT wrapper.
Definition at line 8212 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed3d().
|
inlinestatic |
Functional batch IFFT wrapper.
Definition at line 7936 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed_batch().
|
inlinestatic |
Computes the IFFT and projects the result back to real values.
Useful when the result is expected to be real (e.g., after processing the spectrum of a real signal). Generic iterable containers of std::complex values are accepted through a separate overload.
| input | The frequency-domain complex values. |
| std::invalid_argument | if the input size is zero. |
| std::domain_error | if the result has non-negligible imaginary parts. |
Definition at line 8698 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::inverse_transform_real_general_impl(), Aleph::FFT< Real >::inverse_transform_real_optimized_impl(), Aleph::FFT< Real >::is_power_of_two(), and Aleph::FFT< Real >::transform_impl().
Referenced by Aleph::FFT< Real >::inverse_transform_real(), and Aleph::FFT< Real >::irfft().
|
inlinestatic |
Inverse real transform for complex-valued containers.
Definition at line 8765 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::inverse_transform_real().
|
inlinestaticprivate |
Definition at line 7796 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, Aleph::FFT< Real >::project_real_output(), Aleph::FFT< Real >::transform_any_size_impl(), and Aleph::FFT< Real >::validate_real_spectrum().
Referenced by Aleph::FFT< Real >::inverse_transform_real(), and Aleph::FFT< Real >::pinverse_transform_real().
|
inlinestaticprivate |
Rationale: Optimized Inverse FFT for real signals of size N (power-of-two).
Processes an N-point complex spectrum into an N/2 complex array, applies IFFT, and extracts N real samples.
Definition at line 5608 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::is_power_of_two(), k, Aleph::ThreadPool::num_threads(), output, Aleph::parallel_for_index(), Aleph::Array< T >::size(), Aleph::FFT< Real >::twiddle_at(), and Aleph::FFT< Real >::validate_real_spectrum().
Referenced by Aleph::FFT< Real >::inverse_transform_real(), Aleph::FFT< Real >::Plan::inverse_transform_real(), Aleph::FFT< Real >::pinverse_transform_real(), and Aleph::FFT< Real >::Plan::pinverse_transform_real().
|
inlinestatic |
Reconstructs a real signal from a compact rfft() spectrum.
If signal_size is zero, the method infers the original length as 2 * (spectrum.size() - 1). Odd original lengths therefore require an explicit signal_size.
Definition at line 8740 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::expand_real_spectrum(), Aleph::FFT< Real >::inverse_transform_real(), and Aleph::FFT< Real >::spectrum().
Referenced by Aleph::FFT< Real >::irfft().
|
inlinestatic |
Inverse real transform (compact) for complex-valued containers.
Definition at line 8784 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::irfft(), and Aleph::FFT< Real >::spectrum().
|
inlinestatic |
Functional compact real inverse FFT for equal-length batches.
Definition at line 7976 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
|
inlinestaticprivatenoexcept |
Identifies non-redundant spectrum bins (excluding DC and Nyquist).
Definition at line 790 of file fft.H.
References Aleph::and, and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::apply_one_sided_density_scaling().
|
inlinestaticconstexprnoexcept |
Checks if a given number is a power of two.
| n | The number to check. |
Definition at line 5996 of file fft.H.
References Aleph::and.
Referenced by Aleph::FFT< Real >::Plan::Plan(), Aleph::FFT< Real >::inverse_transform_real(), Aleph::FFT< Real >::inverse_transform_real_optimized_impl(), Aleph::FFT< Real >::pinverse_transform_real(), Aleph::FFT< Real >::transform_any_size_impl(), Aleph::FFT< Real >::transform_impl(), and Aleph::FFT< Real >::transform_real_optimized().
|
inlinestatic |
Definition at line 12500 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::is_stable().
|
inlinestatic |
Checks BIBO stability from denominator roots.
Definition at line 12481 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::stability_margin().
Referenced by Aleph::FFT< Real >::is_stable(), Aleph::FFT< Real >::is_stable(), Aleph::FFT< Real >::is_stable(), Aleph::FFT< Real >::is_stable(), and Aleph::FFT< Real >::is_stable().
|
inlinestatic |
Definition at line 12494 of file fft.H.
References Aleph::FFT< Real >::is_stable(), and section().
|
inlinestatic |
Definition at line 12511 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::is_stable().
|
inlinestatic |
Definition at line 12488 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, and Aleph::FFT< Real >::is_stable().
|
inlinestatic |
Definition at line 12519 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::is_stable().
|
inlinestatic |
Reconstructs a real signal using explicit ISTFT options.
Definition at line 10164 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::istft_impl(), and options.
|
inlinestatic |
Reconstructs a real signal from an STFT using overlap-add.
The STFT frames are assumed to come from a real signal transformed with the analysis window analysis_window. Each inverse frame is overlap- added after multiplying by synthesis_window and normalized by the accumulated window products.
Definition at line 10064 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::ISTFTOptions::hop_size, Aleph::FFT< Real >::istft_impl(), and options.
Referenced by Aleph::FFT< Real >::istft(), Aleph::FFT< Real >::istft(), Aleph::FFT< Real >::istft(), and Aleph::FFT< Real >::istft().
|
inlinestatic |
Reconstructs a real signal using one shared analysis/synthesis window.
Definition at line 10179 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::istft(), and options.
|
inlinestatic |
Reconstructs a real signal using the same window for analysis and synthesis.
Definition at line 10085 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::istft().
|
inlinestatic |
Reconstructs a Hann-window STFT with explicit options.
Definition at line 10188 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::hann_window(), Aleph::FFT< Real >::istft(), and options.
|
inlinestatic |
Reconstructs a real signal using a Hann window pair.
Definition at line 10095 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::hann_window(), and Aleph::FFT< Real >::istft().
|
inlinestaticprivate |
implementation of the Inverse Short-Time Fourier Transform.
Definition at line 4895 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::and, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::max_abs_value(), offset, options, output, Aleph::Array< T >::size(), Aleph::size(), Aleph::FFT< Real >::slice_copy(), and Aleph::FFT< Real >::validate_istft_configuration().
Referenced by Aleph::FFT< Real >::istft(), Aleph::FFT< Real >::istft(), Aleph::FFT< Real >::pistft(), and Aleph::FFT< Real >::pistft().
|
inlinestaticprivate |
Rationale: Simultanous calculation of Jacobi sn, cn, dn functions using the descending Landen transformation or AGM.
Definition at line 3057 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::FFT< Real >::JacobiValues::cn, Aleph::FFT< Real >::complete_elliptic_first_kind(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::JacobiValues::dn, Aleph::FFT< Real >::ellint_1_impl(), Aleph::FFT< Real >::scaled_tolerance(), and Aleph::FFT< Real >::JacobiValues::sn.
Referenced by Aleph::FFT< Real >::elliptic_cd_minus_imaginary(), and Aleph::FFT< Real >::elliptic_prototype().
|
inlinestatic |
Returns the Kaiser beta that corresponds to an attenuation goal.
Definition at line 8885 of file fft.H.
References ah_invalid_argument_if, and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::firwin_bandpass(), Aleph::FFT< Real >::firwin_bandstop(), Aleph::FFT< Real >::firwin_highpass(), and Aleph::FFT< Real >::firwin_lowpass().
|
inlinestatic |
Returns a Kaiser window of length n.
Definition at line 8901 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::append(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::modified_bessel_i0(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::firwin_bandpass(), Aleph::FFT< Real >::firwin_bandstop(), Aleph::FFT< Real >::firwin_highpass(), and Aleph::FFT< Real >::firwin_lowpass().
|
inlinestatic |
|
inlinestaticprivate |
Lifts a real-valued input array to the complex domain.
Creates a new Array of complex numbers where the real part is taken from the input and the imaginary part is set to zero.
| input | The input array of real values. |
Definition at line 5541 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::prepare_stft_frame_input(), Aleph::FFT< Real >::project_to_plan_batch_spectra(), Aleph::FFT< Real >::project_to_plan_spectrum(), and Aleph::FFT< Real >::transform_real_optimized().
|
inlinestatic |
Returns |X[k]| for each frequency bin in an FFT output.
Definition at line 8806 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::FrequencyResponse::magnitude(), and Aleph::FFT< Real >::magnitude_spectrum().
|
inlinestatic |
Magnitude spectrum for complex-valued containers.
Definition at line 8819 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::magnitude_spectrum().
|
inlinestaticprivate |
Rationale: Validates that an Array of Arrays represents a rectangular matrix and returns its {rows, cols} shape.
Definition at line 5336 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::size(), and Aleph::size().
Referenced by Aleph::FFT< Real >::flatten_matrix_row_major(), Aleph::FFT< Real >::ptransformed2d(), and Aleph::FFT< Real >::transformed2d().
|
inlinestaticprivatenoexcept |
L-infinity norm.
Definition at line 729 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::max_value().
Referenced by Aleph::FFT< Real >::analytic_group_delay_impl(), Aleph::FFT< Real >::balance_polynomial_for_roots(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::evaluate_analog_transfer_magnitude(), Aleph::FFT< Real >::evaluate_series_at_unit_circle(), Aleph::FFT< Real >::extract_repeated_unit_roots(), Aleph::FFT< Real >::istft_impl(), Aleph::FFT< Real >::normalize_iir_coefficients(), Aleph::FFT< Real >::ISTFTProcessor::normalize_prefix(), Aleph::FFT< Real >::overlap_profile_has_cola(), Aleph::FFT< Real >::overlap_profile_has_nola(), Aleph::FFT< Real >::polynomial_root_lower_bound(), and Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestaticprivatenoexcept |
Returns the magnitude of the largest root in the set.
Definition at line 2271 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::enforce_conjugate_symmetry(), Aleph::FFT< Real >::root_groups_impl(), and Aleph::FFT< Real >::stability_margin().
|
inlinestaticprivatenoexcept |
Rationale: Estimates the minimum distance between any matched pole and zero to identify potential cancellations.
Definition at line 2358 of file fft.H.
References Aleph::and, and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::minimum_pole_zero_distance().
|
inlinestatic |
Definition at line 12409 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Returns the minimum pole/zero distance in a greedy pairing.
Definition at line 12383 of file fft.H.
References Aleph::FFT< Real >::minimum_cancellation_distance_impl(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
Referenced by Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::minimum_pole_zero_distance(), and Aleph::FFT< Real >::minimum_pole_zero_distance().
|
inlinestatic |
Definition at line 12390 of file fft.H.
References Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12403 of file fft.H.
References Aleph::FFT< Real >::minimum_pole_zero_distance(), and section().
|
inlinestatic |
Definition at line 12397 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::FFT< Real >::minimum_pole_zero_distance(), and Aleph::FFT< Real >::IIRCoefficients::numerator.
|
inlinestatic |
Definition at line 12417 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::minimum_pole_zero_distance().
|
inlinestatic |
Definition at line 12427 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::minimum_pole_zero_distance().
|
inlinestaticprivatenoexcept |
Standard Zeroth-order Modified Bessel function of the first kind.
Definition at line 3787 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), k, and Aleph::sum().
Referenced by Aleph::FFT< Real >::kaiser_window().
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Multiplies two complex-valued sequences using convolution.
This method computes the linear convolution of two arrays by:
Generic iterable containers of std::complex values are accepted through a separate overload.
This is equivalent to multiplying two polynomials whose coefficients are given by the input arrays.
| a | The first complex sequence (e.g., polynomial coefficients). |
| b | The second complex sequence. |
| std::invalid_argument | if the resulting size overflows size_t. |
Definition at line 15194 of file fft.H.
References Aleph::FFT< Real >::multiply_complex_impl().
Referenced by Aleph::FFT< Real >::multiply().
|
inlinestatic |
Multiplies two real-valued sequences using convolution.
Computes the linear convolution of two real arrays using the FFT-based multiplication algorithm. Generic iterable containers of real values convertible to Real are accepted through a separate overload.
| a | The first real sequence. |
| b | The second real sequence. |
| std::invalid_argument | if the resulting size overflows size_t. |
| std::domain_error | if the intermediate result has non-negligible imaginary parts (numerical instability). |
Definition at line 15240 of file fft.H.
References Aleph::FFT< Real >::multiply_real_optimized().
|
inlinestatic |
Multiplication for complex-valued containers.
Definition at line 15211 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), and Aleph::FFT< Real >::multiply().
|
inlinestatic |
Multiplication for real-valued containers.
Definition at line 15257 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::multiply().
|
inlinestaticprivate |
Rationale: Linear convolution of two complex sequences via FFT.
Definition at line 5720 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::next_power_of_two(), Aleph::parallel_for_index(), Aleph::Array< T >::size(), Aleph::FFT< Real >::transform_impl(), Aleph::FFT< Real >::trim_to_size(), and Aleph::FFT< Real >::zero_padded_copy().
Referenced by Aleph::FFT< Real >::multiply(), and Aleph::FFT< Real >::pmultiply().
|
inlinestaticprivate |
Rationale: Efficiently multiplies two real sequences using a single N-point complex FFT by packing one sequence into the real part and the other into the imaginary part.
Definition at line 5673 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), k, Aleph::FFT< Real >::next_power_of_two(), Aleph::parallel_for_index(), Aleph::FFT< Real >::project_real_output(), Aleph::Array< T >::reserve(), Aleph::Array< T >::size(), Aleph::FFT< Real >::transform_impl(), Aleph::FFT< Real >::trim_to_size(), and Aleph::FFT< Real >::zero_padded_copy().
Referenced by Aleph::FFT< Real >::multiply(), and Aleph::FFT< Real >::pmultiply().
|
inlinestaticnoexcept |
Returns whether the runtime CPU can execute the NEON kernel when it has been compiled in.
Definition at line 6085 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::detected_simd_backend(), and Aleph::FFT< Real >::neon_runtime_available().
|
inlinestaticconstexprnoexcept |
|
inlinestaticnoexcept |
Returns whether NEON dispatch is supported at runtime.
Definition at line 6264 of file fft.H.
References Aleph::FFT< Real >::neon_dispatch_available().
|
inlinestaticprivate |
Calculates the smallest power of two greater than or equal to n.
Used to determine the required size for FFT-based convolution.
| n | The input size. |
| std::invalid_argument | if n is zero or if an overflow occurs. |
Definition at line 5823 of file fft.H.
References ah_invalid_argument_if.
Referenced by Aleph::FFT< Real >::OverlapAdd::OverlapAdd(), Aleph::FFT< Real >::OverlapAddBank::OverlapAddBank(), Aleph::FFT< Real >::OverlapSave::OverlapSave(), Aleph::FFT< Real >::PartitionedConvolver::PartitionedConvolver(), Aleph::FFT< Real >::OverlapAdd::default_block_size(), Aleph::FFT< Real >::OverlapAddBank::default_block_size(), Aleph::FFT< Real >::OverlapSave::default_block_size(), Aleph::FFT< Real >::PartitionedConvolver::default_partition_size(), Aleph::FFT< Real >::Plan::initialize_bluestein_plan(), Aleph::FFT< Real >::multiply_complex_impl(), Aleph::FFT< Real >::multiply_real_optimized(), Aleph::FFT< Real >::ptransform_padded(), Aleph::FFT< Real >::ptransform_padded(), Aleph::FFT< Real >::resolve_welch_fft_size(), Aleph::FFT< Real >::transform_padded(), Aleph::FFT< Real >::transform_padded(), and Aleph::FFT< Real >::validate_stft_options().
|
inlinestaticprivate |
Rationale: Validates axis indices against the tensor rank and ensures no axis is specified more than once.
Definition at line 5148 of file fft.H.
References ah_invalid_argument_if, ah_out_of_range_error_if, Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::transform_axes_impl(), and Aleph::FFT< Real >::transform_axis_impl().
|
inlinestaticprivate |
Normalizes FIR coefficients to have unit gain at frequency omega.
Definition at line 3828 of file fft.H.
References ah_domain_error_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_fir_response_magnitude(), Aleph::FFT< Real >::scaled_tolerance(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::firwin_bandpass(), Aleph::FFT< Real >::firwin_bandstop(), Aleph::FFT< Real >::firwin_highpass(), and Aleph::FFT< Real >::firwin_lowpass_impl().
|
inlinestaticprivate |
Definition at line 929 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::max_abs_value(), and Aleph::FFT< Real >::IIRCoefficients::numerator.
Referenced by Aleph::FFT< Real >::SOSFilter::SOSFilter(), Aleph::FFT< Real >::bilinear_transform_impl(), Aleph::FFT< Real >::evaluate_transfer_at(), Aleph::FFT< Real >::evaluate_transfer_terms_at(), Aleph::FFT< Real >::iir_filtfilt_impl(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::section_from_coefficients(), Aleph::FFT< Real >::sos_filtfilt_impl(), and Aleph::FFT< Real >::transfer_function_to_sections().
|
inlinestaticprivate |
Rationale: Validates a tensor layout and infers row-major strides if they are not provided.
Ensures the layout is compatible with the actual flat buffer size.
Definition at line 5112 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::row_major_strides(), Aleph::FFT< Real >::TensorLayout::shape, Aleph::Array< T >::size(), Aleph::FFT< Real >::tensor_element_count(), and Aleph::FFT< Real >::tensor_max_offset().
Referenced by Aleph::FFT< Real >::transform_axes_impl(), and Aleph::FFT< Real >::transform_axis_impl().
|
inlinestaticprivatenoexcept |
Standard normalized sinc function sin(pi*x)/(pi*x).
Definition at line 3806 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::firwin_lowpass_impl().
|
inlinestaticprivate |
Maps bin indices to frequency in Hz.
Definition at line 773 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), k, and Aleph::Array< T >::size().
|
inlinestatic |
Convenience wrapper for long real convolution via overlap-add.
Definition at line 15048 of file fft.H.
References Aleph::FFT< Real >::OverlapAdd::convolve(), Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::is_empty().
Referenced by Aleph::FFT< Real >::overlap_add_convolution().
|
inlinestatic |
Overlap-add convolution for real-valued containers.
Definition at line 15122 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::overlap_add_convolution().
|
inlinestatic |
Multichannel overlap-add convolution with a shared kernel FFT.
Definition at line 15073 of file fft.H.
References Aleph::FFT< Real >::OverlapAddBank::convolve(), Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::is_empty().
|
inlinestatic |
Overlap-adds a frame sequence with a fixed hop size.
Definition at line 9580 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), offset, output, Aleph::Array< T >::size(), Aleph::size(), and Aleph::FFT< Real >::slice_copy().
|
inlinestaticprivate |
Rationale: Computes the effective window product for a windowed overlap-add process to validate reconstruction constraints.
Definition at line 613 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::validate_overlap_constraints(), and Aleph::FFT< Real >::window_overlap_profile().
|
inlinestaticprivatenoexcept |
Rationale: Constant Overlap-Add (COLA) ensures that OLA reconstruction has no amplitude modulation artifacts.
Definition at line 656 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::max_abs_value(), and Aleph::mean().
Referenced by Aleph::FFT< Real >::satisfies_cola(), and Aleph::FFT< Real >::validate_overlap_constraints().
|
inlinestaticprivatenoexcept |
Rationale: Non-zero Overlap-Add (NOLA) ensures the signal can be reconstructed (it's never multiplied by zero in all frames).
Definition at line 642 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::max_abs_value().
Referenced by Aleph::FFT< Real >::satisfies_nola(), and Aleph::FFT< Real >::validate_overlap_constraints().
|
inlinestatic |
Convenience wrapper for overlap-save real convolution.
Definition at line 15098 of file fft.H.
References Aleph::FFT< Real >::OverlapSave::convolve(), Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::is_empty().
Referenced by Aleph::FFT< Real >::overlap_save_convolution().
|
inlinestatic |
Overlap-save convolution for real-valued containers.
Definition at line 15152 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::overlap_save_convolution().
|
inlinestatic |
Definition at line 12358 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Greedily pairs zeros and poles by nearest distance.
Definition at line 12332 of file fft.H.
References Aleph::FFT< Real >::pole_zero_pairs_impl(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
Referenced by Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), and Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation().
|
inlinestatic |
Definition at line 12339 of file fft.H.
References Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12352 of file fft.H.
References Aleph::FFT< Real >::pair_poles_and_zeros(), and section().
|
inlinestatic |
Definition at line 12346 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::FFT< Real >::IIRCoefficients::numerator, and Aleph::FFT< Real >::pair_poles_and_zeros().
|
inlinestatic |
Definition at line 12366 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::pair_poles_and_zeros().
|
inlinestatic |
Definition at line 12376 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::pair_poles_and_zeros().
|
inlinestatic |
Convenience wrapper for low-latency partitioned convolution.
Definition at line 15109 of file fft.H.
References Aleph::FFT< Real >::PartitionedConvolver::convolve(), Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::is_empty().
Referenced by Aleph::FFT< Real >::partitioned_convolution().
|
inlinestatic |
Partitioned convolution for real-valued containers.
Definition at line 15165 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::partitioned_convolution().
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Definition at line 12105 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::parallel_for_index().
|
inlinestatic |
Parallel batched STFT across signals.
Definition at line 11262 of file fft.H.
References Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::ThreadPool::num_threads(), options, output, Aleph::parallel_for_index(), and Aleph::FFT< Real >::stft_impl().
Referenced by Aleph::FFT< Real >::pbatched_stft().
|
inlinestatic |
Parallel Hann-window batched STFT.
Definition at line 11298 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::hann_window(), options, and Aleph::FFT< Real >::pbatched_stft().
|
inlinestatic |
Parallel zero-phase FIR filtering via forward-backward convolution.
Definition at line 13592 of file fft.H.
References Aleph::Array< T >::create(), Aleph::FFT< Real >::default_filtfilt_pad_length(), Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), output, Aleph::FFT< Real >::prefix_copy(), Aleph::FFT< Real >::reflect_pad_signal(), Aleph::FFT< Real >::reverse_copy(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::slice_copy().
Referenced by Aleph::FFT< Real >::pfiltfilt().
|
inlinestatic |
Definition at line 13637 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::pfiltfilt().
|
inlinestatic |
Definition at line 12888 of file fft.H.
References Aleph::FFT< Real >::analytic_sos_group_delay_impl(), Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::freqz(), Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::FrequencyResponse::response, Aleph::Array< T >::size(), and Aleph::FFT< Real >::unwrap_phase().
|
inlinestatic |
Definition at line 12802 of file fft.H.
References Aleph::FFT< Real >::analytic_phase_delay_impl(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Definition at line 12827 of file fft.H.
References Aleph::FFT< Real >::analytic_phase_delay_impl(), and Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Definition at line 12866 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::phase_delay(), and section().
|
inlinestatic |
Definition at line 12949 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::phase_delay().
|
inlinestatic |
Estimates phase delay from a sampled frequency response.
Definition at line 12783 of file fft.H.
References Aleph::FFT< Real >::phase_delay_impl().
Referenced by Aleph::FFT< Real >::phase_delay(), Aleph::FFT< Real >::phase_delay(), Aleph::FFT< Real >::phase_delay(), Aleph::FFT< Real >::phase_delay(), and Aleph::FFT< Real >::phase_delay().
|
inlinestatic |
Definition at line 12847 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::IIRCoefficients::numerator, and Aleph::FFT< Real >::phase_delay().
|
inlinestatic |
Definition at line 12925 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::phase_delay().
|
inlinestatic |
Definition at line 12969 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::phase_delay().
|
inlinestaticprivate |
implementation of numeric phase delay calculation.
Definition at line 4838 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::group_delay_impl(), Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::FrequencyResponse::response, Aleph::Array< T >::size(), and Aleph::FFT< Real >::unwrap_phase().
Referenced by Aleph::FFT< Real >::phase_delay().
|
inlinestatic |
Definition at line 13071 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_sos_transfer_at(), Aleph::FFT< Real >::freqz(), and Aleph::FFT< Real >::phase_margin_refined_impl().
|
inlinestatic |
Definition at line 12991 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_transfer_at(), Aleph::FFT< Real >::freqz(), and Aleph::FFT< Real >::phase_margin_refined_impl().
|
inlinestatic |
Definition at line 13049 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::phase_margin(), and section().
|
inlinestatic |
Estimates phase margin around the unity-gain crossover.
Definition at line 12978 of file fft.H.
References Aleph::FFT< Real >::phase_margin_impl().
Referenced by Aleph::FFT< Real >::phase_margin(), Aleph::FFT< Real >::phase_margin(), Aleph::FFT< Real >::phase_margin(), and Aleph::FFT< Real >::phase_margin().
|
inlinestatic |
Definition at line 13033 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::IIRCoefficients::numerator, and Aleph::FFT< Real >::phase_margin().
|
inlinestatic |
Definition at line 13105 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::phase_margin().
|
inlinestatic |
Definition at line 13133 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::phase_margin().
|
inlinestaticprivate |
Definition at line 4504 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::interpolate_crossing(), Aleph::FFT< Real >::interpolate_value_at(), Aleph::FFT< Real >::FrequencyResponse::magnitude(), Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::FrequencyResponse::response, Aleph::Array< T >::size(), and Aleph::FFT< Real >::unwrap_phase().
Referenced by Aleph::FFT< Real >::phase_margin().
|
inlinestaticprivate |
implementation of refined Phase Margin calculation using analytic evaluation.
Definition at line 4634 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::align_phase_near_reference(), Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::interpolate_value_at(), Aleph::FFT< Real >::FrequencyResponse::magnitude(), Aleph::FFT< Real >::FrequencyResponse::omega, Aleph::FFT< Real >::phase_spectrum(), Aleph::FFT< Real >::refine_scalar_crossing(), Aleph::FFT< Real >::FrequencyResponse::response, Aleph::Array< T >::size(), Aleph::FFT< Real >::unwrap_phase(), and w.
Referenced by Aleph::FFT< Real >::phase_margin(), and Aleph::FFT< Real >::phase_margin().
|
inlinestatic |
Returns arg(X[k]) for each frequency bin in an FFT output.
Definition at line 8845 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::analytic_phase_delay_impl(), Aleph::FFT< Real >::gain_margin_impl(), Aleph::FFT< Real >::gain_margin_refined_impl(), Aleph::FFT< Real >::group_delay_impl(), Aleph::FFT< Real >::FrequencyResponse::phase(), Aleph::FFT< Real >::phase_delay(), Aleph::FFT< Real >::phase_delay_impl(), Aleph::FFT< Real >::phase_margin_impl(), Aleph::FFT< Real >::phase_margin_refined_impl(), and Aleph::FFT< Real >::phase_spectrum().
|
inlinestatic |
Definition at line 8857 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::phase_spectrum().
|
inlinestatic |
Parallel version of inverse_transform(const Array<Complex>&).
Definition at line 8661 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed().
|
inlinestatic |
Parallel version of inverse_transform(const Container&).
Definition at line 8680 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed().
|
inlinestatic |
Parallel functional inverse 2-D FFT wrapper.
Definition at line 8124 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed2d().
|
inlinestatic |
Parallel functional inverse 3-D FFT wrapper.
Definition at line 8219 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed3d().
|
inlinestatic |
Parallel functional batch IFFT wrapper.
Definition at line 7943 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed_batch().
|
inlinestatic |
Parallel version of inverse_transform_real(const Array<Complex>&).
Definition at line 8716 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::inverse_transform_real_general_impl(), Aleph::FFT< Real >::inverse_transform_real_optimized_impl(), Aleph::FFT< Real >::is_power_of_two(), and Aleph::FFT< Real >::transform_impl().
Referenced by Aleph::FFT< Real >::pinverse_transform_real(), and Aleph::FFT< Real >::pirfft().
|
inlinestatic |
Parallel version of inverse_transform_real(const Container&).
Definition at line 8774 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::pinverse_transform_real().
|
inlinestatic |
Parallel version of irfft(const Array<Complex>&, size_t).
Definition at line 8749 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::expand_real_spectrum(), Aleph::FFT< Real >::pinverse_transform_real(), and Aleph::FFT< Real >::spectrum().
Referenced by Aleph::FFT< Real >::pirfft().
|
inlinestatic |
Parallel version of irfft(const Container&, size_t).
Definition at line 8793 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::pirfft(), and Aleph::FFT< Real >::spectrum().
|
inlinestatic |
Parallel compact real inverse FFT for equal-length batches.
Definition at line 7988 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
|
inlinestatic |
Parallel ISTFT with explicit options.
Definition at line 10198 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::istft_impl(), and options.
|
inlinestatic |
Parallel STFT inversion using a thread pool.
Definition at line 10106 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::ISTFTOptions::hop_size, Aleph::FFT< Real >::istft_impl(), and options.
Referenced by Aleph::FFT< Real >::pistft(), Aleph::FFT< Real >::pistft(), Aleph::FFT< Real >::pistft(), and Aleph::FFT< Real >::pistft().
|
inlinestatic |
Parallel ISTFT using a shared analysis/synthesis window.
Definition at line 10215 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), options, and Aleph::FFT< Real >::pistft().
|
inlinestatic |
Parallel STFT inversion using a shared analysis/synthesis window.
Definition at line 10127 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::pistft().
|
inlinestatic |
Parallel Hann-window ISTFT with explicit options.
Definition at line 10226 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::hann_window(), options, and Aleph::FFT< Real >::pistft().
|
inlinestatic |
Parallel STFT inversion using a Hann window pair.
Definition at line 10145 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::hann_window(), and Aleph::FFT< Real >::pistft().
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Parallel version of multiply(const Array<Complex>&, const Array<Complex>&).
Definition at line 15201 of file fft.H.
References Aleph::FFT< Real >::multiply_complex_impl().
Referenced by Aleph::FFT< Real >::pmultiply().
|
inlinestatic |
Parallel version of multiply(const Array<Real>&, const Array<Real>&).
Definition at line 15247 of file fft.H.
References Aleph::FFT< Real >::multiply_real_optimized().
|
inlinestatic |
Parallel version of multiply(const Container1&, const Container2&).
Definition at line 15220 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), and Aleph::FFT< Real >::pmultiply().
|
inlinestatic |
Parallel version of multiply(const Container1&, const Container2&).
Definition at line 15266 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::pmultiply().
|
inlinestaticprivate |
Rationale: Matches zeros and poles into pairs by minimizing Euclidean distance, aiding in SOS decomposition.
Definition at line 2283 of file fft.H.
References Aleph::Array< T >::append(), Aleph::count(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::PoleZeroPair::pole, Aleph::FFT< Real >::poles(), Aleph::Array< T >::size(), Aleph::FFT< Real >::PoleZeroPair::zero, and Aleph::FFT< Real >::zeros().
Referenced by Aleph::FFT< Real >::pair_poles_and_zeros().
|
inlinestatic |
Definition at line 12290 of file fft.H.
References Aleph::FFT< Real >::append_all(), Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::poles().
|
inlinestatic |
Returns the poles of a transfer denominator.
Definition at line 12247 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::normalize_iir_coefficients(), and Aleph::FFT< Real >::polynomial_roots_impl().
Referenced by Aleph::FFT< Real >::bessel_prototype(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pole_zero_pairs_impl(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::stability_margin(), Aleph::FFT< Real >::transfer_function_to_sections(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12275 of file fft.H.
References Aleph::FFT< Real >::poles(), and section().
|
inlinestatic |
Definition at line 12309 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::poles().
|
inlinestatic |
Definition at line 12263 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, and Aleph::FFT< Real >::poles().
|
inlinestatic |
Definition at line 12325 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::poles().
|
inlinestaticprivatenoexcept |
Definition at line 1837 of file fft.H.
References Aleph::FFT< Real >::PolynomialEvaluation::derivative, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_polynomial_and_derivative(), and Aleph::FFT< Real >::PolynomialEvaluation::value.
Referenced by Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestaticprivate |
Rationale: Polynomial expansion (z-r1)(z-r2)...
Definition at line 2497 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::next(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::real_polynomial_from_roots().
|
inlinestaticprivate |
Rationale: Standard polynomial multiplication (O(N*M)).
Definition at line 2403 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), and output.
Referenced by Aleph::FFT< Real >::apply_analog_rational_transform(), Aleph::FFT< Real >::bilinear_substitute_polynomial(), Aleph::FFT< Real >::polynomial_power(), and Aleph::FFT< Real >::substitute_rational_polynomial().
|
inlinestaticprivate |
implementation of P(x)^n via successive multiplication.
Definition at line 2532 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), output, and Aleph::FFT< Real >::polynomial_multiply().
Referenced by Aleph::FFT< Real >::apply_analog_rational_transform().
|
inlinestaticprivatenoexcept |
Definition at line 1628 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::max_abs_value(), and Aleph::FFT< Real >::scaled_tolerance().
Referenced by Aleph::FFT< Real >::balance_polynomial_for_roots(), and Aleph::FFT< Real >::initialize_root_guesses().
|
inlinestaticprivatenoexcept |
Definition at line 1617 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::balance_polynomial_for_roots(), and Aleph::FFT< Real >::initialize_root_guesses().
|
inlinestaticprivate |
Rationale: Master implementation for polynomial root-finding.
It uses a multi-strategy approach (linear/quadratic solvers, Aberth-Ehrlich, Durand-Kerner, and Laguerre) with polynomial balancing and root polishing to ensure convergence and precision.
Definition at line 2024 of file fft.H.
References ah_domain_error_if, Aleph::FFT< Real >::balance_polynomial_for_roots(), Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::FFT< Real >::enforce_real_polynomial_symmetry(), Aleph::FFT< Real >::initialize_root_guesses(), Aleph::FFT< Real >::max_abs_value(), Aleph::FFT< Real >::polish_roots_with_newton(), Aleph::repeated(), Aleph::FFT< Real >::roots_pass_residual_check(), Aleph::FFT< Real >::scaled_tolerance(), Aleph::Array< T >::size(), Aleph::FFT< Real >::try_aberth_ehrlich_roots(), Aleph::FFT< Real >::try_durand_kerner_roots(), and Aleph::FFT< Real >::try_laguerre_roots().
Referenced by Aleph::FFT< Real >::bessel_prototype(), Aleph::FFT< Real >::poles(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Parallel convenience wrapper for overlap-add convolution.
Parallel version of overlap_add_convolution(const Array<Real>&, const Array<Real>&, size_t).
Definition at line 15060 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), and Aleph::FFT< Real >::OverlapAdd::pconvolve().
Referenced by Aleph::FFT< Real >::poverlap_add_convolution().
|
inlinestatic |
Parallel version of overlap_add_convolution(const Container1&, const Container2&, size_t).
Definition at line 15135 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::poverlap_add_convolution().
|
inlinestatic |
Parallel version of overlap_add_convolution_batch.
Definition at line 15084 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), and Aleph::FFT< Real >::OverlapAddBank::pconvolve().
|
inlinestatic |
Returns |X[k]|^2 for each frequency bin in an FFT output.
Definition at line 8826 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::FrequencyResponse::power(), and Aleph::FFT< Real >::power_spectrum().
|
inlinestatic |
Definition at line 8838 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::power_spectrum().
|
inlinestaticprivate |
Functional prefix extraction.
Definition at line 512 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), output, and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::filtfilt(), and Aleph::FFT< Real >::pfiltfilt().
|
inlinestaticprivate |
Definition at line 1377 of file fft.H.
References Aleph::FFT< Real >::apply_window(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::lift_real_input(), and Aleph::FFT< Real >::zero_padded_copy().
Referenced by Aleph::FFT< Real >::transform_stft_frames().
|
inlinestaticprivate |
Rationale: Encapsulates frame extraction, detrending and windowing common to Welch and other spectral estimators.
Definition at line 829 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::apply_window(), Aleph::FFT< Real >::demean_copy(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::frame_signal(), Aleph::Array< T >::is_empty(), options, Aleph::FFT< Real >::resolve_welch_hop_size(), and Aleph::Array< T >::size().
|
inlinestaticprivate |
Prewarps a pair of band edges for bilinear transform.
Definition at line 3602 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::prewarp_frequency().
Referenced by Aleph::FFT< Real >::bessel_bandpass(), Aleph::FFT< Real >::butterworth_bandpass(), Aleph::FFT< Real >::chebyshev1_bandpass(), Aleph::FFT< Real >::chebyshev2_bandpass(), Aleph::FFT< Real >::chebyshev2_bandstop(), Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), Aleph::FFT< Real >::elliptic_bandpass(), and Aleph::FFT< Real >::elliptic_bandstop().
|
inlinestaticprivate |
Rationale: Prewarps an analog cutoff frequency to compensate for the non-linear frequency mapping of the bilinear transform.
Definition at line 2922 of file fft.H.
References ah_invalid_argument_if, and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::design_low_high_sections(), Aleph::FFT< Real >::design_prototype_sections(), and Aleph::FFT< Real >::prewarp_band_edges().
|
inlinestatic |
Parallel version of rfft(const Array<Real>&).
Definition at line 8477 of file fft.H.
References Aleph::FFT< Real >::compact_real_spectrum(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransform().
Referenced by Aleph::FFT< Real >::prfft().
|
inlinestatic |
Parallel version of rfft(const Container&).
Definition at line 8569 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::prfft().
|
inlinestatic |
Parallel compact real FFT for equal-length real batches.
Definition at line 7963 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::size().
|
inlinestaticprivate |
Definition at line 7760 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, Aleph::FFT< Real >::project_real_output(), and Aleph::Array< T >::reserve().
|
inlinestaticprivate |
Projects a complex-valued output array back to the real domain.
Extracts the real parts of the complex numbers in the input array. It verifies that the imaginary parts are within a negligible tolerance relative to the magnitude of the values.
| input | The input array of complex values. |
| ctx | A context string for error reporting (usually the caller name). |
| std::domain_error | if any imaginary part exceeds the tolerance. |
Definition at line 5768 of file fft.H.
References ah_domain_error_if, Aleph::divide_and_conquer_partition_dp(), output, Aleph::Array< T >::reserve(), and Aleph::FFT< Real >::transform_stages().
Referenced by Aleph::FFT< Real >::Plan::inverse_transform_real(), Aleph::FFT< Real >::inverse_transform_real_general_impl(), Aleph::FFT< Real >::multiply_real_optimized(), Aleph::FFT< Real >::Plan::pinverse_transform_real(), and Aleph::FFT< Real >::project_real_batch_output().
|
inlinestaticprivate |
Definition at line 7662 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::lift_real_input(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::Plan::prfft_batch(), and Aleph::FFT< Real >::Plan::rfft_batch().
|
inlinestaticprivate |
Definition at line 7648 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::lift_real_input().
Referenced by Aleph::FFT< Real >::Plan::prfft(), and Aleph::FFT< Real >::Plan::rfft().
|
inlinestatic |
Parallel version of spectrum(const Array<Complex>&).
Definition at line 8584 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed().
|
inlinestatic |
Parallel version of spectrum(const Array<Real>&).
Definition at line 8599 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransform().
|
inlinestatic |
Parallel version of spectrum(const Container&).
Definition at line 8618 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed().
|
inlinestatic |
Parallel version of spectrum(const Container&).
Definition at line 8637 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransform().
|
inlinestatic |
Parallel STFT using explicit analysis options.
Definition at line 9979 of file fft.H.
References options, and Aleph::FFT< Real >::stft_impl().
Referenced by Aleph::FFT< Real >::pstft(), Aleph::FFT< Real >::pstft(), and Aleph::FFT< Real >::pstft().
|
inlinestatic |
Parallel Hann-window STFT with explicit analysis options.
Definition at line 9999 of file fft.H.
References Aleph::FFT< Real >::hann_window(), options, and Aleph::FFT< Real >::pstft().
|
inlinestatic |
Definition at line 10047 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), options, and Aleph::FFT< Real >::pstft().
|
inlinestatic |
Definition at line 10021 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), options, and Aleph::FFT< Real >::pstft().
|
inlinestatic |
Parallel in-place FFT/IFFT using a thread pool.
Equivalent to transform but distributes work across pool. The transform is applied in-place to the complex array a.
| pool | Thread pool to use for parallel execution. |
| a | Array of complex values to transform in-place. |
| invert | If true, computes the inverse transform (IFFT). |
| chunk_size | Minimum number of elements per worker task (0 = automatic). |
| std::invalid_argument | if the size of a is zero. |
| std::bad_alloc | if memory allocation fails. |
Definition at line 7841 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_any_size_impl().
Referenced by Aleph::FFT< Real >::prfft(), Aleph::FFT< Real >::pspectrum(), Aleph::FFT< Real >::pspectrum(), Aleph::FFT< Real >::ptransform(), Aleph::FFT< Real >::ptransform_padded(), Aleph::FFT< Real >::ptransform_padded(), and Aleph::FFT< Real >::ptransformed().
|
inlinestatic |
Parallel real-input FFT.
Parallel equivalent of transform(const Array<Real>&).
| pool | Thread pool for parallel execution. |
| input | Input array of real values. |
| chunk_size | Minimum elements per worker task (0 = automatic). |
Array<Complex> containing the frequency spectrum. | std::invalid_argument | if the input is empty. |
| std::bad_alloc | if memory allocation fails. |
Definition at line 8457 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_real_optimized().
|
inlinestatic |
Parallel version of transform(const Container&).
Definition at line 8512 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed().
|
inlinestatic |
Parallel version of transform(const Container&).
Definition at line 8550 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransform().
|
inlinestatic |
Parallel in-place FFT/IFFT along multiple tensor axes.
Definition at line 8044 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_axes_impl().
Referenced by Aleph::FFT< Real >::ptransformed2d(), Aleph::FFT< Real >::ptransformed2d_batch(), Aleph::FFT< Real >::ptransformed3d(), and Aleph::FFT< Real >::ptransformed_axes().
|
inlinestatic |
Parallel in-place 1-D FFT/IFFT along one tensor axis.
Definition at line 8022 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_axis_impl().
|
inlinestatic |
Parallel in-place batch transform for equal-length inputs.
Definition at line 7900 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::size().
Referenced by Aleph::FFT< Real >::ptransformed_batch().
|
inlinestatic |
Definition at line 8339 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::next_power_of_two(), output, Aleph::FFT< Real >::ptransform(), and Aleph::FFT< Real >::zero_padded_copy().
Referenced by Aleph::FFT< Real >::ptransform_padded().
|
inlinestatic |
Parallel version of transform_padded(const Array<Real>&).
Definition at line 8492 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::next_power_of_two(), Aleph::FFT< Real >::ptransform(), and Aleph::FFT< Real >::zero_padded_copy().
|
inlinestatic |
Parallel zero-pad and forward-FFT for a generic complex iterable.
| Container | Any iterable whose elements are std::complex<Real>. |
| pool | Thread pool for parallel execution. |
| input | The input container. |
| chunk_size | Minimum elements per worker task (0 = automatic). |
Array<Complex> zero-padded and transformed. | std::invalid_argument | if the input is empty. |
| std::bad_alloc | if memory allocation fails. |
Definition at line 8382 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransform_padded().
|
inlinestatic |
Parallel version of transform_padded(const Container&).
Definition at line 8531 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransform_padded().
|
inlinestatic |
Parallel FFT/IFFT that returns a new array.
Functional parallel wrapper around ptransform.
| pool | Thread pool to use for parallel execution. |
| input | Input array of complex values. |
| invert | If true, computes the inverse transform. |
| chunk_size | Minimum elements per worker task (0 = automatic). |
| std::invalid_argument | if the input size is zero. |
| std::bad_alloc | if memory allocation fails. |
Definition at line 7879 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::ptransform().
Referenced by Aleph::FFT< Real >::pinverse_transform(), Aleph::FFT< Real >::pinverse_transform(), Aleph::FFT< Real >::pspectrum(), Aleph::FFT< Real >::pspectrum(), Aleph::FFT< Real >::ptransform(), and Aleph::FFT< Real >::ptransformed().
|
inlinestatic |
Parallel FFT/IFFT for a generic complex iterable.
| Container | Any iterable whose elements are std::complex<Real>. |
| pool | Thread pool for parallel execution. |
| input | The input container. |
| invert | If true, computes the inverse transform. |
| chunk_size | Minimum elements per worker task (0 = automatic). |
Array<Complex> containing the transformed values. | std::invalid_argument | if the input is empty. |
| std::bad_alloc | if memory allocation fails. |
Definition at line 8423 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::ptransformed().
|
inlinestatic |
Parallel functional 2-D FFT/IFFT wrapper for matrices.
Definition at line 8096 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::flatten_matrix_row_major(), Aleph::FFT< Real >::matrix_shape(), Aleph::FFT< Real >::ptransform_axes(), Aleph::FFT< Real >::reshape_matrix_row_major(), and Aleph::FFT< Real >::row_major_layout().
Referenced by Aleph::FFT< Real >::pinverse_transform2d().
|
inlinestatic |
Parallel functional 2-D batched FFT/IFFT wrapper.
Definition at line 8149 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::flatten_tensor3_row_major(), Aleph::FFT< Real >::ptransform_axes(), Aleph::FFT< Real >::reshape_tensor3_row_major(), Aleph::FFT< Real >::row_major_layout(), and Aleph::FFT< Real >::tensor3_shape().
|
inlinestatic |
Parallel functional 3-D FFT/IFFT wrapper for tensors.
Definition at line 8190 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::flatten_tensor3_row_major(), Aleph::FFT< Real >::ptransform_axes(), Aleph::FFT< Real >::reshape_tensor3_row_major(), Aleph::FFT< Real >::row_major_layout(), and Aleph::FFT< Real >::tensor3_shape().
Referenced by Aleph::FFT< Real >::pinverse_transform3d().
|
inlinestatic |
Parallel functional tensor FFT/IFFT wrapper for flat buffers.
Definition at line 8068 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::ptransform_axes().
|
inlinestatic |
Parallel functional batch FFT/IFFT wrapper.
Definition at line 7924 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::ptransform_batch().
Referenced by Aleph::FFT< Real >::pinverse_transform_batch().
|
inlinestaticprivate |
Rationale: Constructs a real-coefficient polynomial from a set of complex roots, verifying that roots appear in conjugate pairs.
Definition at line 2662 of file fft.H.
References ah_domain_error_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::polynomial_from_roots_complex(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::bessel_prototype(), Aleph::FFT< Real >::chebyshev1_prototype(), Aleph::FFT< Real >::chebyshev2_prototype(), Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), Aleph::FFT< Real >::design_prototype_sections(), Aleph::FFT< Real >::design_transformed_sections(), Aleph::FFT< Real >::elliptic_prototype(), and Aleph::FFT< Real >::transfer_function_to_sections().
|
inlinestaticprivatenoexcept |
Rationale: Estimates the maximum expected numerical noise for a value after an N-point transform, used to validate real projections.
Definition at line 414 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_stages().
Referenced by Aleph::FFT< Real >::validate_real_spectrum().
|
inlinestaticprivatenoexcept |
Definition at line 1325 of file fft.H.
References Aleph::and, and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::transform_stft_frames().
|
inlinestaticprivate |
Definition at line 4440 of file fft.H.
References Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::interpolate_crossing(), Aleph::FFT< Real >::scaled_tolerance(), y0(), and y1().
Referenced by Aleph::FFT< Real >::gain_margin_refined_impl(), and Aleph::FFT< Real >::phase_margin_refined_impl().
|
inlinestaticprivate |
Rationale: Applies reflection padding at signal edges to reduce boundary artifacts during filtering.
Definition at line 564 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), output, Aleph::Array< T >::reserve(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::iir_filtfilt_impl(), Aleph::FFT< Real >::pfiltfilt(), and Aleph::FFT< Real >::sos_filtfilt_impl().
|
inlinestatic |
FIR equiripple design via a dense-grid Remez exchange.
Definition at line 9221 of file fft.H.
Referenced by Aleph::FFT< Real >::remez(), and Aleph::FFT< Real >::remez().
|
inlinestatic |
Definition at line 9243 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::remez().
|
inlinestatic |
Definition at line 9261 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::remez().
|
inlinestaticprivate |
Definition at line 4322 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::FFT< Real >::build_weighted_frequency_grid(), Aleph::FFT< Real >::choose_remez_extrema(), Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_cosine_series(), Aleph::FFT< Real >::evenly_spaced_extrema(), k, Aleph::Array< T >::size(), and Aleph::FFT< Real >::solve_remez_cosine_series().
|
inlinestatic |
Polyphase resampling with explicit FIR coefficients.
Definition at line 9332 of file fft.H.
References ah_invalid_argument_if, ah_runtime_error_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::Array< T >::is_empty(), output, Aleph::Array< T >::size(), Aleph::FFT< Real >::slice_copy(), and Aleph::FFT< Real >::upfirdn().
Referenced by Aleph::FFT< Real >::resample_poly().
|
inlinestatic |
Definition at line 9408 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::resample_poly().
|
inlinestatic |
|
inlinestaticprivate |
Rationale: Reshapes a 1D row-major array back into a 2D matrix.
Definition at line 5369 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), and output.
Referenced by Aleph::FFT< Real >::ptransformed2d(), and Aleph::FFT< Real >::transformed2d().
|
inlinestaticprivate |
Rationale: Reshapes a 1D row-major array back into a 3D tensor.
Definition at line 5439 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), k, and output.
Referenced by Aleph::FFT< Real >::ptransformed2d_batch(), Aleph::FFT< Real >::ptransformed3d(), Aleph::FFT< Real >::transformed2d_batch(), and Aleph::FFT< Real >::transformed3d().
|
inlinestaticprivate |
Definition at line 7703 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::spectrum().
Referenced by Aleph::FFT< Real >::expand_real_spectrum().
|
inlinestaticprivate |
Default FFT size for Welch analysis (zero-padded to power of 2).
Definition at line 814 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::next_power_of_two(), and options.
|
inlinestaticprivate |
Default hop size for Welch analysis (50% overlap).
Definition at line 802 of file fft.H.
References ah_invalid_argument_if, and options.
Referenced by Aleph::FFT< Real >::prepare_welch_frames().
|
inlinestaticprivate |
Rationale: Generates coefficients for the Reverse Bessel Polynomial used in Bessel filter prototypes.
Definition at line 3453 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), and k.
Referenced by Aleph::FFT< Real >::bessel_prototype().
|
inlinestaticprivate |
Functional reverse.
Definition at line 500 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::iir_filtfilt_impl(), Aleph::FFT< Real >::pfiltfilt(), and Aleph::FFT< Real >::sos_filtfilt_impl().
|
inlinestatic |
Computes the compact real FFT of size floor(N/2) + 1.
The returned layout stores bins 0..floor(N/2) only. For odd-length signals, callers must pass the original signal length back to irfft because the compact layout alone is ambiguous.
Definition at line 8470 of file fft.H.
References Aleph::FFT< Real >::compact_real_spectrum(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform().
Referenced by Aleph::FFT< Real >::rfft().
|
inlinestatic |
Compact real FFT for real-valued containers.
Definition at line 8560 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::rfft().
|
inlinestatic |
Functional compact real FFT for equal-length real batches.
Definition at line 7952 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::size().
|
inlinestaticprivate |
Rationale: Partitions a set of roots into real sections and conjugate pairs to facilitate SOS decomposition.
Definition at line 2750 of file fft.H.
References ah_domain_error_if, Aleph::Array< T >::append(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::enforce_conjugate_symmetry(), Aleph::error(), Aleph::FFT< Real >::group_center(), Aleph::FFT< Real >::max_root_radius(), Aleph::FFT< Real >::RootGroup::roots, and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::design_prototype_sections(), Aleph::FFT< Real >::transfer_function_to_sections(), and Aleph::FFT< Real >::transfer_function_to_sections().
|
inlinestaticprivatenoexcept |
Definition at line 1906 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_polynomial_and_derivative(), k, and Aleph::FFT< Real >::PolynomialEvaluation::value.
Referenced by Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestatic |
Builds a default row-major tensor layout for a flat buffer.
Definition at line 8002 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::row_major_strides(), and Aleph::FFT< Real >::TensorLayout::shape.
Referenced by Aleph::FFT< Real >::ptransformed2d(), Aleph::FFT< Real >::ptransformed2d_batch(), Aleph::FFT< Real >::ptransformed3d(), Aleph::FFT< Real >::transformed2d(), Aleph::FFT< Real >::transformed2d_batch(), and Aleph::FFT< Real >::transformed3d().
|
inlinestaticprivate |
Definition at line 5074 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::saturating_product(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::tensor_element_count().
Referenced by Aleph::FFT< Real >::normalize_tensor_layout(), and Aleph::FFT< Real >::row_major_layout().
|
inlinestatic |
Returns true when the window pair satisfies COLA.
Definition at line 9846 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::overlap_profile_has_cola(), and Aleph::FFT< Real >::window_overlap_profile().
Referenced by Aleph::FFT< Real >::satisfies_cola().
|
inlinestatic |
Returns true when one window satisfies COLA by itself.
Definition at line 9864 of file fft.H.
References Aleph::FFT< Real >::satisfies_cola().
|
inlinestatic |
Returns true when the window pair satisfies NOLA.
Definition at line 9835 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::overlap_profile_has_nola(), and Aleph::FFT< Real >::window_overlap_profile().
Referenced by Aleph::FFT< Real >::satisfies_nola().
|
inlinestatic |
Returns true when one window satisfies NOLA by itself.
Definition at line 9857 of file fft.H.
References Aleph::FFT< Real >::satisfies_nola().
|
inlinestaticconstexprprivatenoexcept |
Definition at line 1293 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::axis_base_offsets(), Aleph::FFT< Real >::row_major_strides(), Aleph::FFT< Real >::should_parallelize_batch_work(), Aleph::FFT< Real >::tensor_element_count(), and Aleph::FFT< Real >::tensor_max_offset().
|
inlinestaticprivate |
Scalar scaling.
Definition at line 881 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), and output.
Referenced by Aleph::FFT< Real >::iir_filtfilt_impl(), and Aleph::FFT< Real >::sos_filtfilt_impl().
|
inlinestaticprivatenoexcept |
Definition at line 912 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::apply_analog_rational_transform(), Aleph::FFT< Real >::balance_polynomial_for_roots(), Aleph::FFT< Real >::build_weighted_frequency_grid(), Aleph::FFT< Real >::choose_remez_extrema(), Aleph::FFT< Real >::elliptic_cd_minus_imaginary(), Aleph::FFT< Real >::elliptic_prototype(), Aleph::FFT< Real >::evaluate_analog_transfer_magnitude(), Aleph::FFT< Real >::extract_repeated_unit_roots(), Aleph::FFT< Real >::firls_impl(), Aleph::FFT< Real >::jacobi_sn_cn_dn(), Aleph::FFT< Real >::normalize_fir_at_omega(), Aleph::FFT< Real >::polynomial_root_lower_bound(), Aleph::FFT< Real >::polynomial_roots_impl(), and Aleph::FFT< Real >::refine_scalar_crossing().
|
inlinestaticprivate |
Rationale: Writes back a transformed contiguous slice into its original (potentially non-contiguous) memory locations.
Definition at line 5245 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::transform_axis_impl().
|
inlinestaticprivate |
Rationale: Converts generic IIR coefficients into a stabilized BiquadSection structure, enforcing the second-order limit.
Definition at line 2856 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::normalize_iir_coefficients(), Aleph::FFT< Real >::IIRCoefficients::numerator, section(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::design_prototype_sections(), and Aleph::FFT< Real >::transfer_function_to_sections().
|
inlinestaticprivatenoexcept |
Definition at line 920 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::analytic_group_delay_impl(), Aleph::FFT< Real >::analytic_sos_group_delay_impl(), Aleph::FFT< Real >::evaluate_transfer_at(), and Aleph::FFT< Real >::evaluate_transfer_terms_at().
|
inlinestaticprivatenoexcept |
Definition at line 1303 of file fft.H.
References Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::ThreadPool::num_threads(), and Aleph::FFT< Real >::saturating_product().
Referenced by Aleph::FFT< Real >::OverlapAddBank::convolve_impl(), Aleph::FFT< Real >::OverlapAddBank::process_chunk_batch_impl(), and Aleph::FFT< Real >::transform_stft_frames().
|
inlinestaticprivate |
Rationale: Computes (1 + sign*x)^power coefficients.
Definition at line 2446 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), and k.
Referenced by Aleph::FFT< Real >::bilinear_substitute_polynomial().
|
inlinestaticnoexcept |
Returns the default SIMD backend used by standalone plan transforms for this precision.
Definition at line 6195 of file fft.H.
References Aleph::FFT< Real >::automatic, Aleph::FFT< Real >::avx2, Aleph::FFT< Real >::avx2_only, Aleph::FFT< Real >::detected_simd_backend(), Aleph::FFT< Real >::neon, Aleph::FFT< Real >::neon_only, Aleph::FFT< Real >::scalar, Aleph::FFT< Real >::scalar_only, and Aleph::FFT< Real >::simd_preference().
Referenced by Aleph::FFT< Real >::simd_backend_name().
|
inlinestaticnoexcept |
Returns the active default SIMD backend name for this precision.
Definition at line 6212 of file fft.H.
References Aleph::FFT< Real >::simd_backend(), and Aleph::FFT< Real >::simd_backend_name().
Referenced by Aleph::FFT< Real >::batched_plan_simd_backend_name(), Aleph::FFT< Real >::detected_simd_backend_name(), and Aleph::FFT< Real >::simd_backend_name().
|
inlinestaticconstexprnoexcept |
Returns the human-readable name of a SIMD backend.
Definition at line 6003 of file fft.H.
References Aleph::FFT< Real >::avx2, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::neon, and Aleph::FFT< Real >::scalar.
|
inlinestaticnoexcept |
Returns the runtime SIMD preference requested via environment.
ALEPH_FFT_SIMD=auto|scalar|avx2 is preferred. Legacy compatibility is preserved through ALEPH_FFT_ENABLE_AVX2=1 and ALEPH_FFT_DISABLE_AVX2=1.
Definition at line 6161 of file fft.H.
References Aleph::and, Aleph::FFT< Real >::automatic, Aleph::FFT< Real >::avx2_only, Aleph::divide_and_conquer_partition_dp(), Aleph::mode(), Aleph::FFT< Real >::neon_only, and Aleph::FFT< Real >::scalar_only.
Referenced by Aleph::FFT< Real >::batched_plan_simd_backend(), Aleph::FFT< Real >::Plan::should_use_avx2(), Aleph::FFT< Real >::Plan::should_use_neon(), Aleph::FFT< Real >::simd_backend(), and Aleph::FFT< Real >::simd_preference_name().
|
inlinestaticnoexcept |
Returns the requested SIMD policy name.
Definition at line 6250 of file fft.H.
References Aleph::FFT< Real >::simd_preference(), and Aleph::FFT< Real >::simd_preference_name().
Referenced by Aleph::FFT< Real >::simd_preference_name().
|
inlinestaticconstexprnoexcept |
Returns the human-readable name of a SIMD preference.
Definition at line 6019 of file fft.H.
References Aleph::FFT< Real >::automatic, Aleph::FFT< Real >::avx2_only, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::neon_only, and Aleph::FFT< Real >::scalar_only.
|
inlinestaticprivate |
Functional slice extraction.
Definition at line 528 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), offset, output, and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::filtfilt(), Aleph::FFT< Real >::OverlapSave::flush(), Aleph::FFT< Real >::PartitionedConvolver::flush(), Aleph::FFT< Real >::iir_filtfilt_impl(), Aleph::FFT< Real >::istft_impl(), Aleph::FFT< Real >::overlap_add_frames(), Aleph::FFT< Real >::pfiltfilt(), Aleph::FFT< Real >::OverlapSave::process_block(), Aleph::FFT< Real >::PartitionedConvolver::process_block(), Aleph::FFT< Real >::OverlapSave::process_chunk_impl(), Aleph::FFT< Real >::resample_poly(), and Aleph::FFT< Real >::sos_filtfilt_impl().
|
inlinestaticprivate |
Definition at line 968 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), k, Aleph::Array< T >::size(), and Aleph::sum().
Referenced by Aleph::FFT< Real >::firls_impl(), Aleph::FFT< Real >::iir_steady_state(), and Aleph::FFT< Real >::solve_remez_cosine_series().
|
inlinestaticprivate |
Definition at line 3157 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::complete_elliptic_first_kind(), and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::elliptic_prototype().
|
inlinestaticprivate |
Definition at line 4288 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::solve_dense_system().
Referenced by Aleph::FFT< Real >::remez_impl().
|
inlinestaticprivate |
Definition at line 1192 of file fft.H.
References Aleph::FFT< Real >::default_filtfilt_pad_length(), Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::iir_filter_impl(), Aleph::FFT< Real >::iir_steady_state(), Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::normalize_iir_coefficients(), output, Aleph::FFT< Real >::reflect_pad_signal(), Aleph::Array< T >::reserve(), Aleph::FFT< Real >::reverse_copy(), Aleph::FFT< Real >::scaled_copy(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::slice_copy().
Referenced by Aleph::FFT< Real >::filtfilt().
|
inlinestatic |
One-shot causal filtering of a cascade of second-order sections.
Definition at line 12074 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::SOSFilter::filter().
Referenced by Aleph::FFT< Real >::batched_sosfilt(), and Aleph::FFT< Real >::sosfilt().
|
inlinestatic |
Definition at line 12084 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::sosfilt().
|
inlinestatic |
DSP alias for the forward FFT.
Definition at line 8577 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed().
Referenced by Aleph::FFT< Real >::OverlapAdd::convolve_impl(), Aleph::FFT< Real >::expand_real_spectrum(), Aleph::FFT< Real >::Plan::irfft(), Aleph::FFT< Real >::irfft(), Aleph::FFT< Real >::irfft(), Aleph::FFT< Real >::Plan::pirfft(), Aleph::FFT< Real >::pirfft(), Aleph::FFT< Real >::pirfft(), Aleph::FFT< Real >::OverlapAdd::pointwise_multiply(), Aleph::FFT< Real >::ISTFTProcessor::pprocess_frame(), Aleph::FFT< Real >::ISTFTProcessor::pprocess_frame(), Aleph::FFT< Real >::OverlapAdd::process_chunk_impl(), Aleph::FFT< Real >::ISTFTProcessor::process_frame(), Aleph::FFT< Real >::ISTFTProcessor::process_frame(), Aleph::FFT< Real >::ISTFTProcessor::process_frame_impl(), Aleph::FFT< Real >::resolve_irfft_signal_size(), Aleph::FFT< Real >::transform_real_optimized(), Aleph::FFT< Real >::windowed_spectrum(), Aleph::FFT< Real >::windowed_spectrum(), and Aleph::FFT< Real >::PartitionedConvolver::zero_spectrum().
|
inlinestatic |
DSP alias for the real forward FFT.
Definition at line 8592 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform().
|
inlinestatic |
DSP alias for complex-valued container forward FFT.
Definition at line 8609 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed().
|
inlinestatic |
DSP alias for real-valued container forward FFT.
Definition at line 8628 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform().
|
inlinestatic |
Definition at line 12452 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::stability_margin().
|
inlinestatic |
Signed stability margin relative to the unit circle.
Definition at line 12434 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::max_root_radius(), and Aleph::FFT< Real >::poles().
Referenced by Aleph::FFT< Real >::is_stable(), Aleph::FFT< Real >::stability_margin(), Aleph::FFT< Real >::stability_margin(), Aleph::FFT< Real >::stability_margin(), Aleph::FFT< Real >::stability_margin(), Aleph::FFT< Real >::stability_margin(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12446 of file fft.H.
References section(), and Aleph::FFT< Real >::stability_margin().
|
inlinestatic |
Definition at line 12466 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::stability_margin().
|
inlinestatic |
Definition at line 12440 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, and Aleph::FFT< Real >::stability_margin().
|
inlinestatic |
Definition at line 12474 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::stability_margin().
|
inlinestatic |
Computes a basic STFT for a real signal using a custom window.
Each frame is windowed and transformed with zero-padding to the next power-of-two FFT size when needed.
Definition at line 9925 of file fft.H.
References Aleph::FFT< Real >::STFTOptions::hop_size, options, and Aleph::FFT< Real >::stft_impl().
Referenced by Aleph::FFT< Real >::stft(), Aleph::FFT< Real >::stft(), Aleph::FFT< Real >::stft(), Aleph::FFT< Real >::stft(), Aleph::FFT< Real >::stft(), and Aleph::FFT< Real >::stft().
|
inlinestatic |
Computes an STFT with explicit analysis options.
Definition at line 9970 of file fft.H.
References options, and Aleph::FFT< Real >::stft_impl().
|
inlinestatic |
Computes a basic STFT for a real signal using a Hann window.
Definition at line 9938 of file fft.H.
References Aleph::FFT< Real >::hann_window(), and Aleph::FFT< Real >::stft().
|
inlinestatic |
Computes a Hann-window STFT with explicit analysis options.
Definition at line 9990 of file fft.H.
References Aleph::FFT< Real >::hann_window(), options, and Aleph::FFT< Real >::stft().
|
inlinestatic |
Definition at line 9960 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::stft().
|
inlinestatic |
Definition at line 10037 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), options, and Aleph::FFT< Real >::stft().
|
inlinestatic |
Definition at line 9949 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::stft().
|
inlinestatic |
Definition at line 10011 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), options, and Aleph::FFT< Real >::stft().
|
inlinestaticprivate |
Definition at line 1434 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::frame_signal(), Aleph::Array< T >::is_empty(), options, Aleph::Array< T >::size(), Aleph::FFT< Real >::transform_stft_frames(), Aleph::FFT< Real >::validate_stft_options(), and Aleph::FFT< Real >::zero_pad_edges().
Referenced by Aleph::FFT< Real >::batched_stft(), Aleph::FFT< Real >::pbatched_stft(), Aleph::FFT< Real >::pstft(), Aleph::FFT< Real >::stft(), and Aleph::FFT< Real >::stft().
|
inlinestaticprivate |
Rationale: Evaluates P(N(z)/D(z)) by scaling by the common denominator D(z)^degree and evaluating the resulting nested polynomial expansion.
Definition at line 2549 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::effective_coeff_length(), Aleph::Array< T >::is_empty(), output, Aleph::FFT< Real >::polynomial_multiply(), and Aleph::FFT< Real >::trim_polynomial_leading_zeros().
Referenced by Aleph::FFT< Real >::apply_analog_rational_transform().
|
inlinestaticprivatenoexcept |
L2 norm squared.
Definition at line 749 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::window_enbw(), and Aleph::FFT< Real >::window_energy().
|
inlinestaticprivatenoexcept |
Sum reduction.
Definition at line 739 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::demean_copy(), Aleph::FFT< Real >::window_coherent_gain(), and Aleph::FFT< Real >::window_enbw().
|
inlinestaticprivate |
Rationale: Validates that a nested Array represents a 3D tensor and returns its {d0, d1, d2} shape.
Definition at line 5394 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::size(), and Aleph::size().
Referenced by Aleph::FFT< Real >::flatten_tensor3_row_major(), Aleph::FFT< Real >::ptransformed2d_batch(), Aleph::FFT< Real >::ptransformed3d(), Aleph::FFT< Real >::transformed2d_batch(), and Aleph::FFT< Real >::transformed3d().
|
inlinestaticprivate |
Definition at line 5057 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::saturating_product(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::normalize_tensor_layout(), and Aleph::FFT< Real >::row_major_strides().
|
inlinestaticprivate |
Definition at line 5089 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::saturating_product(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::normalize_tensor_layout().
|
inlinestaticprivate |
Definition at line 5027 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::Array< T >::reserve().
|
inlinestaticprivate |
overload of transfer_function_to_sections using raw coefficients.
Definition at line 3688 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::normalize_iir_coefficients(), Aleph::FFT< Real >::IIRCoefficients::numerator, Aleph::FFT< Real >::root_groups_impl(), Aleph::FFT< Real >::transfer_function_to_sections(), and Aleph::FFT< Real >::zeros().
|
inlinestaticprivate |
Rationale: Decomposes a general IIR transfer function into a cascade of Second-Order Sections (SOS) by pairing poles and zeros.
Definition at line 3627 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::append(), Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), k, Aleph::FFT< Real >::IIRCoefficients::numerator, Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::real_polynomial_from_roots(), Aleph::Array< T >::reserve(), Aleph::FFT< Real >::root_groups_impl(), Aleph::FFT< Real >::section_from_coefficients(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::design_bandstop_sections_without_numerator_roots(), Aleph::FFT< Real >::design_transformed_sections(), and Aleph::FFT< Real >::transfer_function_to_sections().
|
inlinestatic |
Computes the Fast Fourier Transform (FFT) in-place.
Implements a mixed radix-2/radix-4 iterative Cooley-Tukey algorithm. Power-of-two sizes use the optimized radix-2/radix-4 kernel, while other sizes dispatch to a reusable arbitrary-length plan.
If 'invert' is true, it computes the Inverse Fast Fourier Transform (IFFT), including the 1/N scaling factor.
| a | The array of complex values to transform. Modified in-place. |
| invert | Whether to perform the inverse transform. |
| std::invalid_argument | if the size of 'a' is zero. |
Definition at line 7822 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_any_size_impl().
Referenced by Aleph::FFT< Real >::rfft(), Aleph::FFT< Real >::spectrum(), Aleph::FFT< Real >::spectrum(), Aleph::FFT< Real >::transform(), Aleph::FFT< Real >::transform_padded(), Aleph::FFT< Real >::transform_padded(), and Aleph::FFT< Real >::transformed().
|
inlinestatic |
Computes the FFT of a real-valued input sequence.
The input sequence is first lifted to the complex domain (imaginary parts set to zero) before the transform is applied. Generic iterable containers of real values are accepted through a separate overload.
| input | The input array of real values. |
| std::invalid_argument | if the input size is zero. |
Definition at line 8440 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_real_optimized().
|
inlinestatic |
Forward FFT for complex-valued containers.
Definition at line 8503 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed().
|
inlinestatic |
Forward FFT for real-valued containers.
Definition at line 8541 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform().
|
inlinestaticprivate |
Definition at line 7771 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::is_power_of_two(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::transform_impl().
Referenced by Aleph::FFT< Real >::inverse_transform_real_general_impl(), Aleph::FFT< Real >::ptransform(), Aleph::FFT< Real >::transform(), and Aleph::FFT< Real >::transform_real_optimized().
|
inlinestatic |
In-place FFT/IFFT along multiple tensor axes of a flat buffer.
Definition at line 8034 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_axes_impl().
Referenced by Aleph::FFT< Real >::transformed2d(), Aleph::FFT< Real >::transformed2d_batch(), Aleph::FFT< Real >::transformed3d(), and Aleph::FFT< Real >::transformed_axes().
|
inlinestaticprivate |
Rationale: Internal implementation of a multi-axis tensor transform.
Applies the 1D transform sequentially along each requested axis.
Definition at line 5312 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::normalize_axes(), Aleph::FFT< Real >::normalize_tensor_layout(), and Aleph::FFT< Real >::transform_axis_impl().
Referenced by Aleph::FFT< Real >::ptransform_axes(), and Aleph::FFT< Real >::transform_axes().
|
inlinestatic |
In-place 1-D FFT/IFFT along one tensor axis of a flat buffer.
Definition at line 8012 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_axis_impl().
|
inlinestaticprivate |
Rationale: Internal implementation of a 1D FFT along a single tensor axis.
It gathers slices, transforms them, and scatters them back.
Definition at line 5258 of file fft.H.
References Aleph::and, Aleph::FFT< Real >::axis_base_offsets(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::gather_axis_slice(), Aleph::FFT< Real >::normalize_axes(), Aleph::FFT< Real >::normalize_tensor_layout(), Aleph::parallel_for_index(), Aleph::FFT< Real >::scatter_axis_slice(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::ptransform_axis(), Aleph::FFT< Real >::transform_axes_impl(), and Aleph::FFT< Real >::transform_axis().
|
inlinestatic |
In-place batch transform for equal-length complex inputs.
Definition at line 7889 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::size().
Referenced by Aleph::FFT< Real >::transformed_batch().
|
inlinestaticprivate |
implementation of the power-of-two iterative FFT using mixed radix-2/4.
Definition at line 5841 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::FFT< Real >::bit_reverse(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::is_power_of_two(), Aleph::parallel_for_index(), r, Aleph::Array< T >::size(), Aleph::FFT< Real >::twiddle_at(), and Aleph::FFT< Real >::twiddle_refresh_period.
Referenced by Aleph::FFT< Real >::inverse_transform_real(), Aleph::FFT< Real >::multiply_complex_impl(), Aleph::FFT< Real >::multiply_real_optimized(), Aleph::FFT< Real >::pinverse_transform_real(), Aleph::FFT< Real >::transform_any_size_impl(), and Aleph::FFT< Real >::transform_real_optimized().
|
inlinestatic |
Definition at line 8331 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::next_power_of_two(), output, Aleph::FFT< Real >::transform(), and Aleph::FFT< Real >::zero_padded_copy().
Referenced by Aleph::FFT< Real >::transform_padded().
|
inlinestatic |
Computes the FFT after zero-padding the input to the next power of two.
Definition at line 8485 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::next_power_of_two(), Aleph::FFT< Real >::transform(), and Aleph::FFT< Real >::zero_padded_copy().
|
inlinestatic |
Zero-pad and forward-FFT a generic complex iterable.
Accepts any container of std::complex<Real> values (e.g. std::vector<Complex>, DynList<Complex>). The input is copied to an internal Array<Complex> via build_complex_input before the transform is applied.
| Container | Any iterable whose elements are std::complex<Real>. |
| input | The input container. |
Array<Complex> zero-padded to a power-of-two length and transformed. | std::invalid_argument | if the input is empty. |
| std::bad_alloc | if memory allocation fails. |
Definition at line 8364 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_padded().
|
inlinestatic |
Forward FFT with padding for real-valued containers.
Definition at line 8522 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transform_padded().
|
inlinestaticprivate |
Rationale: Optimized FFT for real signals of size N (power-of-two).
Computes an N/2 complex FFT and uses symmetry to extract the full N-point complex spectrum.
Definition at line 5551 of file fft.H.
References ah_invalid_argument_if, Aleph::and, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::is_power_of_two(), k, Aleph::FFT< Real >::lift_real_input(), Aleph::parallel_for_index(), Aleph::Array< T >::reserve(), Aleph::Array< T >::size(), Aleph::FFT< Real >::spectrum(), Aleph::FFT< Real >::transform_any_size_impl(), Aleph::FFT< Real >::transform_impl(), and Aleph::FFT< Real >::twiddle_at().
Referenced by Aleph::FFT< Real >::ptransform(), and Aleph::FFT< Real >::transform().
|
inlinestaticprivatenoexcept |
Returns log2(N) stages, used for numerical error scaling.
Definition at line 404 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::hermitian_tolerance(), Aleph::FFT< Real >::project_real_output(), and Aleph::FFT< Real >::real_projection_tolerance().
|
inlinestaticprivate |
Definition at line 1385 of file fft.H.
References Aleph::count(), Aleph::divide_and_conquer_partition_dp(), Aleph::ThreadPool::num_threads(), offset, output, Aleph::parallel_for_index(), Aleph::FFT< Real >::prepare_stft_frame_input(), Aleph::FFT< Real >::recommended_cache_tile_size(), and Aleph::FFT< Real >::should_parallelize_batch_work().
Referenced by Aleph::FFT< Real >::STFTProcessor::emit_ready_frames(), and Aleph::FFT< Real >::stft_impl().
|
inlinestatic |
Computes the FFT or IFFT and returns a new array.
Functional wrapper around the in-place transform method. Overloads are also available for generic iterable containers of std::complex values.
| input | The input array of complex values. |
| invert | Whether to perform the inverse transform. |
| std::invalid_argument | if the input size is zero. |
Definition at line 7859 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::transform().
Referenced by Aleph::FFT< Real >::inverse_transform(), Aleph::FFT< Real >::inverse_transform(), Aleph::FFT< Real >::spectrum(), Aleph::FFT< Real >::spectrum(), Aleph::FFT< Real >::transform(), and Aleph::FFT< Real >::transformed().
|
inlinestatic |
FFT/IFFT for a generic complex iterable.
Accepts any container of std::complex<Real> values. The input is converted to Array<Complex> via build_complex_input before the transform is applied.
| Container | Any iterable whose elements are std::complex<Real>. |
| input | The input container. |
| invert | If true, computes the inverse transform (IFFT). |
Array<Complex> containing the transformed values. | std::invalid_argument | if the input is empty. |
| std::bad_alloc | if memory allocation fails. |
Definition at line 8404 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transformed().
|
inlinestatic |
Functional 2-D FFT/IFFT wrapper for rectangular complex matrices.
Definition at line 8082 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::flatten_matrix_row_major(), Aleph::FFT< Real >::matrix_shape(), Aleph::FFT< Real >::reshape_matrix_row_major(), Aleph::FFT< Real >::row_major_layout(), and Aleph::FFT< Real >::transform_axes().
Referenced by Aleph::FFT< Real >::inverse_transform2d().
|
inlinestatic |
Functional 2-D batched FFT/IFFT wrapper over a matrix stack.
Definition at line 8133 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::flatten_tensor3_row_major(), Aleph::FFT< Real >::reshape_tensor3_row_major(), Aleph::FFT< Real >::row_major_layout(), Aleph::FFT< Real >::tensor3_shape(), and Aleph::FFT< Real >::transform_axes().
|
inlinestatic |
Functional 3-D FFT/IFFT wrapper for rectangular complex tensors.
Definition at line 8172 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::flatten_tensor3_row_major(), Aleph::FFT< Real >::reshape_tensor3_row_major(), Aleph::FFT< Real >::row_major_layout(), Aleph::FFT< Real >::tensor3_shape(), and Aleph::FFT< Real >::transform_axes().
Referenced by Aleph::FFT< Real >::inverse_transform3d().
|
inlinestatic |
Functional tensor FFT/IFFT wrapper for flat buffers.
Definition at line 8056 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::transform_axes().
|
inlinestatic |
Functional batch FFT/IFFT wrapper.
Definition at line 7914 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::transform_batch().
Referenced by Aleph::FFT< Real >::inverse_transform_batch().
|
inlinestatic |
Converts multichannel spectrograms between channel-major and frame-major layouts.
Definition at line 8230 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::transpose_spectrogram_layout_impl().
|
inlinestaticprivate |
Rationale: Internal implementation for transposing between multichannel spectrogram layouts (e.g.
Channel-major to Frame-major).
Definition at line 5470 of file fft.H.
References ah_invalid_argument_if, Aleph::FFT< Real >::channel_frame_bin, Aleph::divide_and_conquer_partition_dp(), output, Aleph::Array< T >::size(), and Aleph::size().
Referenced by Aleph::FFT< Real >::transpose_spectrogram_layout().
|
inlinestaticprivatenoexcept |
Rationale: Copy utility that removes leading zero coefficients, effectively normalizing the polynomial degree.
Definition at line 2112 of file fft.H.
References Aleph::and, Aleph::divide_and_conquer_partition_dp(), and Aleph::Array< T >::reserve().
Referenced by Aleph::FFT< Real >::extract_repeated_unit_roots(), Aleph::FFT< Real >::trim_polynomial_leading_zeros(), and Aleph::FFT< Real >::zeros().
|
inlinestaticprivate |
Validation wrapper for trim_leading_zeros_copy.
Definition at line 2522 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::trim_leading_zeros_copy().
Referenced by Aleph::FFT< Real >::apply_analog_rational_transform(), and Aleph::FFT< Real >::substitute_rational_polynomial().
|
inlinestaticprivate |
Trims input to size n.
Definition at line 5009 of file fft.H.
References ah_invalid_argument_if, and Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::multiply_complex_impl(), and Aleph::FFT< Real >::multiply_real_optimized().
|
inlinestaticprivatenoexcept |
Definition at line 1728 of file fft.H.
References Aleph::FFT< Real >::PolynomialEvaluation::derivative, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_polynomial_and_derivative(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::PolynomialEvaluation::value.
Referenced by Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestaticprivatenoexcept |
Definition at line 1783 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::evaluate_polynomial_and_derivative(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::PolynomialEvaluation::value.
Referenced by Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestaticprivatenoexcept |
Definition at line 1929 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), k, and m.
Referenced by Aleph::FFT< Real >::polynomial_roots_impl().
|
inlinestaticprivate |
Computes a single twiddle factor exp(j * angle * index).
Definition at line 397 of file fft.H.
References Aleph::divide_and_conquer_partition_dp().
Referenced by Aleph::FFT< Real >::inverse_transform_real_optimized_impl(), Aleph::FFT< Real >::transform_impl(), and Aleph::FFT< Real >::transform_real_optimized().
|
inlinestaticprivate |
implementation of phase unwrapping (removes +/- 2*pi jumps).
Definition at line 4783 of file fft.H.
References Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), offset, output, and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::analytic_phase_delay_impl(), Aleph::FFT< Real >::gain_margin_impl(), Aleph::FFT< Real >::gain_margin_refined_impl(), Aleph::FFT< Real >::group_delay_impl(), Aleph::FFT< Real >::phase_delay(), Aleph::FFT< Real >::phase_delay_impl(), Aleph::FFT< Real >::phase_margin_impl(), and Aleph::FFT< Real >::phase_margin_refined_impl().
|
inlinestatic |
Polyphase upsample-filter-downsample for real signals.
Definition at line 9280 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::create(), Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), k, output, and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::resample_poly(), and Aleph::FFT< Real >::upfirdn().
|
inlinestatic |
Definition at line 9319 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::upfirdn().
|
inlinestaticprivate |
Rationale: Validates and normalizes ISTFT parameters, checking window constraints and FFT size.
Definition at line 4863 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), options, and Aleph::FFT< Real >::validate_overlap_constraints().
Referenced by Aleph::FFT< Real >::ISTFTProcessor::ISTFTProcessor(), and Aleph::FFT< Real >::istft_impl().
|
inlinestatic |
Definition at line 12744 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12702 of file fft.H.
References ah_domain_error_if, Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::poles(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::zeros().
Referenced by Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), and Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation().
|
inlinestatic |
Definition at line 12716 of file fft.H.
References Aleph::FFT< Real >::poles(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12735 of file fft.H.
References section(), and Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation().
|
inlinestatic |
Definition at line 12726 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::FFT< Real >::IIRCoefficients::numerator, and Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation().
|
inlinestatic |
Definition at line 12755 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation().
|
inlinestatic |
Definition at line 12767 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation().
|
inlinestaticprivate |
Rationale: Internal validator for STFT/ISTFT windowing parameters.
Definition at line 672 of file fft.H.
References ah_domain_error_if, Aleph::and, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::overlap_profile(), Aleph::FFT< Real >::overlap_profile_has_cola(), and Aleph::FFT< Real >::overlap_profile_has_nola().
Referenced by Aleph::FFT< Real >::validate_istft_configuration(), and Aleph::FFT< Real >::validate_stft_options().
|
inlinestaticprivate |
Rationale: Ensures a complex spectrum has the Hermitian symmetry (X[k] = X[N-k]*) required to be the transform of a real signal.
Definition at line 439 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::hermitian_tolerance(), k, and Aleph::FFT< Real >::real_projection_tolerance().
Referenced by Aleph::FFT< Real >::Plan::inverse_transform_real(), Aleph::FFT< Real >::inverse_transform_real_general_impl(), Aleph::FFT< Real >::inverse_transform_real_optimized_impl(), and Aleph::FFT< Real >::Plan::pinverse_transform_real().
|
inlinestatic |
Definition at line 12624 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12672 of file fft.H.
References ah_domain_error_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::stability_margin(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12597 of file fft.H.
References ah_domain_error_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::poles(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::stability_margin().
Referenced by Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), Aleph::FFT< Real >::validate_stable(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12647 of file fft.H.
References ah_domain_error_if, Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::stability_margin(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12618 of file fft.H.
References section(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12665 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), section(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12633 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12686 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12612 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12658 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::denominator, Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12641 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::validate_stable().
|
inlinestatic |
Definition at line 12695 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::validate_stable().
|
inlinestaticprivate |
Definition at line 1356 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::is_empty(), Aleph::FFT< Real >::next_power_of_two(), options, Aleph::Array< T >::size(), and Aleph::FFT< Real >::validate_overlap_constraints().
Referenced by Aleph::FFT< Real >::stft_impl().
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Returns the average window gain.
Definition at line 9520 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::Array< T >::size(), and Aleph::FFT< Real >::sum_values().
Referenced by Aleph::FFT< Real >::window_coherent_gain().
|
inlinestatic |
Definition at line 9551 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::window_coherent_gain().
|
inlinestatic |
Returns the equivalent noise bandwidth of a window in bins.
Definition at line 9529 of file fft.H.
References ah_domain_error_if, ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), Aleph::Array< T >::is_empty(), Aleph::Array< T >::size(), Aleph::FFT< Real >::sum_squares(), and Aleph::FFT< Real >::sum_values().
Referenced by Aleph::FFT< Real >::window_enbw().
|
inlinestatic |
Definition at line 9559 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::window_enbw().
|
inlinestatic |
Returns the sum of squared window samples.
Definition at line 9512 of file fft.H.
References ah_invalid_argument_if, Aleph::Array< T >::is_empty(), and Aleph::FFT< Real >::sum_squares().
Referenced by Aleph::FFT< Real >::window_energy().
|
inlinestatic |
Definition at line 9543 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::window_energy().
|
inlinestatic |
Returns the overlap-add normalization profile for one hop period.
Definition at line 9823 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::overlap_profile().
Referenced by Aleph::FFT< Real >::satisfies_cola(), and Aleph::FFT< Real >::satisfies_nola().
|
inlinestatic |
Returns the FFT of a complex signal after applying a window.
Definition at line 9487 of file fft.H.
References Aleph::FFT< Real >::apply_window(), and Aleph::FFT< Real >::spectrum().
|
inlinestatic |
Returns the FFT of a real signal after applying a window.
Definition at line 9480 of file fft.H.
References Aleph::FFT< Real >::apply_window(), and Aleph::FFT< Real >::spectrum().
Referenced by Aleph::FFT< Real >::windowed_spectrum().
|
inlinestatic |
Definition at line 9495 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::windowed_spectrum().
|
inlinestatic |
Definition at line 9504 of file fft.H.
References Aleph::FFT< Real >::build_complex_input(), Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::windowed_spectrum().
|
inlinestaticprivate |
functional zero-padding at both ends.
Definition at line 592 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), output, Aleph::Array< T >::reserve(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::stft_impl().
|
inlinestaticprivate |
Returns a copy of input zero-padded to size n.
Definition at line 4975 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), output, Aleph::Array< T >::reserve(), and Aleph::Array< T >::size().
Referenced by Aleph::FFT< Real >::multiply_complex_impl(), Aleph::FFT< Real >::multiply_real_optimized(), Aleph::FFT< Real >::prepare_stft_frame_input(), Aleph::FFT< Real >::ptransform_padded(), Aleph::FFT< Real >::ptransform_padded(), Aleph::FFT< Real >::transform_padded(), and Aleph::FFT< Real >::transform_padded().
|
inlinestaticprivate |
Returns a copy of input zero-padded to size n.
Definition at line 4992 of file fft.H.
References ah_invalid_argument_if, Aleph::divide_and_conquer_partition_dp(), output, Aleph::Array< T >::reserve(), and Aleph::Array< T >::size().
|
inlinestatic |
Definition at line 12281 of file fft.H.
References Aleph::FFT< Real >::append_all(), Aleph::divide_and_conquer_partition_dp(), output, and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Returns the finite zeros of a transfer numerator.
Definition at line 12232 of file fft.H.
References Aleph::FFT< Real >::append_all(), Aleph::divide_and_conquer_partition_dp(), Aleph::FFT< Real >::extract_repeated_unit_roots(), Aleph::FFT< Real >::polynomial_roots_impl(), and Aleph::FFT< Real >::trim_leading_zeros_copy().
Referenced by Aleph::FFT< Real >::OverlapSave::flush(), Aleph::FFT< Real >::PartitionedConvolver::flush(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::has_near_pole_zero_cancellation(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::minimum_pole_zero_distance(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pair_poles_and_zeros(), Aleph::FFT< Real >::pole_zero_pairs_impl(), Aleph::FFT< Real >::transfer_function_to_sections(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::validate_no_near_pole_zero_cancellation(), Aleph::FFT< Real >::zeros(), Aleph::FFT< Real >::zeros(), Aleph::FFT< Real >::zeros(), Aleph::FFT< Real >::zeros(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12269 of file fft.H.
References section(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12301 of file fft.H.
References Aleph::FFT< Real >::build_real_input(), and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12257 of file fft.H.
References Aleph::FFT< Real >::IIRCoefficients::numerator, and Aleph::FFT< Real >::zeros().
|
inlinestatic |
Definition at line 12317 of file fft.H.
References Aleph::divide_and_conquer_partition_dp(), and Aleph::FFT< Real >::zeros().
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
Definition at line 393 of file fft.H.
Referenced by Aleph::FFT< Real >::transform_impl().