line has if statements, instead of constant-time selections.
Poly::tidy prunes any highest order terms with a zero coefficient regardless of if they were structurally zero or coincidentally zero.
And then this will make us constant time w.r.t. the amount of points interpolated, yet leaves our timing dynamic to the amount of non-zero trits. For Divisor::new, we need to continue calculating the divisor, simply dropping the result, until a padded amount of points. For differentation/evaluation, we probably need to pad the divisor out (where Divisor::new can pad before returning).
line
has if statements, instead of constant-time selections.Poly::tidy
prunes any highest order terms with a zero coefficient regardless of if they were structurally zero or coincidentally zero.And then this will make us constant time w.r.t. the amount of points interpolated, yet leaves our timing dynamic to the amount of non-zero trits. For
Divisor::new
, we need to continue calculating the divisor, simply dropping the result, until a padded amount of points. For differentation/evaluation, we probably need to pad the divisor out (whereDivisor::new
can pad before returning).