pub trait CustomFamilyPsiDerivativeOperator:
Send
+ Sync
+ Any {
Show 14 methods
// Required methods
fn as_any(&self) -> &dyn Any;
fn n_data(&self) -> usize;
fn p_out(&self) -> usize;
fn transpose_mul(
&self,
axis: usize,
v: &ArrayView1<'_, f64>,
) -> Result<Array1<f64>, BasisError>;
fn forward_mul(
&self,
axis: usize,
u: &ArrayView1<'_, f64>,
) -> Result<Array1<f64>, BasisError>;
fn transpose_mul_second_diag(
&self,
axis: usize,
v: &ArrayView1<'_, f64>,
) -> Result<Array1<f64>, BasisError>;
fn transpose_mul_second_cross(
&self,
axis_d: usize,
axis_e: usize,
v: &ArrayView1<'_, f64>,
) -> Result<Array1<f64>, BasisError>;
fn forward_mul_second_diag(
&self,
axis: usize,
u: &ArrayView1<'_, f64>,
) -> Result<Array1<f64>, BasisError>;
fn forward_mul_second_cross(
&self,
axis_d: usize,
axis_e: usize,
u: &ArrayView1<'_, f64>,
) -> Result<Array1<f64>, BasisError>;
fn row_chunk_first(
&self,
axis: usize,
rows: Range<usize>,
) -> Result<Array2<f64>, BasisError>;
fn row_chunk_second_diag(
&self,
axis: usize,
rows: Range<usize>,
) -> Result<Array2<f64>, BasisError>;
fn row_chunk_second_cross(
&self,
axis_d: usize,
axis_e: usize,
rows: Range<usize>,
) -> Result<Array2<f64>, BasisError>;
// Provided methods
fn row_vector_first_into(
&self,
axis: usize,
row: usize,
out: ArrayViewMut1<'_, f64>,
) -> Result<(), BasisError> { ... }
fn as_materializable(
&self,
) -> Option<&dyn MaterializablePsiDerivativeOperator> { ... }
}Required Methods§
fn as_any(&self) -> &dyn Any
fn n_data(&self) -> usize
fn p_out(&self) -> usize
fn transpose_mul( &self, axis: usize, v: &ArrayView1<'_, f64>, ) -> Result<Array1<f64>, BasisError>
fn forward_mul( &self, axis: usize, u: &ArrayView1<'_, f64>, ) -> Result<Array1<f64>, BasisError>
fn transpose_mul_second_diag( &self, axis: usize, v: &ArrayView1<'_, f64>, ) -> Result<Array1<f64>, BasisError>
fn transpose_mul_second_cross( &self, axis_d: usize, axis_e: usize, v: &ArrayView1<'_, f64>, ) -> Result<Array1<f64>, BasisError>
fn forward_mul_second_diag( &self, axis: usize, u: &ArrayView1<'_, f64>, ) -> Result<Array1<f64>, BasisError>
fn forward_mul_second_cross( &self, axis_d: usize, axis_e: usize, u: &ArrayView1<'_, f64>, ) -> Result<Array1<f64>, BasisError>
fn row_chunk_first( &self, axis: usize, rows: Range<usize>, ) -> Result<Array2<f64>, BasisError>
fn row_chunk_second_diag( &self, axis: usize, rows: Range<usize>, ) -> Result<Array2<f64>, BasisError>
fn row_chunk_second_cross( &self, axis_d: usize, axis_e: usize, rows: Range<usize>, ) -> Result<Array2<f64>, BasisError>
Provided Methods§
Sourcefn row_vector_first_into(
&self,
axis: usize,
row: usize,
out: ArrayViewMut1<'_, f64>,
) -> Result<(), BasisError>
fn row_vector_first_into( &self, axis: usize, row: usize, out: ArrayViewMut1<'_, f64>, ) -> Result<(), BasisError>
Single-row specialization of row_chunk_first. Default implementation
delegates to row_chunk_first(axis, row..row+1) and copies the
resulting row into the output buffer; implementations that can avoid
the temporary matrix allocation should override this method.
Sourcefn as_materializable(&self) -> Option<&dyn MaterializablePsiDerivativeOperator>
fn as_materializable(&self) -> Option<&dyn MaterializablePsiDerivativeOperator>
Optional upcast to the dense materialization surface. Production exact
paths should prefer the analytic matvec / row-chunk methods above and
avoid forming the full derivative matrix; implementations that do
support dense materialization (used by diagnostics, tests, and
small-data fallbacks) should override this to return Some(self).
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".