pub struct GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,{ /* private fields */ }
unstable-enable
only.Expand description
§Availability
This API is marked as unstable and is only available when the unstable-enable
crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Implementations§
Source§impl<K, Impl, I> GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
impl<K, Impl, I> GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
Sourcepub fn new(field: K, image_of_canonical_gen: El<K>) -> Self
pub fn new(field: K, image_of_canonical_gen: El<K>) -> Self
Creates a new Galois automorphism, mapping the canonical generator of field to the given element.
§Availability
This API is marked as unstable and is only available when the unstable-enable
crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Sourcepub fn compose_gal(self, first: &Self) -> Self
pub fn compose_gal(self, first: &Self) -> Self
Returns the galois automorphism x -> self(first(x))
§Availability
This API is marked as unstable and is only available when the unstable-enable
crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Sourcepub fn pow(self, k: usize) -> Self
pub fn pow(self, k: usize) -> Self
Returns the galois automorphism x -> self(...(self(x))...)
, where
self
is applied k
times.
§Availability
This API is marked as unstable and is only available when the unstable-enable
crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Returns true if this is the identity map.
§Availability
This API is marked as unstable and is only available when the unstable-enable
crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Trait Implementations§
Source§impl<K, Impl, I> Clone for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>> + Clone,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
impl<K, Impl, I> Clone for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>> + Clone,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
Source§impl<K, Impl, I> Debug for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
impl<K, Impl, I> Debug for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
Source§impl<K, Impl, I> Hash for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra + HashableElRing,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
impl<K, Impl, I> Hash for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra + HashableElRing,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
Source§impl<K, Impl, I> Homomorphism<NumberFieldBase<Impl, I>, NumberFieldBase<Impl, I>> for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
impl<K, Impl, I> Homomorphism<NumberFieldBase<Impl, I>, NumberFieldBase<Impl, I>> for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
Source§type DomainStore = K
type DomainStore = K
RingStore
used by this object to store the domain ring.Source§type CodomainStore = K
type CodomainStore = K
RingStore
used by this object to store the codomain ring.Source§fn codomain<'a>(&'a self) -> &'a Self::CodomainStore
fn codomain<'a>(&'a self) -> &'a Self::CodomainStore
Source§fn domain<'a>(&'a self) -> &'a Self::DomainStore
fn domain<'a>(&'a self) -> &'a Self::DomainStore
Source§fn map_ref(
&self,
x: &<NumberFieldBase<Impl, I> as RingBase>::Element,
) -> <NumberFieldBase<Impl, I> as RingBase>::Element
fn map_ref( &self, x: &<NumberFieldBase<Impl, I> as RingBase>::Element, ) -> <NumberFieldBase<Impl, I> as RingBase>::Element
Source§fn map(
&self,
x: <NumberFieldBase<Impl, I> as RingBase>::Element,
) -> <NumberFieldBase<Impl, I> as RingBase>::Element
fn map( &self, x: <NumberFieldBase<Impl, I> as RingBase>::Element, ) -> <NumberFieldBase<Impl, I> as RingBase>::Element
Source§fn mul_assign_map(&self, lhs: &mut Codomain::Element, rhs: Domain::Element)
fn mul_assign_map(&self, lhs: &mut Codomain::Element, rhs: Domain::Element)
Source§fn mul_assign_ref_map(&self, lhs: &mut Codomain::Element, rhs: &Domain::Element)
fn mul_assign_ref_map(&self, lhs: &mut Codomain::Element, rhs: &Domain::Element)
Source§fn mul_map(
&self,
lhs: Codomain::Element,
rhs: Domain::Element,
) -> Codomain::Element
fn mul_map( &self, lhs: Codomain::Element, rhs: Domain::Element, ) -> Codomain::Element
Source§fn fma_map(
&self,
lhs: &Codomain::Element,
rhs: &Domain::Element,
summand: Codomain::Element,
) -> Codomain::Element
fn fma_map( &self, lhs: &Codomain::Element, rhs: &Domain::Element, summand: Codomain::Element, ) -> Codomain::Element
lhs * rhs + summand
, where rhs
is mapped
into the ring via this homomorphism. Read moreSource§fn mul_ref_fst_map(
&self,
lhs: &Codomain::Element,
rhs: Domain::Element,
) -> Codomain::Element
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
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
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>,
fn compose<F, PrevDomain: ?Sized + RingBase>(
self,
prev: F,
) -> ComposedHom<PrevDomain, Domain, Codomain, F, Self>where
Self: Sized,
F: Homomorphism<PrevDomain, Domain>,
x -> self.map(prev.map(x))
.Source§fn mul_assign_ref_map_through_hom<First: ?Sized + RingBase, H: Homomorphism<First, Domain>>(
&self,
lhs: &mut Codomain::Element,
rhs: &First::Element,
hom: H,
)
fn mul_assign_ref_map_through_hom<First: ?Sized + RingBase, H: Homomorphism<First, Domain>>( &self, lhs: &mut Codomain::Element, rhs: &First::Element, hom: H, )
Source§fn mul_assign_map_through_hom<First: ?Sized + RingBase, H: Homomorphism<First, Domain>>(
&self,
lhs: &mut Codomain::Element,
rhs: First::Element,
hom: H,
)
fn mul_assign_map_through_hom<First: ?Sized + RingBase, H: Homomorphism<First, Domain>>( &self, lhs: &mut Codomain::Element, rhs: First::Element, hom: H, )
Source§impl<K, Impl, I> PartialEq for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
impl<K, Impl, I> PartialEq for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
impl<K, Impl, I> Eq for GaloisAutomorphism<K, Impl, I>where
K: RingStore<Type = NumberFieldBase<Impl, I>>,
Impl: RingStore,
Impl::Type: Field + FreeAlgebra,
<Impl::Type as RingExtension>::BaseRing: RingStore<Type = RationalFieldBase<I>>,
I: RingStore,
I::Type: IntegerRing,
Auto Trait Implementations§
impl<K, Impl, I> Freeze for GaloisAutomorphism<K, Impl, I>
impl<K, Impl, I> RefUnwindSafe for GaloisAutomorphism<K, Impl, I>where
<<Impl as RingStore>::Type as RingExtension>::BaseRing: Sized,
K: RefUnwindSafe,
<<Impl as RingStore>::Type as RingBase>::Element: RefUnwindSafe,
impl<K, Impl, I> Send for GaloisAutomorphism<K, Impl, I>
impl<K, Impl, I> Sync for GaloisAutomorphism<K, Impl, I>
impl<K, Impl, I> Unpin for GaloisAutomorphism<K, Impl, I>
impl<K, Impl, I> UnwindSafe for GaloisAutomorphism<K, Impl, I>where
<<Impl as RingStore>::Type as RingExtension>::BaseRing: Sized,
K: UnwindSafe,
<<Impl as RingStore>::Type as RingBase>::Element: 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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