pub struct FrobeniusSemilinearMap<R: CoefficientFrobeniusContext> { /* private fields */ }Expand description
A map v -> A sigma^r(v) between finite free modules over one context.
Vectors are columns, A has shape target_dimension x source_dimension,
and sigma is the context’s checked coefficient Frobenius. Composition
records the unreduced sum of Frobenius exponents and twists the inner
matrix before multiplication.
Implementations§
Source§impl<R: CoefficientFrobeniusContext> FrobeniusSemilinearMap<R>
impl<R: CoefficientFrobeniusContext> FrobeniusSemilinearMap<R>
Sourcepub fn new(matrix: Matrix<R>, frobenius_exponent: u64) -> Self
pub fn new(matrix: Matrix<R>, frobenius_exponent: u64) -> Self
Construct the map v -> A sigma^r(v) represented by matrix and r.
Sourcepub fn identity(context: R, dimension: usize) -> Self
pub fn identity(context: R, dimension: usize) -> Self
Construct the identity map on a free module of the requested dimension.
Sourcepub fn frobenius_exponent(&self) -> u64
pub fn frobenius_exponent(&self) -> u64
Unreduced nonnegative Frobenius exponent r.
Sourcepub fn source_dimension(&self) -> usize
pub fn source_dimension(&self) -> usize
Dimension of the source free module.
Sourcepub fn target_dimension(&self) -> usize
pub fn target_dimension(&self) -> usize
Dimension of the target free module.
Sourcepub fn verify(&self) -> Result<(), VerificationError>
pub fn verify(&self) -> Result<(), VerificationError>
Recheck the matrix context and dimensions defining this map.
Sourcepub fn to_json(&self) -> Result<String, NoetherError>
pub fn to_json(&self) -> Result<String, NoetherError>
Serialize the complete context, matrix, and Frobenius exponent.
Sourcepub fn from_json(value: &str) -> Result<Self, NoetherError>where
for<'de> Matrix<R>: Deserialize<'de>,
pub fn from_json(value: &str) -> Result<Self, NoetherError>where
for<'de> Matrix<R>: Deserialize<'de>,
Deserialize and revalidate a semilinear map and its exact context.
Source§impl<R: CoefficientFrobeniusContext> FrobeniusSemilinearMap<R>
impl<R: CoefficientFrobeniusContext> FrobeniusSemilinearMap<R>
Sourcepub fn apply(&self, vector: &Vector<R>) -> Result<Vector<R>, SemilinearMapError>
pub fn apply(&self, vector: &Vector<R>) -> Result<Vector<R>, SemilinearMapError>
Apply v -> A sigma^r(v) after checking context and dimension.
Sourcepub fn apply_block(
&self,
block: &Matrix<R>,
) -> Result<Matrix<R>, SemilinearMapError>
pub fn apply_block( &self, block: &Matrix<R>, ) -> Result<Matrix<R>, SemilinearMapError>
Apply the semilinear map independently to every column of a dense block.
Sourcepub fn compose(&self, inner: &Self) -> Result<Self, SemilinearMapError>
pub fn compose(&self, inner: &Self) -> Result<Self, SemilinearMapError>
Compose self after inner.
If self(v) = A sigma^r(v) and inner(v) = B sigma^s(v), the result is
A sigma^r(B) sigma^(r+s)(v).
Source§impl FrobeniusSemilinearMap<QadicRing>
impl FrobeniusSemilinearMap<QadicRing>
Sourcepub fn restrict_scalars(&self) -> Result<Matrix<PadicRing>, SemilinearMapError>
pub fn restrict_scalars(&self) -> Result<Matrix<PadicRing>, SemilinearMapError>
Restrict this semilinear map to an ordinary Z_p-linear matrix.
Module coordinates are flattened in module-major order, with each q-adic coordinate expanded in ascending power-basis order.
Source§impl FrobeniusSemilinearMap<QadicField>
impl FrobeniusSemilinearMap<QadicField>
Sourcepub fn restrict_scalars(&self) -> Result<Matrix<PadicField>, SemilinearMapError>
pub fn restrict_scalars(&self) -> Result<Matrix<PadicField>, SemilinearMapError>
Restrict this semilinear map to an ordinary Q_p-linear matrix.
Module coordinates are flattened in module-major order, with each q-adic coordinate expanded in ascending power-basis order.
Trait Implementations§
Source§impl<R: Clone + CoefficientFrobeniusContext> Clone for FrobeniusSemilinearMap<R>
impl<R: Clone + CoefficientFrobeniusContext> Clone for FrobeniusSemilinearMap<R>
Source§fn clone(&self) -> FrobeniusSemilinearMap<R>
fn clone(&self) -> FrobeniusSemilinearMap<R>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<R: CoefficientFrobeniusContext> Debug for FrobeniusSemilinearMap<R>
impl<R: CoefficientFrobeniusContext> Debug for FrobeniusSemilinearMap<R>
Source§impl<R: CoefficientFrobeniusContext> Display for FrobeniusSemilinearMap<R>
impl<R: CoefficientFrobeniusContext> Display for FrobeniusSemilinearMap<R>
Source§impl<R: PartialEq + CoefficientFrobeniusContext> PartialEq for FrobeniusSemilinearMap<R>
impl<R: PartialEq + CoefficientFrobeniusContext> PartialEq for FrobeniusSemilinearMap<R>
Source§impl<R: CoefficientFrobeniusContext> SemanticType for FrobeniusSemilinearMap<R>
impl<R: CoefficientFrobeniusContext> SemanticType for FrobeniusSemilinearMap<R>
Source§const TYPE_ID: &'static str = "noether/linalg/FrobeniusSemilinearMap@1"
const TYPE_ID: &'static str = "noether/linalg/FrobeniusSemilinearMap@1"
Source§fn canonical_bytes(&self) -> Result<Vec<u8>, NoetherError>
fn canonical_bytes(&self) -> Result<Vec<u8>, NoetherError>
Source§fn describe() -> &'static TypeDescription
fn describe() -> &'static TypeDescription
impl<R: Eq + CoefficientFrobeniusContext> Eq for FrobeniusSemilinearMap<R>
impl<R: CoefficientFrobeniusContext> StructuralPartialEq for FrobeniusSemilinearMap<R>
Auto Trait Implementations§
impl<R> Freeze for FrobeniusSemilinearMap<R>
impl<R> RefUnwindSafe for FrobeniusSemilinearMap<R>
impl<R> Send for FrobeniusSemilinearMap<R>
impl<R> Sync for FrobeniusSemilinearMap<R>
impl<R> Unpin for FrobeniusSemilinearMap<R>
impl<R> UnwindSafe for FrobeniusSemilinearMap<R>
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