PowerSeries

Struct PowerSeries 

Source
pub struct PowerSeries<R: CommutativeRing> { /* private fields */ }
Expand description

A fixed-truncation power series carrying its complete context.

Supported one-variable coefficient contexts keep an immutable FLINT polynomial as their primary representation. Clones share that storage, and the canonical sparse term view is materialized lazily only for inspection, serialization, or a generic algorithm. Multivariate and unsupported contexts retain the sparse truncation-aware representation.

Implementations§

Source§

impl<R> PowerSeries<R>

Source

pub fn monomial_substitution( &self, monomial_map: &MonomialMap, ) -> Result<Self, SemilinearSubstitutionError>

Substitute monomials and discard transformed terms outside the fixed cap.

Source

pub fn semilinear_substitution<M>( &self, coefficient_map: &M, monomial_map: &MonomialMap, ) -> Result<PowerSeries<M::Target>, SemilinearSubstitutionError>
where M: CoefficientMap<Source = R>,

Fuse monomial capping and coefficient mapping in one source-term stream.

A transformed exponent is rejected before its coefficient map is applied.

Source

pub fn frobenius_lift( &self, exponent: u64, ) -> Result<Self, SemilinearSubstitutionError>

Apply coefficient Frobenius and x_i -> x_i^(p^exponent) with early capping.

Source§

impl<R: CommutativeRing> PowerSeries<R>

Source

pub fn ring(&self) -> &PowerSeriesRing<R>

Exact power-series context carried by this value.

Source

pub fn terms(&self) -> impl Iterator<Item = (&[u64], &R::Element)>

Nonzero terms in deterministic lexicographic exponent order.

Source

pub fn map_coefficients<M>( &self, map: &M, ) -> Result<PowerSeries<M::Target>, CoefficientMappingError>
where M: CoefficientMap<Source = R>, R: Display,

Apply one checked scalar map to every retained coefficient while preserving variables, truncation identity, and exponents.

Source

pub fn coefficient( &self, exponent: &[u64], ) -> Result<R::Element, PowerSeriesError>

Coefficient at a retained exponent position.

Asking beyond the context’s precision is an error, not a zero coefficient claim.

Source

pub fn constant_coefficient(&self) -> R::Element

Constant coefficient.

Source

pub fn is_zero(&self) -> bool

Whether every retained coefficient is zero.

Source

pub fn is_one(&self) -> bool

Whether this is the multiplicative identity in its context.

Source

pub fn nonzero_term_count(&self) -> usize

Number of stored nonzero coefficients.

Source

pub fn to_json(&self) -> Result<String, NoetherError>
where R: Serialize, R::Element: Serialize,

Serialize this series with its complete fixed-precision context and terms.

Source

pub fn from_json(value: &str) -> Result<Self, NoetherError>
where R: for<'de> Deserialize<'de>, R::Element: for<'de> Deserialize<'de>,

Deserialize and revalidate the context, exponent region, and coefficients.

Source

pub fn pow(&self, exponent: u64) -> Result<Self, ContextMismatchError>

Raise this series to a nonnegative power in its fixed context.

Source

pub fn scalar_mul(&self, scalar: &R::Element) -> Result<Self, PowerSeriesError>

Multiply every coefficient by one value from the coefficient ring.

Source

pub fn derivative(&self, variable: usize) -> Result<Self, PowerSeriesError>

Formal derivative with respect to one variable.

Source

pub fn compose(&self, images: &[Self]) -> Result<Self, PowerSeriesError>

Substitute one image for each variable when the images preserve the truncation ideal.

Source

pub fn inverse(&self) -> Result<Self, UnitError>
where R: UnitInversion,

Invert a series exactly when its constant coefficient is a unit.

Source

pub fn exact_div(&self, divisor: &Self) -> Result<Self, PowerSeriesError>
where R: UnitInversion,

Return the canonical exact quotient by a monomial times a unit series.

Fixed truncation makes division by a nonunit nonunique: coefficients beyond the dividend’s retained region cannot be recovered. For a divisor x^a u, with u(0) a unit, this method chooses the unique quotient obtained by shifting the retained dividend by a, filling the newly unknown boundary coefficients with zero, and dividing by u. It verifies the result by multiplication in this exact quotient ring. More general divisors are rejected rather than choosing a hidden term order or quotient lift.

Source

pub fn restrict_truncation( &self, target: SeriesTruncation, ) -> Result<Self, PowerSeriesError>

Enter an explicitly coarser truncation context.

Trait Implementations§

Source§

impl<R: CommutativeRing> Add<&PowerSeries<R>> for &PowerSeries<R>

Source§

type Output = Result<PowerSeries<R>, ContextMismatchError>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &PowerSeries<R>) -> Self::Output

Performs the + operation. Read more
Source§

impl<R: Clone + CommutativeRing> Clone for PowerSeries<R>
where R::Element: Clone,

Source§

fn clone(&self) -> PowerSeries<R>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<R: CommutativeRing> Debug for PowerSeries<R>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de, R> Deserialize<'de> for PowerSeries<R>
where R: CommutativeRing + Deserialize<'de>, R::Element: Deserialize<'de>,

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<R: CommutativeRing> Display for PowerSeries<R>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<R: CommutativeRing> Mul<&PowerSeries<R>> for &PowerSeries<R>

Source§

type Output = Result<PowerSeries<R>, ContextMismatchError>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &PowerSeries<R>) -> Self::Output

Performs the * operation. Read more
Source§

impl<R: CommutativeRing> Neg for &PowerSeries<R>

Source§

type Output = Result<PowerSeries<R>, ContextMismatchError>

The resulting type after applying the - operator.
Source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
Source§

impl<R: CommutativeRing> PartialEq for PowerSeries<R>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<R: CommutativeRing> SemanticType for PowerSeries<R>

Source§

const TYPE_ID: &'static str = "noether/commalg/PowerSeries@1"

Versioned, language-neutral semantic identity.
Source§

fn canonical_bytes(&self) -> Result<Vec<u8>, NoetherError>

Serialize without backend- or language-specific identity.
Source§

fn describe() -> &'static TypeDescription

Return static discovery metadata for the type.
Source§

impl<R> Serialize for PowerSeries<R>

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<R: CommutativeRing> Sub<&PowerSeries<R>> for &PowerSeries<R>

Source§

type Output = Result<PowerSeries<R>, ContextMismatchError>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &PowerSeries<R>) -> Self::Output

Performs the - operation. Read more
Source§

impl<R: CommutativeRing> Eq for PowerSeries<R>

Auto Trait Implementations§

§

impl<R> Freeze for PowerSeries<R>
where R: Freeze,

§

impl<R> RefUnwindSafe for PowerSeries<R>

§

impl<R> Send for PowerSeries<R>

§

impl<R> Sync for PowerSeries<R>

§

impl<R> Unpin for PowerSeries<R>
where R: Unpin,

§

impl<R> UnwindSafe for PowerSeries<R>
where R: UnwindSafe, <R as Ring>::Element: RefUnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,