Thu, 26 Feb 2026 11:36:22 -0500
Subproblem solver and sliding adjustments/improvements
/*! Fourier transform traits */ use alg_tools::bisection_tree::Weighted; use alg_tools::loc::Loc; use alg_tools::mapping::{Mapping, RealMapping, Space}; use alg_tools::types::{Float, Num}; /// Trait for Fourier transforms. When F is a non-complex number, the transform /// also has to be non-complex, i.e., the function itself symmetric. pub trait Fourier<F: Num>: Mapping<Self::Domain, Codomain = F> { type Domain: Space; type Transformed: Mapping<Self::Domain, Codomain = F>; fn fourier(&self) -> Self::Transformed; } impl<F: Float, T, const N: usize> Fourier<F> for Weighted<T, F> where T: Fourier<F, Domain = Loc<N, F>> + RealMapping<N, F>, { type Domain = T::Domain; type Transformed = Weighted<T::Transformed, F>; #[inline] fn fourier(&self) -> Self::Transformed { Weighted { base_fn: self.base_fn.fourier(), weight: self.weight, } } }