use crate::slice::SeriesSlice;
use crate::Coeff;
pub trait MulInverse {
type Output;
fn mul_inverse(self) -> Self::Output;
}
pub trait AsSlice<'a, T> {
type Output;
fn as_slice(&'a self, t: T) -> Self::Output;
}
pub trait KaratsubaMul<Rhs> {
type Output;
fn karatsuba_mul(self, rhs: Rhs, min_size: usize) -> Self::Output;
}
pub(crate) trait LnVarFree {
type Output;
fn ln_var_free(self) -> Self::Output;
}
pub(crate) trait AddAssignHelper<Var, C: Coeff> {
fn truncate_cutoff_pow(&mut self, other: SeriesSlice<'_, Var, C>);
fn add_overlap(&mut self, other: SeriesSlice<'_, Var, C>);
fn num_leading(&mut self, other: SeriesSlice<'_, Var, C>) -> usize;
}
pub(crate) trait ExpCoeff {
type Output;
fn exp_coeff(&self) -> Self::Output;
}