forked from M-Labs/nalgebra
Release v0.30.0
This commit is contained in:
parent
c0f8530d5e
commit
e8b9c40123
24
CHANGELOG.md
24
CHANGELOG.md
@ -4,13 +4,21 @@ documented here.
|
|||||||
|
|
||||||
This project adheres to [Semantic Versioning](https://semver.org/).
|
This project adheres to [Semantic Versioning](https://semver.org/).
|
||||||
|
|
||||||
## [0.30.0]
|
## [0.30.0] (02 Jan. 2022)
|
||||||
|
|
||||||
### Breaking changes
|
### Breaking changes
|
||||||
- The `Dim` trait is now marked as unsafe.
|
- The `Dim` trait is now marked as unsafe.
|
||||||
|
- The `Matrix::pow` and `Matrix::pow_mut` methods only allow positive integer exponents now. To compute negative
|
||||||
|
exponents, the user is free to invert the matrix before calling `pow` with the exponent’s absolute value.
|
||||||
|
|
||||||
### Modified
|
### Modified
|
||||||
- Use more concise debug impls for matrices and geometric transformation types.
|
- Use more concise debug impls for matrices and geometric transformation types.
|
||||||
|
- The singular values computed by the SVD are now sorted in increasing order by default. Use `SVD::new_unordered`
|
||||||
|
instead to reproduce the older behavior without the sorting overhead.
|
||||||
|
- The `UnitDualQuaternion::sclerp` method will no longer panic when given two equal rotations.
|
||||||
|
- The `Matrix::select_rows` and `Matrix::select_columns` methods no longer require the matrix components to implement
|
||||||
|
the trait `Zero`.
|
||||||
|
- The `Matrix::pow` and `Matrix::pow_mut` methods will now also work with integer matrices.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Added the conversion trait `From<Vec<T>>` and method `from_vec_storage` for `RowDVector`.
|
- Added the conversion trait `From<Vec<T>>` and method `from_vec_storage` for `RowDVector`.
|
||||||
@ -21,14 +29,26 @@ This project adheres to [Semantic Versioning](https://semver.org/).
|
|||||||
- The `Default` trait is now implemented for most geometric types: `Point`, `Isometry`, `Rotation`, `Similarity`,
|
- The `Default` trait is now implemented for most geometric types: `Point`, `Isometry`, `Rotation`, `Similarity`,
|
||||||
`Transform`, `UnitComplex`, and `UnitQuaternion`.
|
`Transform`, `UnitComplex`, and `UnitQuaternion`.
|
||||||
- Added the `Scale` geometric type for representing non-uniform scaling.
|
- Added the `Scale` geometric type for representing non-uniform scaling.
|
||||||
- `nalgebra-sparse`: provide constructors for unsorted but otherwise valid data using the CSR format.
|
|
||||||
- Added `Cholesky::new_with_substitute` that will replace diagonal elements by a given constant whenever `Cholesky`
|
- Added `Cholesky::new_with_substitute` that will replace diagonal elements by a given constant whenever `Cholesky`
|
||||||
meets a non-definite-positiveness.
|
meets a non-definite-positiveness.
|
||||||
|
- Re-added the conversion from a vector/matrix slice to a static array.
|
||||||
|
- Added the `cuda` feature that enables the support of [rust-cuda](https://github.com/Rust-GPU/Rust-CUDA) for using
|
||||||
|
`nalgebra` features with CUDA kernels written in Rust.
|
||||||
|
- Added special-cases implementations for the 2x2 and 3x3 SVDs for better accuracy and performances.
|
||||||
|
- Added the methods `Matrix::polar`, `Matrix::try_polar`, and `SVD::to_polar` to compute the polar decomposition of
|
||||||
|
a matrix, based on its SVD.
|
||||||
|
- `nalgebra-sparse`: provide constructors for unsorted but otherwise valid data using the CSR format.
|
||||||
|
- `nalgebra-sparse`: added reading MatrixMarked data files to a sparse `CooMatrix`.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Fixed a potential unsoundness with `matrix.get(i)` and `matrix.get_mut(i)` where `i` is an `usize`, and `matrix`
|
- Fixed a potential unsoundness with `matrix.get(i)` and `matrix.get_mut(i)` where `i` is an `usize`, and `matrix`
|
||||||
is a matrix slice with non-default strides.
|
is a matrix slice with non-default strides.
|
||||||
- Fixed potential unsoundness with `vector.perp` where `vector` isn’t actually a 2D vector as expected.
|
- Fixed potential unsoundness with `vector.perp` where `vector` isn’t actually a 2D vector as expected.
|
||||||
|
- Fixed linkage issue with `nalgebra-lapack`: the user of `nalgebra-lapack` no longer have to add
|
||||||
|
`extern crate lapack-src` to their `main.rs`.
|
||||||
|
- Fixed the `no-std` build of `nalgebra-glm`.
|
||||||
|
- Fix the `pow` and `pow_mut` functions (the result was incorrect for some exponent values).
|
||||||
|
|
||||||
|
|
||||||
## [0.29.0]
|
## [0.29.0]
|
||||||
### Breaking changes
|
### Breaking changes
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "nalgebra"
|
name = "nalgebra"
|
||||||
version = "0.29.0"
|
version = "0.30.0"
|
||||||
authors = [ "Sébastien Crozet <developer@crozet.re>" ]
|
authors = [ "Sébastien Crozet <developer@crozet.re>" ]
|
||||||
|
|
||||||
description = "General-purpose linear algebra library with transformations and statically-sized or dynamically-sized matrices."
|
description = "General-purpose linear algebra library with transformations and statically-sized or dynamically-sized matrices."
|
||||||
@ -74,7 +74,7 @@ num-traits = { version = "0.2", default-features = false }
|
|||||||
num-complex = { version = "0.4", default-features = false }
|
num-complex = { version = "0.4", default-features = false }
|
||||||
num-rational = { version = "0.4", default-features = false }
|
num-rational = { version = "0.4", default-features = false }
|
||||||
approx = { version = "0.5", default-features = false }
|
approx = { version = "0.5", default-features = false }
|
||||||
simba = { version = "0.6", default-features = false }
|
simba = { version = "0.7", default-features = false }
|
||||||
alga = { version = "0.9", default-features = false, optional = true }
|
alga = { version = "0.9", default-features = false, optional = true }
|
||||||
rand_distr = { version = "0.4", default-features = false, optional = true }
|
rand_distr = { version = "0.4", default-features = false, optional = true }
|
||||||
matrixmultiply = { version = "0.3", optional = true }
|
matrixmultiply = { version = "0.3", optional = true }
|
||||||
@ -134,5 +134,3 @@ lto = true
|
|||||||
# Enable certain features when building docs for docs.rs
|
# Enable certain features when building docs for docs.rs
|
||||||
features = [ "proptest-support", "compare", "macros", "rand" ]
|
features = [ "proptest-support", "compare", "macros", "rand" ]
|
||||||
|
|
||||||
[patch.crates-io]
|
|
||||||
simba = { git = "https://github.com/dimforge/simba"}
|
|
||||||
|
12
Makefile
12
Makefile
@ -1,12 +0,0 @@
|
|||||||
all:
|
|
||||||
cargo test --features "debug arbitrary serde-serialize abomonation-serialize compare"
|
|
||||||
# cargo check --features "debug arbitrary serde-serialize"
|
|
||||||
|
|
||||||
doc:
|
|
||||||
cargo doc --no-deps --features "debug arbitrary serde-serialize abomonation"
|
|
||||||
|
|
||||||
bench:
|
|
||||||
cargo bench
|
|
||||||
|
|
||||||
test:
|
|
||||||
cargo test --features "debug arbitrary serde-serialize abomonation-serialize compare"
|
|
14
README.md
14
README.md
@ -30,10 +30,18 @@
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
## Platinum sponsors
|
## Acknowledgements
|
||||||
Rapier is supported by:
|
nalgebra is supported by our **platinum** sponsors:
|
||||||
<p>
|
<p>
|
||||||
<a href="https://embark-studios.com">
|
<a href="https://embark-studios.com">
|
||||||
<img src="https://www.embark.dev/img/logo_black.png" width="401px">
|
<img src="https://www.embark.dev/img/logo_black.png" width="301px">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
And our gold sponsors:
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="https://fragcolor.com">
|
||||||
|
<img src="https://dimforge.com/img/fragcolor_logo1_color_black.svg" width="151px">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
@ -4,7 +4,7 @@ version = "0.0.0"
|
|||||||
authors = [ "You" ]
|
authors = [ "You" ]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
nalgebra = "0.29.0"
|
nalgebra = "0.30.0"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "example"
|
name = "example"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "nalgebra-glm"
|
name = "nalgebra-glm"
|
||||||
version = "0.15.0"
|
version = "0.16.0"
|
||||||
authors = ["sebcrozet <developer@crozet.re>"]
|
authors = ["sebcrozet <developer@crozet.re>"]
|
||||||
|
|
||||||
description = "A computer-graphics oriented API for nalgebra, inspired by the C++ GLM library."
|
description = "A computer-graphics oriented API for nalgebra, inspired by the C++ GLM library."
|
||||||
@ -37,5 +37,5 @@ convert-glam018 = [ "nalgebra/glam018" ]
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
num-traits = { version = "0.2", default-features = false }
|
num-traits = { version = "0.2", default-features = false }
|
||||||
approx = { version = "0.5", default-features = false }
|
approx = { version = "0.5", default-features = false }
|
||||||
simba = { version = "0.6", default-features = false }
|
simba = { version = "0.7", default-features = false }
|
||||||
nalgebra = { path = "..", version = "0.29", default-features = false }
|
nalgebra = { path = "..", version = "0.30", default-features = false }
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "nalgebra-lapack"
|
name = "nalgebra-lapack"
|
||||||
version = "0.20.0"
|
version = "0.21.0"
|
||||||
authors = [ "Sébastien Crozet <developer@crozet.re>", "Andrew Straw <strawman@astraw.com>" ]
|
authors = [ "Sébastien Crozet <developer@crozet.re>", "Andrew Straw <strawman@astraw.com>" ]
|
||||||
|
|
||||||
description = "Matrix decompositions using nalgebra matrices and Lapack bindings."
|
description = "Matrix decompositions using nalgebra matrices and Lapack bindings."
|
||||||
@ -29,17 +29,17 @@ accelerate = ["lapack-src/accelerate"]
|
|||||||
intel-mkl = ["lapack-src/intel-mkl"]
|
intel-mkl = ["lapack-src/intel-mkl"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
nalgebra = { version = "0.29", path = ".." }
|
nalgebra = { version = "0.30", path = ".." }
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
num-complex = { version = "0.4", default-features = false }
|
num-complex = { version = "0.4", default-features = false }
|
||||||
simba = "0.5"
|
simba = "0.7"
|
||||||
serde = { version = "1.0", features = [ "derive" ], optional = true }
|
serde = { version = "1.0", features = [ "derive" ], optional = true }
|
||||||
lapack = { version = "0.19", default-features = false }
|
lapack = { version = "0.19", default-features = false }
|
||||||
lapack-src = { version = "0.8", default-features = false }
|
lapack-src = { version = "0.8", default-features = false }
|
||||||
# clippy = "*"
|
# clippy = "*"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
nalgebra = { version = "0.29", features = [ "arbitrary", "rand" ], path = ".." }
|
nalgebra = { version = "0.30", features = [ "arbitrary", "rand" ], path = ".." }
|
||||||
proptest = { version = "1", default-features = false, features = ["std"] }
|
proptest = { version = "1", default-features = false, features = ["std"] }
|
||||||
quickcheck = "1"
|
quickcheck = "1"
|
||||||
approx = "0.5"
|
approx = "0.5"
|
||||||
|
@ -294,7 +294,7 @@ where
|
|||||||
let mut res = Matrix::zeros_generic(nrows, Const::<1>);
|
let mut res = Matrix::zeros_generic(nrows, Const::<1>);
|
||||||
|
|
||||||
for i in 0..res.len() {
|
for i in 0..res.len() {
|
||||||
res[i] = Complex::new(wr[i], wi[i]);
|
res[i] = Complex::new(wr[i].clone(), wi[i].clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
res
|
res
|
||||||
@ -306,7 +306,7 @@ where
|
|||||||
pub fn determinant(&self) -> T {
|
pub fn determinant(&self) -> T {
|
||||||
let mut det = T::one();
|
let mut det = T::one();
|
||||||
for e in self.eigenvalues.iter() {
|
for e in self.eigenvalues.iter() {
|
||||||
det *= *e;
|
det *= e.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
det
|
det
|
||||||
|
@ -155,7 +155,7 @@ where
|
|||||||
let mut out = Matrix::zeros_generic(self.t.shape_generic().0, Const::<1>);
|
let mut out = Matrix::zeros_generic(self.t.shape_generic().0, Const::<1>);
|
||||||
|
|
||||||
for i in 0..out.len() {
|
for i in 0..out.len() {
|
||||||
out[i] = Complex::new(self.re[i], self.im[i])
|
out[i] = Complex::new(self.re[i].clone(), self.im[i].clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
out
|
out
|
||||||
|
@ -140,7 +140,7 @@ where
|
|||||||
pub fn determinant(&self) -> T {
|
pub fn determinant(&self) -> T {
|
||||||
let mut det = T::one();
|
let mut det = T::one();
|
||||||
for e in self.eigenvalues.iter() {
|
for e in self.eigenvalues.iter() {
|
||||||
det *= *e;
|
det *= e.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
det
|
det
|
||||||
@ -153,7 +153,7 @@ where
|
|||||||
pub fn recompose(&self) -> OMatrix<T, D, D> {
|
pub fn recompose(&self) -> OMatrix<T, D, D> {
|
||||||
let mut u_t = self.eigenvectors.clone();
|
let mut u_t = self.eigenvectors.clone();
|
||||||
for i in 0..self.eigenvalues.len() {
|
for i in 0..self.eigenvalues.len() {
|
||||||
let val = self.eigenvalues[i];
|
let val = self.eigenvalues[i].clone();
|
||||||
u_t.column_mut(i).mul_assign(val);
|
u_t.column_mut(i).mul_assign(val);
|
||||||
}
|
}
|
||||||
u_t.transpose_mut();
|
u_t.transpose_mut();
|
||||||
|
@ -21,5 +21,5 @@ quote = "1.0"
|
|||||||
proc-macro2 = "1.0"
|
proc-macro2 = "1.0"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
nalgebra = { version = "0.29.0", path = ".." }
|
nalgebra = { version = "0.30.0", path = ".." }
|
||||||
trybuild = "1.0.42"
|
trybuild = "1.0.42"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "nalgebra-sparse"
|
name = "nalgebra-sparse"
|
||||||
version = "0.5.0"
|
version = "0.6.0"
|
||||||
authors = [ "Andreas Longva", "Sébastien Crozet <developer@crozet.re>" ]
|
authors = [ "Andreas Longva", "Sébastien Crozet <developer@crozet.re>" ]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
description = "Sparse matrix computation based on nalgebra."
|
description = "Sparse matrix computation based on nalgebra."
|
||||||
@ -23,7 +23,7 @@ io = [ "pest", "pest_derive" ]
|
|||||||
slow-tests = []
|
slow-tests = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
nalgebra = { version="0.29", path = "../" }
|
nalgebra = { version="0.30", path = "../" }
|
||||||
num-traits = { version = "0.2", default-features = false }
|
num-traits = { version = "0.2", default-features = false }
|
||||||
proptest = { version = "1.0", optional = true }
|
proptest = { version = "1.0", optional = true }
|
||||||
matrixcompare-core = { version = "0.1.0", optional = true }
|
matrixcompare-core = { version = "0.1.0", optional = true }
|
||||||
@ -33,7 +33,7 @@ pest_derive = { version = "2", optional = true }
|
|||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
itertools = "0.10"
|
itertools = "0.10"
|
||||||
matrixcompare = { version = "0.3.0", features = [ "proptest-support" ] }
|
matrixcompare = { version = "0.3.0", features = [ "proptest-support" ] }
|
||||||
nalgebra = { version="0.29", path = "../", features = ["compare"] }
|
nalgebra = { version="0.30", path = "../", features = ["compare"] }
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[package.metadata.docs.rs]
|
||||||
# Enable certain features when building docs for docs.rs
|
# Enable certain features when building docs for docs.rs
|
||||||
|
Loading…
Reference in New Issue
Block a user