diff --git a/README.md b/README.md
index 08350907..bed6183d 100644
--- a/README.md
+++ b/README.md
@@ -30,10 +30,10 @@
-----
-## Gold sponsors
+## Platinum sponsors
Rapier is supported by:
-
+
diff --git a/src/base/construction.rs b/src/base/construction.rs
index b31574f7..a48e57a2 100644
--- a/src/base/construction.rs
+++ b/src/base/construction.rs
@@ -20,9 +20,11 @@ use typenum::{self, Cmp, Greater};
use simba::scalar::{ClosedAdd, ClosedMul};
use crate::base::allocator::Allocator;
-use crate::base::dimension::{Const, Dim, DimName, Dynamic, ToTypenum, U1, U2, U3, U4, U5, U6};
+use crate::base::dimension::{Dim, DimName, Dynamic, ToTypenum};
use crate::base::storage::Storage;
-use crate::base::{DefaultAllocator, Matrix, MatrixMN, MatrixN, Scalar, Unit, Vector, VectorN};
+use crate::base::{
+ Const, DefaultAllocator, Matrix, MatrixMN, MatrixN, Scalar, Unit, Vector, VectorN,
+};
/// When "no_unsound_assume_init" is enabled, expands to `unimplemented!()` instead of `new_uninitialized_generic().assume_init()`.
/// Intended as a placeholder, each callsite should be refactored to use uninitialized memory soundly
@@ -210,9 +212,9 @@ where
/// m.m31 == 7.0 && m.m32 == 8.0 && m.m33 == 9.0);
/// ```
#[inline]
- pub fn from_rows(rows: &[Matrix]) -> Self
+ pub fn from_rows(rows: &[Matrix, C, SB>]) -> Self
where
- SB: Storage,
+ SB: Storage, C>,
{
assert!(!rows.is_empty(), "At least one row must be given.");
let nrows = R::try_to_usize().unwrap_or_else(|| rows.len());
@@ -878,10 +880,10 @@ where
*
*/
macro_rules! componentwise_constructors_impl(
- ($($R: ty, $C: ty, $($args: ident:($irow: expr,$icol: expr)),*);* $(;)*) => {$(
- impl MatrixMN
+ ($($R: expr, $C: expr, $($args: ident:($irow: expr,$icol: expr)),*);* $(;)*) => {$(
+ impl MatrixMN, Const<$C>>
where N: Scalar,
- DefaultAllocator: Allocator {
+ DefaultAllocator: Allocator, Const<$C>> {
/// Initializes this matrix from its components.
#[inline]
pub fn new($($args: N),*) -> Self {
@@ -903,21 +905,21 @@ componentwise_constructors_impl!(
/*
* Square matrices 1 .. 6.
*/
- U2, U2, m11:(0,0), m12:(0,1),
+ 2, 2, m11:(0,0), m12:(0,1),
m21:(1,0), m22:(1,1);
- U3, U3, m11:(0,0), m12:(0,1), m13:(0,2),
+ 3, 3, m11:(0,0), m12:(0,1), m13:(0,2),
m21:(1,0), m22:(1,1), m23:(1,2),
m31:(2,0), m32:(2,1), m33:(2,2);
- U4, U4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
+ 4, 4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3);
- U5, U5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
+ 5, 5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3), m35:(2,4),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3), m45:(3,4),
m51:(4,0), m52:(4,1), m53:(4,2), m54:(4,3), m55:(4,4);
- U6, U6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
+ 6, 6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4), m26:(1,5),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3), m35:(2,4), m36:(2,5),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3), m45:(3,4), m46:(3,5),
@@ -927,47 +929,47 @@ componentwise_constructors_impl!(
/*
* Rectangular matrices with 2 rows.
*/
- U2, U3, m11:(0,0), m12:(0,1), m13:(0,2),
+ 2, 3, m11:(0,0), m12:(0,1), m13:(0,2),
m21:(1,0), m22:(1,1), m23:(1,2);
- U2, U4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
+ 2, 4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3);
- U2, U5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
+ 2, 5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4);
- U2, U6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
+ 2, 6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4), m26:(1,5);
/*
* Rectangular matrices with 3 rows.
*/
- U3, U2, m11:(0,0), m12:(0,1),
+ 3, 2, m11:(0,0), m12:(0,1),
m21:(1,0), m22:(1,1),
m31:(2,0), m32:(2,1);
- U3, U4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
+ 3, 4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3);
- U3, U5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
+ 3, 5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3), m35:(2,4);
- U3, U6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
+ 3, 6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4), m26:(1,5),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3), m35:(2,4), m36:(2,5);
/*
* Rectangular matrices with 4 rows.
*/
- U4, U2, m11:(0,0), m12:(0,1),
+ 4, 2, m11:(0,0), m12:(0,1),
m21:(1,0), m22:(1,1),
m31:(2,0), m32:(2,1),
m41:(3,0), m42:(3,1);
- U4, U3, m11:(0,0), m12:(0,1), m13:(0,2),
+ 4, 3, m11:(0,0), m12:(0,1), m13:(0,2),
m21:(1,0), m22:(1,1), m23:(1,2),
m31:(2,0), m32:(2,1), m33:(2,2),
m41:(3,0), m42:(3,1), m43:(3,2);
- U4, U5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
+ 4, 5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3), m35:(2,4),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3), m45:(3,4);
- U4, U6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
+ 4, 6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4), m26:(1,5),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3), m35:(2,4), m36:(2,5),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3), m45:(3,4), m46:(3,5);
@@ -975,22 +977,22 @@ componentwise_constructors_impl!(
/*
* Rectangular matrices with 5 rows.
*/
- U5, U2, m11:(0,0), m12:(0,1),
+ 5, 2, m11:(0,0), m12:(0,1),
m21:(1,0), m22:(1,1),
m31:(2,0), m32:(2,1),
m41:(3,0), m42:(3,1),
m51:(4,0), m52:(4,1);
- U5, U3, m11:(0,0), m12:(0,1), m13:(0,2),
+ 5, 3, m11:(0,0), m12:(0,1), m13:(0,2),
m21:(1,0), m22:(1,1), m23:(1,2),
m31:(2,0), m32:(2,1), m33:(2,2),
m41:(3,0), m42:(3,1), m43:(3,2),
m51:(4,0), m52:(4,1), m53:(4,2);
- U5, U4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
+ 5, 4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3),
m51:(4,0), m52:(4,1), m53:(4,2), m54:(4,3);
- U5, U6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
+ 5, 6, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4), m16:(0,5),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4), m26:(1,5),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3), m35:(2,4), m36:(2,5),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3), m45:(3,4), m46:(3,5),
@@ -999,25 +1001,25 @@ componentwise_constructors_impl!(
/*
* Rectangular matrices with 6 rows.
*/
- U6, U2, m11:(0,0), m12:(0,1),
+ 6, 2, m11:(0,0), m12:(0,1),
m21:(1,0), m22:(1,1),
m31:(2,0), m32:(2,1),
m41:(3,0), m42:(3,1),
m51:(4,0), m52:(4,1),
m61:(5,0), m62:(5,1);
- U6, U3, m11:(0,0), m12:(0,1), m13:(0,2),
+ 6, 3, m11:(0,0), m12:(0,1), m13:(0,2),
m21:(1,0), m22:(1,1), m23:(1,2),
m31:(2,0), m32:(2,1), m33:(2,2),
m41:(3,0), m42:(3,1), m43:(3,2),
m51:(4,0), m52:(4,1), m53:(4,2),
m61:(5,0), m62:(5,1), m63:(5,2);
- U6, U4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
+ 6, 4, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3),
m51:(4,0), m52:(4,1), m53:(4,2), m54:(4,3),
m61:(5,0), m62:(5,1), m63:(5,2), m64:(5,3);
- U6, U5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
+ 6, 5, m11:(0,0), m12:(0,1), m13:(0,2), m14:(0,3), m15:(0,4),
m21:(1,0), m22:(1,1), m23:(1,2), m24:(1,3), m25:(1,4),
m31:(2,0), m32:(2,1), m33:(2,2), m34:(2,3), m35:(2,4),
m41:(3,0), m42:(3,1), m43:(3,2), m44:(3,3), m45:(3,4),
@@ -1027,21 +1029,21 @@ componentwise_constructors_impl!(
/*
* Row vectors 1 .. 6.
*/
- U1, U1, x:(0,0);
- U1, U2, x:(0,0), y:(0,1);
- U1, U3, x:(0,0), y:(0,1), z:(0,2);
- U1, U4, x:(0,0), y:(0,1), z:(0,2), w:(0,3);
- U1, U5, x:(0,0), y:(0,1), z:(0,2), w:(0,3), a:(0,4);
- U1, U6, x:(0,0), y:(0,1), z:(0,2), w:(0,3), a:(0,4), b:(0,5);
+ 1, 1, x:(0,0);
+ 1, 2, x:(0,0), y:(0,1);
+ 1, 3, x:(0,0), y:(0,1), z:(0,2);
+ 1, 4, x:(0,0), y:(0,1), z:(0,2), w:(0,3);
+ 1, 5, x:(0,0), y:(0,1), z:(0,2), w:(0,3), a:(0,4);
+ 1, 6, x:(0,0), y:(0,1), z:(0,2), w:(0,3), a:(0,4), b:(0,5);
/*
* Column vectors 1 .. 6.
*/
- U2, U1, x:(0,0), y:(1,0);
- U3, U1, x:(0,0), y:(1,0), z:(2,0);
- U4, U1, x:(0,0), y:(1,0), z:(2,0), w:(3,0);
- U5, U1, x:(0,0), y:(1,0), z:(2,0), w:(3,0), a:(4,0);
- U6, U1, x:(0,0), y:(1,0), z:(2,0), w:(3,0), a:(4,0), b:(5,0);
+ 2, 1, x:(0,0), y:(1,0);
+ 3, 1, x:(0,0), y:(1,0), z:(2,0);
+ 4, 1, x:(0,0), y:(1,0), z:(2,0), w:(3,0);
+ 5, 1, x:(0,0), y:(1,0), z:(2,0), w:(3,0), a:(4,0);
+ 6, 1, x:(0,0), y:(1,0), z:(2,0), w:(3,0), a:(4,0), b:(5,0);
);
/*
diff --git a/src/base/default_allocator.rs b/src/base/default_allocator.rs
index b5735fa2..03f86fb9 100644
--- a/src/base/default_allocator.rs
+++ b/src/base/default_allocator.rs
@@ -37,7 +37,7 @@ impl Allocator, Const>
type Buffer = ArrayStorage;
#[inline]
- unsafe fn allocate_uninitialized(_: R, _: C) -> mem::MaybeUninit {
+ unsafe fn allocate_uninitialized(_: Const, _: Const) -> mem::MaybeUninit {
mem::MaybeUninit::::uninit()
}
@@ -146,12 +146,13 @@ where
rto: Const,
cto: Const,
buf: >::Buffer,
- ) -> ArrayStorage {
+ ) -> ArrayStorage {
#[cfg(feature = "no_unsound_assume_init")]
- let mut res: ArrayStorage = unimplemented!();
+ let mut res: ArrayStorage = unimplemented!();
#[cfg(not(feature = "no_unsound_assume_init"))]
let mut res =
- >::allocate_uninitialized(rto, cto).assume_init();
+ , Const>>::allocate_uninitialized(rto, cto)
+ .assume_init();
let (rfrom, cfrom) = buf.shape();
diff --git a/src/geometry/point.rs b/src/geometry/point.rs
index eeda07e3..5d8b6fbd 100644
--- a/src/geometry/point.rs
+++ b/src/geometry/point.rs
@@ -17,7 +17,7 @@ use simba::simd::SimdPartialOrd;
use crate::base::allocator::Allocator;
use crate::base::dimension::{DimName, DimNameAdd, DimNameSum, U1};
use crate::base::iter::{MatrixIter, MatrixIterMut};
-use crate::base::{DefaultAllocator, Scalar, VectorN};
+use crate::base::{Const, DefaultAllocator, Scalar, VectorN};
/// A point in an euclidean space.
///
@@ -202,7 +202,7 @@ where
let mut res = unsafe {
crate::unimplemented_or_uninitialized_generic!(
as DimName>::name(),
- U1
+ Const::<1>
)
};
res.fixed_slice_mut::(0, 0).copy_from(&self.coords);
diff --git a/src/geometry/point_construction.rs b/src/geometry/point_construction.rs
index 47b336f4..ad3cb66d 100644
--- a/src/geometry/point_construction.rs
+++ b/src/geometry/point_construction.rs
@@ -12,8 +12,8 @@ use crate::base::allocator::Allocator;
use crate::base::dimension::{DimName, DimNameAdd, DimNameSum, U1};
use crate::base::{DefaultAllocator, Scalar, VectorN};
use crate::{
- Point1, Point2, Point3, Point4, Point5, Point6, Vector1, Vector2, Vector3, Vector4, Vector5,
- Vector6,
+ Const, Point1, Point2, Point3, Point4, Point5, Point6, Vector1, Vector2, Vector3, Vector4,
+ Vector5, Vector6,
};
use simba::scalar::{ClosedDiv, SupersetOf};
@@ -29,7 +29,7 @@ where
pub unsafe fn new_uninitialized() -> Self {
Self::from(crate::unimplemented_or_uninitialized_generic!(
D::name(),
- U1
+ Const::<1>
))
}
diff --git a/src/linalg/col_piv_qr.rs b/src/linalg/col_piv_qr.rs
index 302dcd66..91083634 100644
--- a/src/linalg/col_piv_qr.rs
+++ b/src/linalg/col_piv_qr.rs
@@ -3,9 +3,9 @@ use num::Zero;
use serde::{Deserialize, Serialize};
use crate::allocator::{Allocator, Reallocator};
-use crate::base::{DefaultAllocator, Matrix, MatrixMN, MatrixN, Unit, VectorN};
+use crate::base::{Const, DefaultAllocator, Matrix, MatrixMN, MatrixN, Unit, VectorN};
use crate::constraint::{SameNumberOfRows, ShapeConstraint};
-use crate::dimension::{Dim, DimMin, DimMinimum, U1};
+use crate::dimension::{Dim, DimMin, DimMinimum};
use crate::storage::{Storage, StorageMut};
use crate::ComplexField;
@@ -67,7 +67,7 @@ where
let mut p = PermutationSequence::identity_generic(min_nrows_ncols);
let mut diag =
- unsafe { crate::unimplemented_or_uninitialized_generic!(min_nrows_ncols, U1) };
+ unsafe { crate::unimplemented_or_uninitialized_generic!(min_nrows_ncols, Const::<1>) };
if min_nrows_ncols.value() == 0 {
return ColPivQR {
diff --git a/src/linalg/symmetric_tridiagonal.rs b/src/linalg/symmetric_tridiagonal.rs
index 82fc4e27..e0416d66 100644
--- a/src/linalg/symmetric_tridiagonal.rs
+++ b/src/linalg/symmetric_tridiagonal.rs
@@ -2,7 +2,7 @@
use serde::{Deserialize, Serialize};
use crate::allocator::Allocator;
-use crate::base::{DefaultAllocator, MatrixMN, MatrixN, VectorN};
+use crate::base::{DefaultAllocator, MatrixN, VectorN};
use crate::dimension::{Const, DimDiff, DimSub, U1};
use crate::storage::Storage;
use simba::scalar::ComplexField;
@@ -61,9 +61,12 @@ where
"Unable to compute the symmetric tridiagonal decomposition of an empty matrix."
);
- let mut off_diagonal =
- unsafe { crate::unimplemented_or_uninitialized_generic!(dim.sub(Const::<1>), Const::<1>) };
- let mut p = unsafe { crate::unimplemented_or_uninitialized_generic!(dim.sub(Const::<1>), Const::<1>) };
+ let mut off_diagonal = unsafe {
+ crate::unimplemented_or_uninitialized_generic!(dim.sub(Const::<1>), Const::<1>)
+ };
+ let mut p = unsafe {
+ crate::unimplemented_or_uninitialized_generic!(dim.sub(Const::<1>), Const::<1>)
+ };
for i in 0..dim.value() - 1 {
let mut m = m.rows_range_mut(i + 1..);
diff --git a/src/linalg/udu.rs b/src/linalg/udu.rs
index 70ff84a7..b3ea5ff9 100644
--- a/src/linalg/udu.rs
+++ b/src/linalg/udu.rs
@@ -2,7 +2,7 @@
use serde::{Deserialize, Serialize};
use crate::allocator::Allocator;
-use crate::base::{DefaultAllocator, MatrixN, VectorN, U1};
+use crate::base::{Const, DefaultAllocator, MatrixN, VectorN};
use crate::dimension::Dim;
use crate::storage::Storage;
use simba::scalar::RealField;
@@ -52,7 +52,7 @@ where
let n = p.ncols();
let n_dim = p.data.shape().1;
- let mut d = VectorN::zeros_generic(n_dim, U1);
+ let mut d = VectorN::zeros_generic(n_dim, Const::<1>);
let mut u = MatrixN::zeros_generic(n_dim, n_dim);
d[n - 1] = p[(n - 1, n - 1)];