pub struct Polynomial<P: PrimeMod> { /* private fields */ }Expand description
$\mathbb{F}_p$上の多項式
Implementations§
Source§impl<P: PrimeMod> Polynomial<P>
impl<P: PrimeMod> Polynomial<P>
Sourcepub fn constant(a: ConstModInt<P>) -> Self
pub fn constant(a: ConstModInt<P>) -> Self
定数項のみをもつ多項式を生成する。
Sourcepub fn coeff_of(&self, i: usize) -> ConstModInt<P>
pub fn coeff_of(&self, i: usize) -> ConstModInt<P>
$x^i$の係数を得る。
Sourcepub fn eval(&self, p: ConstModInt<P>) -> ConstModInt<P>
pub fn eval(&self, p: ConstModInt<P>) -> ConstModInt<P>
多項式に値pを代入した結果を求める。
Sourcepub fn scale(&mut self, k: ConstModInt<P>)
pub fn scale(&mut self, k: ConstModInt<P>)
多項式をk倍する。
Sourcepub fn differentiate(&mut self)
pub fn differentiate(&mut self)
多項式を微分する。
Sourcepub fn shift_higher(&mut self, k: usize)
pub fn shift_higher(&mut self, k: usize)
係数をk次だけ高次側にずらす。ただし、$x^n$の項以降は無視する。
$(a_0 + a_1 x + a_2 x^2 + \ldots + a_{n-1} x^{n-1}) \times x^k \pmod {x^n}$
Sourcepub fn shift_lower(&mut self, k: usize)
pub fn shift_lower(&mut self, k: usize)
係数をk次だけ低次側にずらす。ただし、負の次数の項は無視する。
pub fn inv(self, n: usize) -> Self
Trait Implementations§
Source§impl<P: PrimeMod> Add for Polynomial<P>
impl<P: PrimeMod> Add for Polynomial<P>
Source§impl<P: PrimeMod> AddAssign for Polynomial<P>
impl<P: PrimeMod> AddAssign for Polynomial<P>
Source§fn add_assign(&mut self, b: Self)
fn add_assign(&mut self, b: Self)
Performs the
+= operation. Read moreSource§impl<P: PrimeMod> AsMut<Vec<ConstModInt<P>>> for Polynomial<P>
impl<P: PrimeMod> AsMut<Vec<ConstModInt<P>>> for Polynomial<P>
Source§fn as_mut(&mut self) -> &mut Vec<ConstModInt<P>>
fn as_mut(&mut self) -> &mut Vec<ConstModInt<P>>
Converts this type into a mutable reference of the (usually inferred) input type.
Source§impl<P: PrimeMod> AsRef<[ConstModInt<P>]> for Polynomial<P>
impl<P: PrimeMod> AsRef<[ConstModInt<P>]> for Polynomial<P>
Source§fn as_ref(&self) -> &[ConstModInt<P>]
fn as_ref(&self) -> &[ConstModInt<P>]
Converts this type into a shared reference of the (usually inferred) input type.
Source§impl<P: Clone + PrimeMod> Clone for Polynomial<P>
impl<P: Clone + PrimeMod> Clone for Polynomial<P>
Source§fn clone(&self) -> Polynomial<P>
fn clone(&self) -> Polynomial<P>
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<P: Default + PrimeMod> Default for Polynomial<P>
impl<P: Default + PrimeMod> Default for Polynomial<P>
Source§fn default() -> Polynomial<P>
fn default() -> Polynomial<P>
Returns the “default value” for a type. Read more
Source§impl<P: PrimeMod> Div for Polynomial<P>
impl<P: PrimeMod> Div for Polynomial<P>
Source§impl<P: PrimeMod> DivAssign for Polynomial<P>
impl<P: PrimeMod> DivAssign for Polynomial<P>
Source§fn div_assign(&mut self, rhs: Self)
fn div_assign(&mut self, rhs: Self)
Performs the
/= operation. Read moreSource§impl<P: PrimeMod> FpsExp for Polynomial<P>
impl<P: PrimeMod> FpsExp for Polynomial<P>
Source§impl<P: PrimeMod> FpsInv for Polynomial<P>
impl<P: PrimeMod> FpsInv for Polynomial<P>
Source§impl<P: PrimeMod> FpsLog for Polynomial<P>
impl<P: PrimeMod> FpsLog for Polynomial<P>
Source§impl<P: PrimeMod> FpsPow for Polynomial<P>
impl<P: PrimeMod> FpsPow for Polynomial<P>
Source§impl<P: PrimeMod> FpsSqrt for Polynomial<P>
impl<P: PrimeMod> FpsSqrt for Polynomial<P>
Source§impl<P: PrimeMod> From<Polynomial<P>> for Vec<ConstModInt<P>>
impl<P: PrimeMod> From<Polynomial<P>> for Vec<ConstModInt<P>>
Source§fn from(value: Polynomial<P>) -> Self
fn from(value: Polynomial<P>) -> Self
Converts to this type from the input type.
Source§impl<T, P: PrimeMod> From<Vec<T>> for Polynomial<P>where
T: Into<ConstModInt<P>>,
impl<T, P: PrimeMod> From<Vec<T>> for Polynomial<P>where
T: Into<ConstModInt<P>>,
Source§impl<P: PrimeMod> Mul for Polynomial<P>
impl<P: PrimeMod> Mul for Polynomial<P>
Source§impl<P: PrimeMod> MulAssign for Polynomial<P>
impl<P: PrimeMod> MulAssign for Polynomial<P>
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
Performs the
*= operation. Read moreSource§impl<P: PrimeMod> MultipointEval for Polynomial<P>
impl<P: PrimeMod> MultipointEval for Polynomial<P>
Source§impl<P: PrimeMod> PartialEq for Polynomial<P>
impl<P: PrimeMod> PartialEq for Polynomial<P>
Source§impl<P: PrimeMod> Rem for Polynomial<P>
impl<P: PrimeMod> Rem for Polynomial<P>
Source§impl<P: PrimeMod> RemAssign for Polynomial<P>
impl<P: PrimeMod> RemAssign for Polynomial<P>
Source§fn rem_assign(&mut self, rhs: Self)
fn rem_assign(&mut self, rhs: Self)
Performs the
%= operation. Read moreSource§impl<P: PrimeMod> Sub for Polynomial<P>
impl<P: PrimeMod> Sub for Polynomial<P>
Source§impl<P: PrimeMod> SubAssign for Polynomial<P>
impl<P: PrimeMod> SubAssign for Polynomial<P>
Source§fn sub_assign(&mut self, b: Self)
fn sub_assign(&mut self, b: Self)
Performs the
-= operation. Read moreSource§impl<P: PrimeMod> TaylorShift for Polynomial<P>
impl<P: PrimeMod> TaylorShift for Polynomial<P>
Source§type Value = ConstModInt<P>
type Value = ConstModInt<P>
多項式の係数の型
Source§fn taylor_shift(self, c: Self::Value) -> Self
fn taylor_shift(self, c: Self::Value) -> Self
多項式
多項式 $f(x + c) = a_0 + a_1(x + c) + \cdots + a_n(x + c)^n = b_0 + b_0x + \cdots + b_nx^n$ を満たす、数列{$b_i$}を求める。
p = $f(x) = a_0 + a_1x + \cdots + a_nx^n$に対して、多項式 $f(x + c) = a_0 + a_1(x + c) + \cdots + a_n(x + c)^n = b_0 + b_0x + \cdots + b_nx^n$ を満たす、数列{$b_i$}を求める。
impl<P: PrimeMod> Eq for Polynomial<P>
Auto Trait Implementations§
impl<P> Freeze for Polynomial<P>
impl<P> RefUnwindSafe for Polynomial<P>where
P: RefUnwindSafe,
impl<P> Send for Polynomial<P>where
P: Send,
impl<P> Sync for Polynomial<P>where
P: Sync,
impl<P> Unpin for Polynomial<P>where
P: Unpin,
impl<P> UnwindSafe for Polynomial<P>where
P: 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