1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use crate::Coeff;
use crate::slice::SeriesSlice;
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<'a>(&mut self, other: SeriesSlice<'a, Var, C>);
fn add_overlap<'a>(&mut self, other: SeriesSlice<'a, Var, C>);
fn num_leading<'a>(&mut self, other: SeriesSlice<'a, Var, C>) -> usize;
}
pub(crate) trait ExpCoeff {
type Output;
fn exp_coeff(&self) -> Self::Output;
}