Add documentation.
This commit is contained in:
parent
84a01a720d
commit
9bd2890875
|
@ -35,7 +35,7 @@ impl<N: Scalar, R: Dim, C: Dim, S: Storage<N, R, C>> Matrix<N, R, C, S> {
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! component_binop_impl(
|
macro_rules! component_binop_impl(
|
||||||
($($binop: ident, $binop_mut: ident, $binop_assign: ident, $cbpy: ident, $Trait: ident . $op: ident . $op_assign: ident, $desc:expr, $desc_mut:expr);* $(;)*) => {$(
|
($($binop: ident, $binop_mut: ident, $binop_assign: ident, $cmpy: ident, $Trait: ident . $op: ident . $op_assign: ident, $desc:expr, $desc_cmpy:expr, $desc_mut:expr);* $(;)*) => {$(
|
||||||
impl<N: Scalar, R1: Dim, C1: Dim, SA: Storage<N, R1, C1>> Matrix<N, R1, C1, SA> {
|
impl<N: Scalar, R1: Dim, C1: Dim, SA: Storage<N, R1, C1>> Matrix<N, R1, C1, SA> {
|
||||||
#[doc = $desc]
|
#[doc = $desc]
|
||||||
#[inline]
|
#[inline]
|
||||||
|
@ -63,8 +63,9 @@ macro_rules! component_binop_impl(
|
||||||
|
|
||||||
impl<N: Scalar, R1: Dim, C1: Dim, SA: StorageMut<N, R1, C1>> Matrix<N, R1, C1, SA> {
|
impl<N: Scalar, R1: Dim, C1: Dim, SA: StorageMut<N, R1, C1>> Matrix<N, R1, C1, SA> {
|
||||||
// componentwise binop plus Y.
|
// componentwise binop plus Y.
|
||||||
|
#[doc = $desc_cmpy]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn $cbpy<R2, C2, SB, R3, C3, SC>(&mut self, alpha: N, a: &Matrix<N, R2, C2, SB>, b: &Matrix<N, R3, C3, SC>, beta: N)
|
pub fn $cmpy<R2, C2, SB, R3, C3, SC>(&mut self, alpha: N, a: &Matrix<N, R2, C2, SB>, b: &Matrix<N, R3, C3, SC>, beta: N)
|
||||||
where N: $Trait + Zero + Mul<N, Output = N> + Add<N, Output = N>,
|
where N: $Trait + Zero + Mul<N, Output = N> + Add<N, Output = N>,
|
||||||
R2: Dim, C2: Dim,
|
R2: Dim, C2: Dim,
|
||||||
R3: Dim, C3: Dim,
|
R3: Dim, C3: Dim,
|
||||||
|
@ -134,8 +135,12 @@ macro_rules! component_binop_impl(
|
||||||
|
|
||||||
component_binop_impl!(
|
component_binop_impl!(
|
||||||
component_mul, component_mul_mut, component_mul_assign, cmpy, ClosedMul.mul.mul_assign,
|
component_mul, component_mul_mut, component_mul_assign, cmpy, ClosedMul.mul.mul_assign,
|
||||||
"Componentwise matrix multiplication.", "Mutable, componentwise matrix multiplication.";
|
"Componentwise matrix multiplication.",
|
||||||
|
"Computes componentwise `self[i] = alpha * a[i] * b[i] + beta * self[i]",
|
||||||
|
"Inplace componentwise matrix multiplication.";
|
||||||
component_div, component_div_mut, component_div_assign, cdpy, ClosedDiv.div.div_assign,
|
component_div, component_div_mut, component_div_assign, cdpy, ClosedDiv.div.div_assign,
|
||||||
"Componentwise matrix division.", "Mutable, componentwise matrix division.";
|
"Componentwise matrix division.",
|
||||||
|
"Computes componentwise `self[i] = alpha * a[i] / b[i] + beta * self[i]",
|
||||||
|
"Inplace componentwise matrix division.";
|
||||||
// FIXME: add other operators like bitshift, etc. ?
|
// FIXME: add other operators like bitshift, etc. ?
|
||||||
);
|
);
|
||||||
|
|
|
@ -9,6 +9,10 @@ use core::matrix_slice::{SliceStorage, SliceStorageMut};
|
||||||
*/
|
*/
|
||||||
impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
||||||
MatrixSliceMN<'a, N, R, C, RStride, CStride> {
|
MatrixSliceMN<'a, N, R, C, RStride, CStride> {
|
||||||
|
/// Creates, without bound-checking, a matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
|
///
|
||||||
|
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
||||||
|
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_with_strides_generic_unchecked(
|
pub unsafe fn new_with_strides_generic_unchecked(
|
||||||
data: &'a [N],
|
data: &'a [N],
|
||||||
|
@ -26,6 +30,10 @@ impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
||||||
Self::from_data(data)
|
Self::from_data(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
|
///
|
||||||
|
/// Panics if the input data array dose not contain enough elements.
|
||||||
|
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_with_strides_generic(
|
pub fn new_with_strides_generic(
|
||||||
data: &'a [N],
|
data: &'a [N],
|
||||||
|
@ -49,6 +57,11 @@ impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
||||||
|
|
||||||
impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
||||||
MatrixSliceMutMN<'a, N, R, C, RStride, CStride> {
|
MatrixSliceMutMN<'a, N, R, C, RStride, CStride> {
|
||||||
|
|
||||||
|
/// Creates, without bound-checking, a mutable matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
|
///
|
||||||
|
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
||||||
|
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_with_strides_generic_mut_unchecked(
|
pub unsafe fn new_with_strides_generic_mut_unchecked(
|
||||||
data: &'a mut [N],
|
data: &'a mut [N],
|
||||||
|
@ -66,6 +79,10 @@ impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
||||||
Self::from_data(data)
|
Self::from_data(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a mutable matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
|
///
|
||||||
|
/// Panics if the input data array dose not contain enough elements.
|
||||||
|
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_with_strides_generic_mut(
|
pub fn new_with_strides_generic_mut(
|
||||||
data: &'a mut [N],
|
data: &'a mut [N],
|
||||||
|
@ -90,11 +107,19 @@ impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMN<'a, N, R, C> {
|
impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMN<'a, N, R, C> {
|
||||||
|
/// Creates, without bound-checking, a matrix slice from an array and with dimensions specified by generic types instances.
|
||||||
|
///
|
||||||
|
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
||||||
|
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_generic_unchecked(data: &'a [N], start: usize, nrows: R, ncols: C) -> Self {
|
pub unsafe fn new_generic_unchecked(data: &'a [N], start: usize, nrows: R, ncols: C) -> Self {
|
||||||
Self::new_with_strides_generic_unchecked(data, start, nrows, ncols, U1, nrows)
|
Self::new_with_strides_generic_unchecked(data, start, nrows, ncols, U1, nrows)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
|
///
|
||||||
|
/// Panics if the input data array dose not contain enough elements.
|
||||||
|
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_generic(data: &'a [N], nrows: R, ncols: C) -> Self {
|
pub fn new_generic(data: &'a [N], nrows: R, ncols: C) -> Self {
|
||||||
Self::new_with_strides_generic(data, nrows, ncols, U1, nrows)
|
Self::new_with_strides_generic(data, nrows, ncols, U1, nrows)
|
||||||
|
@ -102,6 +127,10 @@ impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMN<'a, N, R, C> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMutMN<'a, N, R, C> {
|
impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMutMN<'a, N, R, C> {
|
||||||
|
/// Creates, without bound-checking, a mutable matrix slice from an array and with dimensions specified by generic types instances.
|
||||||
|
///
|
||||||
|
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
||||||
|
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_generic_mut_unchecked(
|
pub unsafe fn new_generic_mut_unchecked(
|
||||||
data: &'a mut [N],
|
data: &'a mut [N],
|
||||||
|
@ -112,6 +141,10 @@ impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMutMN<'a, N, R, C> {
|
||||||
Self::new_with_strides_generic_mut_unchecked(data, start, nrows, ncols, U1, nrows)
|
Self::new_with_strides_generic_mut_unchecked(data, start, nrows, ncols, U1, nrows)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a mutable matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
|
///
|
||||||
|
/// Panics if the input data array dose not contain enough elements.
|
||||||
|
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_generic_mut(data: &'a mut [N], nrows: R, ncols: C) -> Self {
|
pub fn new_generic_mut(data: &'a mut [N], nrows: R, ncols: C) -> Self {
|
||||||
Self::new_with_strides_generic_mut(data, nrows, ncols, U1, nrows)
|
Self::new_with_strides_generic_mut(data, nrows, ncols, U1, nrows)
|
||||||
|
@ -121,11 +154,15 @@ impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMutMN<'a, N, R, C> {
|
||||||
macro_rules! impl_constructors(
|
macro_rules! impl_constructors(
|
||||||
($($Dims: ty),*; $(=> $DimIdent: ident: $DimBound: ident),*; $($gargs: expr),*; $($args: ident),*) => {
|
($($Dims: ty),*; $(=> $DimIdent: ident: $DimBound: ident),*; $($gargs: expr),*; $($args: ident),*) => {
|
||||||
impl<'a, N: Scalar, $($DimIdent: $DimBound),*> MatrixSliceMN<'a, N, $($Dims),*> {
|
impl<'a, N: Scalar, $($DimIdent: $DimBound),*> MatrixSliceMN<'a, N, $($Dims),*> {
|
||||||
|
/// Creates a new matrix slice from the given data array.
|
||||||
|
///
|
||||||
|
/// Panics if `data` does not contain enough elements.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(data: &'a [N], $($args: usize),*) -> Self {
|
pub fn new(data: &'a [N], $($args: usize),*) -> Self {
|
||||||
Self::new_generic(data, $($gargs),*)
|
Self::new_generic(data, $($gargs),*)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates, without bound checking, a new matrix slice from the given data array.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_unchecked(data: &'a [N], start: usize, $($args: usize),*) -> Self {
|
pub unsafe fn new_unchecked(data: &'a [N], start: usize, $($args: usize),*) -> Self {
|
||||||
Self::new_generic_unchecked(data, start, $($gargs),*)
|
Self::new_generic_unchecked(data, start, $($gargs),*)
|
||||||
|
@ -133,11 +170,15 @@ macro_rules! impl_constructors(
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, N: Scalar, $($DimIdent: $DimBound, )*> MatrixSliceMN<'a, N, $($Dims,)* Dynamic, Dynamic> {
|
impl<'a, N: Scalar, $($DimIdent: $DimBound, )*> MatrixSliceMN<'a, N, $($Dims,)* Dynamic, Dynamic> {
|
||||||
|
/// Creates a new matrix slice with the specified strides from the given data array.
|
||||||
|
///
|
||||||
|
/// Panics if `data` does not contain enough elements.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_with_strides(data: &'a [N], $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
pub fn new_with_strides(data: &'a [N], $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
||||||
Self::new_with_strides_generic(data, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
Self::new_with_strides_generic(data, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates, without bound checking, a new matrix slice with the specified strides from the given data array.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_with_strides_unchecked(data: &'a [N], start: usize, $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
pub unsafe fn new_with_strides_unchecked(data: &'a [N], start: usize, $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
||||||
Self::new_with_strides_generic_unchecked(data, start, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
Self::new_with_strides_generic_unchecked(data, start, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
||||||
|
@ -170,12 +211,15 @@ impl_constructors!(Dynamic, Dynamic;
|
||||||
macro_rules! impl_constructors_mut(
|
macro_rules! impl_constructors_mut(
|
||||||
($($Dims: ty),*; $(=> $DimIdent: ident: $DimBound: ident),*; $($gargs: expr),*; $($args: ident),*) => {
|
($($Dims: ty),*; $(=> $DimIdent: ident: $DimBound: ident),*; $($gargs: expr),*; $($args: ident),*) => {
|
||||||
impl<'a, N: Scalar, $($DimIdent: $DimBound),*> MatrixSliceMutMN<'a, N, $($Dims),*> {
|
impl<'a, N: Scalar, $($DimIdent: $DimBound),*> MatrixSliceMutMN<'a, N, $($Dims),*> {
|
||||||
|
/// Creates a new mutable matrix slice from the given data array.
|
||||||
|
///
|
||||||
|
/// Panics if `data` does not contain enough elements.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(data: &'a mut [N], $($args: usize),*) -> Self {
|
pub fn new(data: &'a mut [N], $($args: usize),*) -> Self {
|
||||||
Self::new_generic_mut(data, $($gargs),*)
|
Self::new_generic_mut(data, $($gargs),*)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates, without bound checking, a new mutable matrix slice from the given data array.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_unchecked(data: &'a mut [N], start: usize, $($args: usize),*) -> Self {
|
pub unsafe fn new_unchecked(data: &'a mut [N], start: usize, $($args: usize),*) -> Self {
|
||||||
Self::new_generic_mut_unchecked(data, start, $($gargs),*)
|
Self::new_generic_mut_unchecked(data, start, $($gargs),*)
|
||||||
|
@ -183,12 +227,16 @@ macro_rules! impl_constructors_mut(
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, N: Scalar, $($DimIdent: $DimBound, )*> MatrixSliceMutMN<'a, N, $($Dims,)* Dynamic, Dynamic> {
|
impl<'a, N: Scalar, $($DimIdent: $DimBound, )*> MatrixSliceMutMN<'a, N, $($Dims,)* Dynamic, Dynamic> {
|
||||||
|
/// Creates a new mutable matrix slice with the specified strides from the given data array.
|
||||||
|
///
|
||||||
|
/// Panics if `data` does not contain enough elements.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_with_strides(data: &'a mut [N], $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
pub fn new_with_strides(data: &'a mut [N], $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
||||||
Self::new_with_strides_generic_mut(
|
Self::new_with_strides_generic_mut(
|
||||||
data, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
data, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates, without bound checking, a new mutable matrix slice with the specified strides from the given data array.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_with_strides_unchecked(data: &'a mut [N], start: usize, $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
pub unsafe fn new_with_strides_unchecked(data: &'a mut [N], start: usize, $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
||||||
Self::new_with_strides_generic_mut_unchecked(
|
Self::new_with_strides_generic_mut_unchecked(
|
||||||
|
|
|
@ -81,7 +81,7 @@ an optimized set of tools for computer graphics and physics. Those features incl
|
||||||
#![deny(non_upper_case_globals)]
|
#![deny(non_upper_case_globals)]
|
||||||
#![deny(unused_qualifications)]
|
#![deny(unused_qualifications)]
|
||||||
#![deny(unused_results)]
|
#![deny(unused_results)]
|
||||||
// #![warn(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
#![doc(html_root_url = "http://nalgebra.org/rustdoc")]
|
#![doc(html_root_url = "http://nalgebra.org/rustdoc")]
|
||||||
|
|
||||||
#[cfg(feature = "arbitrary")]
|
#[cfg(feature = "arbitrary")]
|
||||||
|
|
Loading…
Reference in New Issue