pub struct ClassicalTraits<C>(/* private fields */);
Expand description
PolyTraits implementation for classical (slow) algorithms.
The underlying algorithms are neither fast nor numerically stable. They should be used only for very small sizes, or for debugging.
ClassicalTraits::slice_mul()
uses a classical quadratic-time algorithmClassicalTraits::mp_eval_slice()
simply evaluates each point one at a time, using Horner’s rule. O(num_points * poly_degree) time.ClassicalTraits::sparse_interp_slice()
uses unstructured linear algebra and classical root finding, with complexity O(sparsity^3).
Trait Implementations§
Source§impl<C: Clone> Clone for ClassicalTraits<C>
impl<C: Clone> Clone for ClassicalTraits<C>
Source§fn clone(&self) -> ClassicalTraits<C>
fn clone(&self) -> ClassicalTraits<C>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<C: Debug> Debug for ClassicalTraits<C>
impl<C: Debug> Debug for ClassicalTraits<C>
Source§impl<C: Default> Default for ClassicalTraits<C>
impl<C: Default> Default for ClassicalTraits<C>
Source§fn default() -> ClassicalTraits<C>
fn default() -> ClassicalTraits<C>
Returns the “default value” for a type. Read more
Source§impl<C: PartialEq> PartialEq for ClassicalTraits<C>
impl<C: PartialEq> PartialEq for ClassicalTraits<C>
Source§impl<C> PolyTraits for ClassicalTraits<C>
impl<C> PolyTraits for ClassicalTraits<C>
Source§type SparseInterpEval = EvalTrait<ClassicalTraits<C>, Complex<f64>>
type SparseInterpEval = EvalTrait<ClassicalTraits<C>, Complex<f64>>
The evaluation needed for sparse interpolation.
Source§type SparseInterpInfo = (usize, Vec<(usize, Complex<f64>)>, RelativeParams<Complex<f64>, f64>)
type SparseInterpInfo = (usize, Vec<(usize, Complex<f64>)>, RelativeParams<Complex<f64>, f64>)
An opaque type returned by the pre-processing method
Self::sparse_interp_prep()
.Source§fn slice_mul(out: &mut [Self::Coeff], lhs: &[Self::Coeff], rhs: &[Self::Coeff])
fn slice_mul(out: &mut [Self::Coeff], lhs: &[Self::Coeff], rhs: &[Self::Coeff])
Multiplies two polynomails (represented by slices) and stores the result in another slice. Read more
Source§fn sparse_interp_prep(
sparsity: usize,
expons: impl Iterator<Item = usize>,
_max_coeff: &Self::Coeff,
) -> (<Self::SparseInterpEval as EvalTypes>::EvalInfo, Self::SparseInterpInfo)
fn sparse_interp_prep( sparsity: usize, expons: impl Iterator<Item = usize>, _max_coeff: &Self::Coeff, ) -> (<Self::SparseInterpEval as EvalTypes>::EvalInfo, Self::SparseInterpInfo)
Pre-processing for sparse interpolation. Read more
Source§fn sparse_interp_slice(
evals: &[Complex64],
info: &Self::SparseInterpInfo,
) -> Result<Vec<(usize, Self::Coeff)>>
fn sparse_interp_slice( evals: &[Complex64], info: &Self::SparseInterpInfo, ) -> Result<Vec<(usize, Self::Coeff)>>
Sparse interpolation following evaluation. Read more
impl<C: Copy> Copy for ClassicalTraits<C>
impl<C: Eq> Eq for ClassicalTraits<C>
impl<C> StructuralPartialEq for ClassicalTraits<C>
Auto Trait Implementations§
impl<C> Freeze for ClassicalTraits<C>
impl<C> RefUnwindSafe for ClassicalTraits<C>where
C: RefUnwindSafe,
impl<C> Send for ClassicalTraits<C>where
C: Send,
impl<C> Sync for ClassicalTraits<C>where
C: Sync,
impl<C> Unpin for ClassicalTraits<C>where
C: Unpin,
impl<C> UnwindSafe for ClassicalTraits<C>where
C: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more