feanor_math::primitive_int

Struct StaticRingBase

Source
pub struct StaticRingBase<T> { /* private fields */ }
Expand description

The ring of integers Z, using the arithmetic of the primitive integer type T.

For the difference to StaticRing, see the documentation of crate::ring::RingStore.

Trait Implementations§

Source§

impl CanHomFrom<StaticRingBase<i128>> for ZnBase

Source§

fn map_in( &self, _from: &StaticRingBase<i128>, el: i128, _hom: &Self::Homomorphism, ) -> Self::Element

Source§

type Homomorphism

Source§

fn has_canonical_hom(&self, from: &S) -> Option<Self::Homomorphism>

Source§

fn map_in_ref( &self, from: &S, el: &S::Element, hom: &Self::Homomorphism, ) -> Self::Element

Source§

fn mul_assign_map_in( &self, from: &S, lhs: &mut Self::Element, rhs: S::Element, hom: &Self::Homomorphism, )

Source§

fn mul_assign_map_in_ref( &self, from: &S, lhs: &mut Self::Element, rhs: &S::Element, hom: &Self::Homomorphism, )

Source§

impl CanHomFrom<StaticRingBase<i16>> for ZnBase

Source§

fn map_in( &self, _from: &StaticRingBase<i16>, el: i16, _hom: &Self::Homomorphism, ) -> Self::Element

Source§

type Homomorphism

Source§

fn has_canonical_hom(&self, from: &S) -> Option<Self::Homomorphism>

Source§

fn map_in_ref( &self, from: &S, el: &S::Element, hom: &Self::Homomorphism, ) -> Self::Element

Source§

fn mul_assign_map_in( &self, from: &S, lhs: &mut Self::Element, rhs: S::Element, hom: &Self::Homomorphism, )

Source§

fn mul_assign_map_in_ref( &self, from: &S, lhs: &mut Self::Element, rhs: &S::Element, hom: &Self::Homomorphism, )

Source§

impl CanHomFrom<StaticRingBase<i32>> for ZnBase

Source§

fn map_in( &self, _from: &StaticRingBase<i32>, el: i32, _hom: &Self::Homomorphism, ) -> Self::Element

Source§

type Homomorphism

Source§

fn has_canonical_hom(&self, from: &S) -> Option<Self::Homomorphism>

Source§

fn map_in_ref( &self, from: &S, el: &S::Element, hom: &Self::Homomorphism, ) -> Self::Element

Source§

fn mul_assign_map_in( &self, from: &S, lhs: &mut Self::Element, rhs: S::Element, hom: &Self::Homomorphism, )

Source§

fn mul_assign_map_in_ref( &self, from: &S, lhs: &mut Self::Element, rhs: &S::Element, hom: &Self::Homomorphism, )

Source§

impl CanHomFrom<StaticRingBase<i64>> for ZnBase

Source§

fn map_in( &self, _from: &StaticRingBase<i64>, el: i64, _hom: &Self::Homomorphism, ) -> Self::Element

Source§

type Homomorphism

Source§

fn has_canonical_hom(&self, from: &S) -> Option<Self::Homomorphism>

Source§

fn map_in_ref( &self, from: &S, el: &S::Element, hom: &Self::Homomorphism, ) -> Self::Element

Source§

fn mul_assign_map_in( &self, from: &S, lhs: &mut Self::Element, rhs: S::Element, hom: &Self::Homomorphism, )

Source§

fn mul_assign_map_in_ref( &self, from: &S, lhs: &mut Self::Element, rhs: &S::Element, hom: &Self::Homomorphism, )

Source§

impl<const N: u64, const IS_FIELD: bool> CanHomFrom<StaticRingBase<i64>> for ZnBase<N, IS_FIELD>

Source§

type Homomorphism = ()

Source§

fn has_canonical_hom(&self, _: &StaticRingBase<i64>) -> Option<()>

Source§

fn map_in(&self, _: &StaticRingBase<i64>, el: i64, _: &()) -> Self::Element

Source§

fn map_in_ref( &self, from: &S, el: &S::Element, hom: &Self::Homomorphism, ) -> Self::Element

Source§

fn mul_assign_map_in( &self, from: &S, lhs: &mut Self::Element, rhs: S::Element, hom: &Self::Homomorphism, )

Source§

fn mul_assign_map_in_ref( &self, from: &S, lhs: &mut Self::Element, rhs: &S::Element, hom: &Self::Homomorphism, )

Source§

impl CanHomFrom<StaticRingBase<i8>> for ZnBase

Source§

fn map_in( &self, _from: &StaticRingBase<i8>, el: i8, _hom: &Self::Homomorphism, ) -> Self::Element

Source§

type Homomorphism

Source§

fn has_canonical_hom(&self, from: &S) -> Option<Self::Homomorphism>

Source§

fn map_in_ref( &self, from: &S, el: &S::Element, hom: &Self::Homomorphism, ) -> Self::Element

Source§

fn mul_assign_map_in( &self, from: &S, lhs: &mut Self::Element, rhs: S::Element, hom: &Self::Homomorphism, )

Source§

fn mul_assign_map_in_ref( &self, from: &S, lhs: &mut Self::Element, rhs: &S::Element, hom: &Self::Homomorphism, )

Source§

impl<T> Clone for StaticRingBase<T>

Source§

fn clone(&self) -> Self

Returns a copy 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<T: Debug> Debug for StaticRingBase<T>

Source§

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

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

impl<T: PrimitiveInt> Default for StaticRingBase<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T: PrimitiveInt> DivisibilityRing for StaticRingBase<T>

Source§

type PreparedDivisorData = PrimitiveIntPreparedDivisorData<T>

Additional data associated to a fixed ring element that can be used to speed up division by this ring element. Read more
Source§

fn checked_left_div( &self, lhs: &Self::Element, rhs: &Self::Element, ) -> Option<Self::Element>

Checks whether there is an element x such that rhs * x = lhs, and returns it if it exists. Read more
Source§

fn balance_factor<'a, I>(&self, elements: I) -> Option<Self::Element>
where I: Iterator<Item = &'a Self::Element>, Self: 'a,

Function that computes a “balancing” factor of a sequence of ring elements. The only use of the balancing factor is to increase performance, in particular, dividing all elements in the sequence by this factor should make them “smaller” resp. cheaper to process. Read more
Source§

fn prepare_divisor(&self, x: Self::Element) -> PreparedDivisor<Self>

“Prepares” an element of this ring for division. Read more
Source§

fn checked_left_div_prepared( &self, lhs: &Self::Element, rhs: &PreparedDivisor<Self>, ) -> Option<Self::Element>

Same as DivisibilityRing::checked_left_div() but for a prepared divisor. Read more
Source§

fn divides_left_prepared( &self, lhs: &Self::Element, rhs: &PreparedDivisor<Self>, ) -> bool

Same as DivisibilityRing::divides_left() but for a prepared divisor. Read more
Source§

fn divides_left(&self, lhs: &Self::Element, rhs: &Self::Element) -> bool

Returns whether there is an element x such that rhs * x = lhs. If you need such an element, consider using DivisibilityRing::checked_left_div(). Read more
Source§

fn divides(&self, lhs: &Self::Element, rhs: &Self::Element) -> bool

Same as DivisibilityRing::divides_left(), but requires a commutative ring.
Source§

fn checked_div( &self, lhs: &Self::Element, rhs: &Self::Element, ) -> Option<Self::Element>

Same as DivisibilityRing::checked_left_div(), but requires a commutative ring.
Source§

fn is_unit(&self, x: &Self::Element) -> bool

Returns whether the given element is a unit, i.e. has an inverse.
Source§

fn is_unit_prepared(&self, x: &PreparedDivisor<Self>) -> bool

Same as DivisibilityRing::is_unit() but for a prepared divisor. Read more
Source§

fn invert(&self, el: &Self::Element) -> Option<Self::Element>

If the given element is a unit, returns its inverse, otherwise None. Read more
Source§

impl<T: PrimitiveInt> EuclideanRing for StaticRingBase<T>

Source§

fn euclidean_div_rem( &self, lhs: Self::Element, rhs: &Self::Element, ) -> (Self::Element, Self::Element)

Computes euclidean division with remainder. Read more
Source§

fn euclidean_deg(&self, val: &Self::Element) -> Option<usize>

Defines how “small” an element is. For details, see EuclideanRing.
Source§

fn euclidean_div( &self, lhs: Self::Element, rhs: &Self::Element, ) -> Self::Element

Computes euclidean division without remainder. Read more
Source§

fn euclidean_rem( &self, lhs: Self::Element, rhs: &Self::Element, ) -> Self::Element

Computes only the remainder of euclidean division. Read more
Source§

impl<T> FiniteRingSpecializable for StaticRingBase<T>
where T: PrimitiveInt,

Source§

impl<T: PrimitiveInt> HashableElRing for StaticRingBase<T>

Source§

fn hash<H: Hasher>(&self, el: &Self::Element, h: &mut H)

Hashes the given ring element.
Source§

impl<R> Homomorphism<StaticRingBase<i32>, <R as RingStore>::Type> for IntHom<R>
where R: RingStore,

Source§

type CodomainStore = R

Source§

type DomainStore = RingValue<StaticRingBase<i32>>

Source§

fn domain<'a>(&'a self) -> &'a Self::DomainStore

Source§

fn codomain<'a>(&'a self) -> &'a Self::CodomainStore

Source§

fn map(&self, x: i32) -> <R::Type as RingBase>::Element

Source§

fn mul_assign_map(&self, lhs: &mut <R::Type as RingBase>::Element, rhs: i32)

Source§

fn mul_assign_ref_map( &self, lhs: &mut <R::Type as RingBase>::Element, rhs: &<StaticRingBase<i32> as RingBase>::Element, )

Source§

fn map_ref(&self, x: &Domain::Element) -> Codomain::Element

Source§

fn mul_map( &self, lhs: Codomain::Element, rhs: Domain::Element, ) -> Codomain::Element

Source§

fn mul_ref_fst_map( &self, lhs: &Codomain::Element, rhs: Domain::Element, ) -> Codomain::Element

Source§

fn mul_ref_snd_map( &self, lhs: Codomain::Element, rhs: &Domain::Element, ) -> Codomain::Element

Source§

fn mul_ref_map( &self, lhs: &Codomain::Element, rhs: &Domain::Element, ) -> Codomain::Element

Source§

fn compose<F, PrevDomain: ?Sized + RingBase>( self, prev: F, ) -> ComposedHom<PrevDomain, Domain, Codomain, F, Self>
where Self: Sized, F: Homomorphism<PrevDomain, Domain>,

Source§

impl IntCast<MPZBase> for StaticRingBase<i128>

Available on crate feature mpir only.
Source§

fn cast(&self, from: &MPZBase, el: MPZEl) -> i128

Maps the given integer into this ring. Read more
Source§

impl IntCast<MPZBase> for StaticRingBase<i16>

Available on crate feature mpir only.
Source§

fn cast(&self, _: &MPZBase, el: MPZEl) -> i16

Maps the given integer into this ring. Read more
Source§

impl IntCast<MPZBase> for StaticRingBase<i32>

Available on crate feature mpir only.
Source§

fn cast(&self, _: &MPZBase, el: MPZEl) -> i32

Maps the given integer into this ring. Read more
Source§

impl IntCast<MPZBase> for StaticRingBase<i64>

Available on crate feature mpir only.
Source§

fn cast(&self, from: &MPZBase, el: MPZEl) -> i64

Maps the given integer into this ring. Read more
Source§

impl IntCast<MPZBase> for StaticRingBase<i8>

Available on crate feature mpir only.
Source§

fn cast(&self, _: &MPZBase, el: MPZEl) -> i8

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i128>

Source§

fn cast(&self, from: &RustBigintRingBase<A>, value: RustBigint<A>) -> i128

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i16>

Source§

fn cast(&self, from: &RustBigintRingBase<A>, value: RustBigint<A>) -> i16

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i32>

Source§

fn cast(&self, from: &RustBigintRingBase<A>, value: RustBigint<A>) -> i32

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i64>

Source§

fn cast(&self, from: &RustBigintRingBase<A>, value: RustBigint<A>) -> i64

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i8>

Source§

fn cast(&self, from: &RustBigintRingBase<A>, value: RustBigint<A>) -> i8

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i128>> for MPZBase

Available on crate feature mpir only.
Source§

fn cast(&self, _: &StaticRingBase<i128>, el: i128) -> MPZEl

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i128>> for RustBigintRingBase<A>

Source§

fn cast(&self, _: &StaticRingBase<i128>, value: i128) -> RustBigint<A>

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i128>

Source§

fn cast(&self, _: &StaticRingBase<i128>, value: i128) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i16>

Source§

fn cast(&self, _: &StaticRingBase<i128>, value: i128) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i32>

Source§

fn cast(&self, _: &StaticRingBase<i128>, value: i128) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i64>

Source§

fn cast(&self, _: &StaticRingBase<i128>, value: i128) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i8>

Source§

fn cast(&self, _: &StaticRingBase<i128>, value: i128) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i16>> for MPZBase

Available on crate feature mpir only.
Source§

fn cast(&self, _: &StaticRingBase<i16>, el: i16) -> MPZEl

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i16>> for RustBigintRingBase<A>

Source§

fn cast(&self, _: &StaticRingBase<i16>, value: i16) -> RustBigint<A>

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i128>

Source§

fn cast(&self, _: &StaticRingBase<i16>, value: i16) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i16>

Source§

fn cast(&self, _: &StaticRingBase<i16>, value: i16) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i32>

Source§

fn cast(&self, _: &StaticRingBase<i16>, value: i16) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i64>

Source§

fn cast(&self, _: &StaticRingBase<i16>, value: i16) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i8>

Source§

fn cast(&self, _: &StaticRingBase<i16>, value: i16) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i32>> for MPZBase

Available on crate feature mpir only.
Source§

fn cast(&self, _: &StaticRingBase<i32>, el: i32) -> MPZEl

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i32>> for RustBigintRingBase<A>

Source§

fn cast(&self, _: &StaticRingBase<i32>, value: i32) -> RustBigint<A>

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i128>

Source§

fn cast(&self, _: &StaticRingBase<i32>, value: i32) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i16>

Source§

fn cast(&self, _: &StaticRingBase<i32>, value: i32) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i32>

Source§

fn cast(&self, _: &StaticRingBase<i32>, value: i32) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i64>

Source§

fn cast(&self, _: &StaticRingBase<i32>, value: i32) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i8>

Source§

fn cast(&self, _: &StaticRingBase<i32>, value: i32) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i64>> for MPZBase

Available on crate feature mpir only.
Source§

fn cast(&self, _: &StaticRingBase<i64>, el: i64) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i64>> for RustBigintRingBase<A>

Source§

fn cast(&self, _: &StaticRingBase<i64>, value: i64) -> RustBigint<A>

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i128>

Source§

fn cast(&self, _: &StaticRingBase<i64>, value: i64) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i16>

Source§

fn cast(&self, _: &StaticRingBase<i64>, value: i64) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i32>

Source§

fn cast(&self, _: &StaticRingBase<i64>, value: i64) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i64>

Source§

fn cast(&self, _: &StaticRingBase<i64>, value: i64) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i8>

Source§

fn cast(&self, _: &StaticRingBase<i64>, value: i64) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i8>> for MPZBase

Available on crate feature mpir only.
Source§

fn cast(&self, _: &StaticRingBase<i8>, el: i8) -> MPZEl

Maps the given integer into this ring. Read more
Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i8>> for RustBigintRingBase<A>

Source§

fn cast(&self, _: &StaticRingBase<i8>, value: i8) -> RustBigint<A>

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i128>

Source§

fn cast(&self, _: &StaticRingBase<i8>, value: i8) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i16>

Source§

fn cast(&self, _: &StaticRingBase<i8>, value: i8) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i32>

Source§

fn cast(&self, _: &StaticRingBase<i8>, value: i8) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i64>

Source§

fn cast(&self, _: &StaticRingBase<i8>, value: i8) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i8>

Source§

fn cast(&self, _: &StaticRingBase<i8>, value: i8) -> Self::Element

Maps the given integer into this ring. Read more
Source§

impl<T> IntegerPolyGCDRing for StaticRingBase<T>
where T: PrimitiveInt,

Source§

type LocalRingAsZnBase<'ring> = <StaticRingBase<T> as PolyGCDLocallyDomain>::LocalRingBase<'ring> where Self: 'ring

It would be much preferrable if we could restrict associated types from supertraits, this is just a workaround (and an ugly one at that)
Source§

type LocalRingAsZn<'ring> = <StaticRingBase<T> as PolyGCDLocallyDomain>::LocalRing<'ring> where Self: 'ring

Source§

fn local_ring_as_zn<'a, 'ring>( &self, local_field: &'a Self::LocalRing<'ring>, ) -> &'a Self::LocalRingAsZn<'ring>
where Self: 'ring,

Source§

fn principal_ideal_generator<'ring>( &self, p: &Self::SuitableIdeal<'ring>, ) -> i64
where Self: 'ring,

Source§

impl<T: PrimitiveInt> IntegerRing for StaticRingBase<T>

Source§

fn to_float_approx(&self, value: &Self::Element) -> f64

Computes a float value that is “close” to the given integer. Read more
Source§

fn from_float_approx(&self, value: f64) -> Option<Self::Element>

Computes a value that is “close” to the given float. However, no guarantees are made on the definition of close, in particular, this does not have to be the closest integer to the given float, and cannot be used to compute rounding. It is also implementation-defined when to return None, although this is usually the case on infinity and NaN. Read more
Source§

fn abs_is_bit_set(&self, value: &Self::Element, i: usize) -> bool

Return whether the i-th bit in the two-complements representation of abs(value) is 1. Read more
Source§

fn abs_highest_set_bit(&self, value: &Self::Element) -> Option<usize>

Returns the index of the highest set bit in the two-complements representation of abs(value), or None if the value is zero. Read more
Source§

fn abs_lowest_set_bit(&self, value: &Self::Element) -> Option<usize>

Returns the index of the lowest set bit in the two-complements representation of abs(value), or None if the value is zero. Read more
Source§

fn euclidean_div_pow_2(&self, value: &mut Self::Element, power: usize)

Computes the euclidean division by a power of two, always rounding to zero (note that euclidean division requires that |remainder| < |divisor|, and thus would otherwise leave multiple possible results). Read more
Source§

fn mul_pow_2(&self, value: &mut Self::Element, power: usize)

Multiplies the element by a power of two.
Source§

fn get_uniformly_random_bits<G: FnMut() -> u64>( &self, log2_bound_exclusive: usize, rng: G, ) -> Self::Element

Computes a uniformly random integer in [0, 2^log_bound_exclusive - 1], assuming that rng provides uniformly random values in the whole range of u64.
Source§

fn representable_bits(&self) -> Option<usize>

Returns n such that this ring can represent at least [-2^n, ..., 2^n - 1]. Returning None means that the size of representable integers is unbounded.
Source§

fn rounded_div(&self, lhs: Self::Element, rhs: &Self::Element) -> Self::Element

Computes the rounded division, i.e. rounding to the closest integer. In the case of a tie (i.e. round(0.5)), we round towards +/- infinity. Read more
Source§

fn ceil_div(&self, lhs: Self::Element, rhs: &Self::Element) -> Self::Element

Computes the division lhs / rhs, rounding towards + infinity. Read more
Source§

fn floor_div(&self, lhs: Self::Element, rhs: &Self::Element) -> Self::Element

Computes the division lhs / rhs, rounding towards - infinity. Read more
Source§

fn power_of_two(&self, power: usize) -> Self::Element

Returns the value 2^power in this integer ring.
Source§

impl<T> InterpolationBaseRing for StaticRingBase<T>
where T: PrimitiveInt,

Source§

type ExtendedRing<'a> = RingRef<'a, StaticRingBase<T>> where Self: 'a

Source§

type ExtendedRingBase<'a> = StaticRingBase<T> where Self: 'a

Restricting this here to be DivisibilityRing + PrincipalIdealRing + Domain is necessary, because of a compiler bug, see also crate::compute_locally::EvaluatePolyLocallyRing::LocalRingBase
Source§

fn in_base<'a, S>(&self, _ext_ring: S, el: El<S>) -> Option<Self::Element>
where Self: 'a, S: RingStore<Type = Self::ExtendedRingBase<'a>>,

Source§

fn in_extension<'a, S>(&self, _ext_ring: S, el: Self::Element) -> El<S>
where Self: 'a, S: RingStore<Type = Self::ExtendedRingBase<'a>>,

Source§

fn interpolation_points<'a>( &'a self, count: usize, ) -> (Self::ExtendedRing<'a>, Vec<El<Self::ExtendedRing<'a>>>)

Returns count points such that the difference between any two of them is a non-zero-divisor. Read more
Source§

impl KaratsubaHint for StaticRingBase<i128>

Source§

fn karatsuba_threshold(&self) -> usize

Define a threshold from which on KaratsubaAlgorithm will use the Karatsuba algorithm. Read more
Source§

impl KaratsubaHint for StaticRingBase<i16>

Source§

fn karatsuba_threshold(&self) -> usize

Define a threshold from which on KaratsubaAlgorithm will use the Karatsuba algorithm. Read more
Source§

impl KaratsubaHint for StaticRingBase<i32>

Source§

fn karatsuba_threshold(&self) -> usize

Define a threshold from which on KaratsubaAlgorithm will use the Karatsuba algorithm. Read more
Source§

impl KaratsubaHint for StaticRingBase<i64>

Source§

fn karatsuba_threshold(&self) -> usize

Define a threshold from which on KaratsubaAlgorithm will use the Karatsuba algorithm. Read more
Source§

impl KaratsubaHint for StaticRingBase<i8>

Source§

fn karatsuba_threshold(&self) -> usize

Define a threshold from which on KaratsubaAlgorithm will use the Karatsuba algorithm. Read more
Source§

impl<T: PrimitiveInt> OrderedRing for StaticRingBase<T>

Source§

fn cmp(&self, lhs: &Self::Element, rhs: &Self::Element) -> Ordering

Returns whether lhs is Ordering::Less, Ordering::Equal or Ordering::Greater than rhs.
Source§

fn abs_cmp(&self, lhs: &Self::Element, rhs: &Self::Element) -> Ordering

Returns whether abs(lhs) is Ordering::Less, Ordering::Equal or Ordering::Greater than abs(rhs).
Source§

fn is_leq(&self, lhs: &Self::Element, rhs: &Self::Element) -> bool

Returns whether lhs <= rhs.
Source§

fn is_geq(&self, lhs: &Self::Element, rhs: &Self::Element) -> bool

Returns whether lhs >= rhs.
Source§

fn is_lt(&self, lhs: &Self::Element, rhs: &Self::Element) -> bool

Returns whether lhs < rhs.
Source§

fn is_gt(&self, lhs: &Self::Element, rhs: &Self::Element) -> bool

Returns whether lhs > rhs.
Source§

fn is_neg(&self, value: &Self::Element) -> bool

Returns whether value < 0.
Source§

fn is_pos(&self, value: &Self::Element) -> bool

Returns whether value > 0.
Source§

fn abs(&self, value: Self::Element) -> Self::Element

Returns the absolute value of value, i.e. value if value >= 0 and -value otherwise.
Source§

fn max<'a>( &self, fst: &'a Self::Element, snd: &'a Self::Element, ) -> &'a Self::Element

Returns the larger one of fst and snd.
Source§

impl<T> PartialEq for StaticRingBase<T>

Source§

fn eq(&self, _: &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<T> PolyGCDLocallyDomain for StaticRingBase<T>
where T: PrimitiveInt,

Source§

type LocalRing<'ring> = RingValue<ZnBase<RingValue<MPZBase>>> where Self: 'ring

Source§

type LocalRingBase<'ring> = ZnBase<RingValue<MPZBase>> where Self: 'ring

The proper way would be to define this with two lifetime parameters 'ring and 'data, see also crate::compute_locally::EvaluatePolyLocallyRing::LocalRingBase
Source§

type LocalFieldBase<'ring> = AsFieldBase<RingValue<ZnBase>> where Self: 'ring

Source§

type LocalField<'ring> = RingValue<AsFieldBase<RingValue<ZnBase>>> where Self: 'ring

Source§

type SuitableIdeal<'ring> = i64 where Self: 'ring

Source§

fn reconstruct_ring_el<'local, 'element, 'ring, V1, V2>( &self, _p: &Self::SuitableIdeal<'ring>, from: V1, _e: usize, x: V2, ) -> Self::Element
where Self: 'ring, V1: VectorFn<&'local Self::LocalRing<'ring>>, V2: VectorFn<&'element El<Self::LocalRing<'ring>>>,

Computes a “small” element x in R such that x mod mi^e is equal to the given value, for every maximal ideal mi over I. In cases where the factors of polynomials in R[X] do not necessarily have coefficients in R, this function might have to do rational reconstruction.
Source§

fn maximal_ideal_factor_count<'ring>( &self, _p: &Self::SuitableIdeal<'ring>, ) -> usize
where Self: 'ring,

Source§

fn lift_partial<'ring>( &self, _p: &Self::SuitableIdeal<'ring>, from: (&Self::LocalRing<'ring>, usize), to: (&Self::LocalRing<'ring>, usize), max_ideal_idx: usize, x: El<Self::LocalRing<'ring>>, ) -> El<Self::LocalRing<'ring>>
where Self: 'ring,

Computes any element y in R / mi^to_e such that y = x mod mi^from_e. In particular, y does not have to be “short” in any sense, but any lift is a valid result.
Source§

fn local_field_at<'ring>( &self, p: &Self::SuitableIdeal<'ring>, max_ideal_idx: usize, ) -> Self::LocalField<'ring>
where Self: 'ring,

Returns R / mi, where mi is the i-th maximal ideal over I. Read more
Source§

fn local_ring_at<'ring>( &self, p: &Self::SuitableIdeal<'ring>, e: usize, max_ideal_idx: usize, ) -> Self::LocalRing<'ring>
where Self: 'ring,

Returns R / mi^e, where mi is the i-th maximal ideal over I.
Source§

fn random_suitable_ideal<'ring, F>( &'ring self, rng: F, ) -> Self::SuitableIdeal<'ring>
where F: FnMut() -> u64,

Returns an ideal sampled at random from the interval of all supported ideals.
Source§

fn reduce_ring_el<'ring>( &self, _p: &Self::SuitableIdeal<'ring>, to: (&Self::LocalRing<'ring>, usize), max_ideal_idx: usize, x: Self::Element, ) -> El<Self::LocalRing<'ring>>
where Self: 'ring,

Computes the reduction map Read more
Source§

fn reduce_partial<'ring>( &self, _p: &Self::SuitableIdeal<'ring>, from: (&Self::LocalRing<'ring>, usize), to: (&Self::LocalRing<'ring>, usize), max_ideal_idx: usize, x: El<Self::LocalRing<'ring>>, ) -> El<Self::LocalRing<'ring>>
where Self: 'ring,

Computes the reduction map Read more
Source§

fn heuristic_exponent<'ring, 'a, I>( &self, p: &i64, poly_deg: usize, coefficients: I, ) -> usize
where I: Iterator<Item = &'a Self::Element>, Self: 'a + 'ring,

Returns an exponent e such that we hope that the factors of a polynomial of given degree, involving the given coefficient can already be read of (via PolyGCDLocallyDomain::reconstruct_ring_el()) their reductions modulo I^e. Note that this is just a heuristic, and if it does not work, the implementation will gradually try larger e. Thus, even if this function returns constant 1, correctness will not be affected, but giving a good guess can improve performance
Source§

fn dbg_ideal<'ring>( &self, p: &Self::SuitableIdeal<'ring>, out: &mut Formatter<'_>, ) -> Result
where Self: 'ring,

Source§

impl<T: PrimitiveInt> PrincipalIdealRing for StaticRingBase<T>

Source§

fn checked_div_min( &self, lhs: &Self::Element, rhs: &Self::Element, ) -> Option<Self::Element>

Similar to DivisibilityRing::checked_left_div() this computes a “quotient” q of lhs and rhs, if it exists. However, we impose the additional constraint that this quotient be minimal, i.e. there is no q' with q' | q properly and q' * rhs = lhs. Read more
Source§

fn extended_ideal_gen( &self, lhs: &Self::Element, rhs: &Self::Element, ) -> (Self::Element, Self::Element, Self::Element)

Computes a Bezout identity for the generator g of the ideal (lhs, rhs) as g = s * lhs + t * rhs. Read more
Source§

fn annihilator(&self, val: &Self::Element) -> Self::Element

Returns the (w.r.t. divisibility) smallest element x such that x * val = 0. Read more
Source§

fn create_elimination_matrix( &self, a: &Self::Element, b: &Self::Element, ) -> ([Self::Element; 4], Self::Element)

Creates a matrix A of unit determinant such that A * (a, b)^T = (d, 0). Returns (A, d).
Source§

fn ideal_gen(&self, lhs: &Self::Element, rhs: &Self::Element) -> Self::Element

Computes a generator g of the ideal (lhs, rhs) = (g), also known as greatest common divisor. Read more
Source§

fn lcm(&self, lhs: &Self::Element, rhs: &Self::Element) -> Self::Element

Computes a generator of the ideal (lhs) ∩ (rhs), also known as least common multiple. Read more
Source§

impl<T: PrimitiveInt> RingBase for StaticRingBase<T>

Source§

type Element = T

Type of elements of the ring
Source§

fn clone_el(&self, val: &Self::Element) -> Self::Element

Source§

fn add_assign(&self, lhs: &mut Self::Element, rhs: Self::Element)

Source§

fn negate_inplace(&self, lhs: &mut Self::Element)

Source§

fn mul_assign(&self, lhs: &mut Self::Element, rhs: Self::Element)

Source§

fn from_int(&self, value: i32) -> Self::Element

Source§

fn eq_el(&self, lhs: &Self::Element, rhs: &Self::Element) -> bool

Source§

fn is_commutative(&self) -> bool

Returns whether the ring is commutative, i.e. a * b = b * a for all elements a, b. Note that addition is assumed to be always commutative.
Source§

fn is_noetherian(&self) -> bool

Returns whether the ring is noetherian, i.e. every ideal is finitely generated. Read more
Source§

fn dbg_within<'a>( &self, value: &Self::Element, out: &mut Formatter<'a>, _: EnvBindingStrength, ) -> Result

Writes a human-readable representation of value to out, taking into account the possible context to place parenthesis as needed. Read more
Source§

fn characteristic<I: RingStore>(&self, ZZ: I) -> Option<El<I>>
where I::Type: IntegerRing,

Returns the characteristic of this ring as an element of the given implementation of ZZ. Read more
Source§

fn pow_gen<R: RingStore>( &self, x: Self::Element, power: &El<R>, integers: R, ) -> Self::Element
where R::Type: IntegerRing,

Raises x to the power of an arbitrary, nonnegative integer given by a custom integer ring implementation. Read more
Source§

fn is_approximate(&self) -> bool

Returns whether this ring computes with approximations to elements. This would usually be the case for rings that are based on f32 or f64, to represent real or complex numbers. Read more
Source§

fn add_assign_ref(&self, lhs: &mut Self::Element, rhs: &Self::Element)

Source§

fn sub_assign_ref(&self, lhs: &mut Self::Element, rhs: &Self::Element)

Source§

fn mul_assign_ref(&self, lhs: &mut Self::Element, rhs: &Self::Element)

Source§

fn zero(&self) -> Self::Element

Source§

fn one(&self) -> Self::Element

Source§

fn neg_one(&self) -> Self::Element

Source§

fn is_zero(&self, value: &Self::Element) -> bool

Source§

fn is_one(&self, value: &Self::Element) -> bool

Source§

fn is_neg_one(&self, value: &Self::Element) -> bool

Source§

fn dbg<'a>(&self, value: &Self::Element, out: &mut Formatter<'a>) -> Result

Writes a human-readable representation of value to out. Read more
Source§

fn square(&self, value: &mut Self::Element)

Source§

fn negate(&self, value: Self::Element) -> Self::Element

Source§

fn sub_assign(&self, lhs: &mut Self::Element, rhs: Self::Element)

Source§

fn mul_assign_int(&self, lhs: &mut Self::Element, rhs: i32)

Source§

fn mul_int(&self, lhs: Self::Element, rhs: i32) -> Self::Element

Source§

fn mul_int_ref(&self, lhs: &Self::Element, rhs: i32) -> Self::Element

Source§

fn sub_self_assign(&self, lhs: &mut Self::Element, rhs: Self::Element)

Computes lhs := rhs - lhs.
Source§

fn sub_self_assign_ref(&self, lhs: &mut Self::Element, rhs: &Self::Element)

Computes lhs := rhs - lhs.
Source§

fn add_ref(&self, lhs: &Self::Element, rhs: &Self::Element) -> Self::Element

Source§

fn add_ref_fst(&self, lhs: &Self::Element, rhs: Self::Element) -> Self::Element

Source§

fn add_ref_snd(&self, lhs: Self::Element, rhs: &Self::Element) -> Self::Element

Source§

fn add(&self, lhs: Self::Element, rhs: Self::Element) -> Self::Element

Source§

fn sub_ref(&self, lhs: &Self::Element, rhs: &Self::Element) -> Self::Element

Source§

fn sub_ref_fst(&self, lhs: &Self::Element, rhs: Self::Element) -> Self::Element

Source§

fn sub_ref_snd(&self, lhs: Self::Element, rhs: &Self::Element) -> Self::Element

Source§

fn sub(&self, lhs: Self::Element, rhs: Self::Element) -> Self::Element

Source§

fn mul_ref(&self, lhs: &Self::Element, rhs: &Self::Element) -> Self::Element

Source§

fn mul_ref_fst(&self, lhs: &Self::Element, rhs: Self::Element) -> Self::Element

Source§

fn mul_ref_snd(&self, lhs: Self::Element, rhs: &Self::Element) -> Self::Element

Source§

fn mul(&self, lhs: Self::Element, rhs: Self::Element) -> Self::Element

Source§

fn sum<I>(&self, els: I) -> Self::Element
where I: IntoIterator<Item = Self::Element>,

Sums the elements given by the iterator. Read more
Source§

fn prod<I>(&self, els: I) -> Self::Element
where I: IntoIterator<Item = Self::Element>,

Computes the product of the elements given by the iterator. Read more
Source§

impl<T: PrimitiveInt> SerializableElementRing for StaticRingBase<T>

Source§

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

Deserializes an element of this ring from the given deserializer.
Source§

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

Serializes an element of this ring to the given serializer.
Source§

impl StrassenHint for StaticRingBase<i128>

Source§

fn strassen_threshold(&self) -> usize

Define a threshold from which on StrassenAlgorithm will use the Strassen algorithm. Read more
Source§

impl StrassenHint for StaticRingBase<i16>

Source§

fn strassen_threshold(&self) -> usize

Define a threshold from which on StrassenAlgorithm will use the Strassen algorithm. Read more
Source§

impl StrassenHint for StaticRingBase<i32>

Source§

fn strassen_threshold(&self) -> usize

Define a threshold from which on StrassenAlgorithm will use the Strassen algorithm. Read more
Source§

impl StrassenHint for StaticRingBase<i64>

Source§

fn strassen_threshold(&self) -> usize

Define a threshold from which on StrassenAlgorithm will use the Strassen algorithm. Read more
Source§

impl StrassenHint for StaticRingBase<i8>

Source§

fn strassen_threshold(&self) -> usize

Define a threshold from which on StrassenAlgorithm will use the Strassen algorithm. Read more
Source§

impl<T> Copy for StaticRingBase<T>

Source§

impl<T: PrimitiveInt> Domain for StaticRingBase<T>

Auto Trait Implementations§

§

impl<T> Freeze for StaticRingBase<T>

§

impl<T> RefUnwindSafe for StaticRingBase<T>
where T: RefUnwindSafe,

§

impl<T> Send for StaticRingBase<T>
where T: Send,

§

impl<T> Sync for StaticRingBase<T>
where T: Sync,

§

impl<T> Unpin for StaticRingBase<T>
where T: Unpin,

§

impl<T> UnwindSafe for StaticRingBase<T>
where T: UnwindSafe,

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<I, J> CanHomFrom<I> for J
where I: IntegerRing + ?Sized, J: IntegerRing + ?Sized,

Source§

type Homomorphism = ()

Source§

fn has_canonical_hom(&self, _: &I) -> Option<<J as CanHomFrom<I>>::Homomorphism>

Source§

fn map_in( &self, from: &I, el: <I as RingBase>::Element, _: &<J as CanHomFrom<I>>::Homomorphism, ) -> <J as RingBase>::Element

Source§

default fn map_in_ref( &self, from: &I, el: &<I as RingBase>::Element, hom: &<J as CanHomFrom<I>>::Homomorphism, ) -> <J as RingBase>::Element

Source§

fn mul_assign_map_in( &self, from: &S, lhs: &mut Self::Element, rhs: S::Element, hom: &Self::Homomorphism, )

Source§

fn mul_assign_map_in_ref( &self, from: &S, lhs: &mut Self::Element, rhs: &S::Element, hom: &Self::Homomorphism, )

Source§

impl<I, J> CanIsoFromTo<I> for J
where I: IntegerRing + ?Sized, J: IntegerRing + ?Sized,

Source§

type Isomorphism = ()

Source§

fn has_canonical_iso( &self, _: &I, ) -> Option<<J as CanIsoFromTo<I>>::Isomorphism>

Source§

fn map_out( &self, from: &I, el: <J as RingBase>::Element, _: &<J as CanIsoFromTo<I>>::Isomorphism, ) -> <I as RingBase>::Element

Source§

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

Source§

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

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

impl<R> ComputeInnerProduct for R
where R: RingBase + ?Sized,

Source§

default fn inner_product_ref_fst<'a, I>( &self, els: I, ) -> <R as RingBase>::Element
where I: Iterator<Item = (&'a <R as RingBase>::Element, <R as RingBase>::Element)>, <R as RingBase>::Element: 'a,

Computes the inner product sum_i lhs[i] * rhs[i].
Source§

default fn inner_product_ref<'a, I>(&self, els: I) -> <R as RingBase>::Element
where I: Iterator<Item = (&'a <R as RingBase>::Element, &'a <R as RingBase>::Element)>, <R as RingBase>::Element: 'a,

Computes the inner product sum_i lhs[i] * rhs[i].
Source§

default fn inner_product<I>(&self, els: I) -> <R as RingBase>::Element
where I: Iterator<Item = (<R as RingBase>::Element, <R as RingBase>::Element)>,

Computes the inner product sum_i lhs[i] * rhs[i].
Source§

impl<R, S> CooleyTuckeyButterfly<S> for R
where S: RingBase + ?Sized, R: RingBase + ?Sized,

Source§

default fn butterfly<V, H>( &self, hom: H, values: &mut V, twiddle: &<S as RingBase>::Element, i1: usize, i2: usize, )
where V: VectorViewMut<<R as RingBase>::Element>, H: Homomorphism<S, R>,

Should compute (values[i1], values[i2]) := (values[i1] + twiddle * values[i2], values[i1] - twiddle * values[i2])
Source§

default fn inv_butterfly<V, H>( &self, hom: H, values: &mut V, twiddle: &<S as RingBase>::Element, i1: usize, i2: usize, )
where V: VectorViewMut<<R as RingBase>::Element>, H: Homomorphism<S, R>,

Should compute (values[i1], values[i2]) := (values[i1] + values[i2], (values[i1] - values[i2]) * twiddle)
Source§

impl<I> EvaluatePolyLocallyRing for I
where I: IntegerRing,

Source§

type LocalComputationData<'ring> = RingValue<ZnBase<RingValue<AsFieldBase<RingValue<ZnBase>>>, RingRef<'ring, I>>> where I: 'ring

Source§

type LocalRing<'ring> = RingValue<AsFieldBase<RingValue<ZnBase>>> where I: 'ring

Source§

type LocalRingBase<'ring> = AsFieldBase<RingValue<ZnBase>> where I: 'ring

The proper way would be to define this with two lifetime parameters 'ring and 'data, to allow it to reference both the ring itself and the current LocalComputationData. However, when doing this, I ran into the compiler bug https://github.com/rust-lang/rust/issues/100013. Read more
Source§

fn ln_pseudo_norm(&self, el: &<I as RingBase>::Element) -> f64

Computes (an upper bound of) the natural logarithm of the pseudo norm of a ring element. Read more
Source§

fn local_computation<'ring>( &'ring self, ln_pseudo_norm_bound: f64, ) -> <I as EvaluatePolyLocallyRing>::LocalComputationData<'ring>

Sets up the context for a new polynomial evaluation, whose output should have pseudo norm less than the given bound.
Source§

fn local_ring_at<'ring>( &self, computation: &<I as EvaluatePolyLocallyRing>::LocalComputationData<'ring>, i: usize, ) -> <I as EvaluatePolyLocallyRing>::LocalRing<'ring>
where I: 'ring,

Returns the i-th local ring belonging to the given computation.
Source§

fn local_ring_count<'ring>( &self, computation: &<I as EvaluatePolyLocallyRing>::LocalComputationData<'ring>, ) -> usize
where I: 'ring,

Returns the number k of local rings that are required to get the correct result of the given computation.
Source§

fn reduce<'ring>( &self, computation: &<I as EvaluatePolyLocallyRing>::LocalComputationData<'ring>, el: &<I as RingBase>::Element, ) -> Vec<<<I as EvaluatePolyLocallyRing>::LocalRingBase<'ring> as RingBase>::Element>
where I: 'ring,

Computes the map R -> R1 x ... x Rk, i.e. maps the given element into each of the local rings.
Source§

fn lift_combine<'ring>( &self, computation: &<I as EvaluatePolyLocallyRing>::LocalComputationData<'ring>, el: &[<<I as EvaluatePolyLocallyRing>::LocalRingBase<'ring> as RingBase>::Element], ) -> <I as RingBase>::Element
where I: 'ring,

Computes a preimage under the map R -> R1 x ... x Rk, i.e. a ring element x that reduces to each of the given local rings under the map EvaluatePolyLocallyRing::reduce(). Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<F, T> IntCast<F> for T
where F: IntegerRing + ?Sized, T: IntegerRing + ?Sized,

Source§

default fn cast( &self, from: &F, value: <F as RingBase>::Element, ) -> <T as RingBase>::Element

Maps the given integer into this ring. Read more
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
Source§

impl<R> KaratsubaHint for R
where R: RingBase + ?Sized,

Source§

default fn karatsuba_threshold(&self) -> usize

Define a threshold from which on KaratsubaAlgorithm will use the Karatsuba algorithm. Read more
Source§

impl<R> LinSolveRing for R

Source§

default fn solve_right<V1, V2, V3, A>( &self, lhs: SubmatrixMut<'_, V1, <R as RingBase>::Element>, rhs: SubmatrixMut<'_, V2, <R as RingBase>::Element>, out: SubmatrixMut<'_, V3, <R as RingBase>::Element>, allocator: A, ) -> SolveResult

Tries to find a matrix X such that lhs * X = rhs. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<R> PolyTFracGCDRing for R

Source§

default fn power_decomposition<P>( poly_ring: P, poly: &<<P as RingStore>::Type as RingBase>::Element, ) -> Vec<(<<P as RingStore>::Type as RingBase>::Element, usize)>

Compute square-free polynomials f1, f2, ... such that a f = f1 f2^2 f3^3 ... for some non-zero-divisor a of this ring. They are returned as tuples (fi, i) where deg(fi) > 0. Read more
Source§

default fn gcd<P>( poly_ring: P, lhs: &<<P as RingStore>::Type as RingBase>::Element, rhs: &<<P as RingStore>::Type as RingBase>::Element, ) -> <<P as RingStore>::Type as RingBase>::Element

Computes the greatest common divisor of two polynomials f, g over the fraction field, which is the largest-degree polynomial d such that d | a f, a g for some non-zero-divisor a of this ring. Read more
Source§

fn squarefree_part<P>(poly_ring: P, poly: &El<P>) -> El<P>
where P: RingStore + Copy, P::Type: PolyRing + DivisibilityRing, <P::Type as RingExtension>::BaseRing: RingStore<Type = Self>,

Computes the square-free part of a polynomial f, which is the largest-degree squarefree polynomial d such that d | a f for some non-zero-divisor a of this ring. Read more
Source§

impl<R> StrassenHint for R
where R: RingBase + ?Sized,

Source§

default fn strassen_threshold(&self) -> usize

Define a threshold from which on StrassenAlgorithm will use the Strassen algorithm. 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, 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<R> SelfIso for R
where R: CanIsoFromTo<R> + ?Sized,