Commit Graph

1474 Commits

Author SHA1 Message Date
Crozet Sébastien
8abbb35b40 First pass to migrate the geometry module to const-generics. 2021-04-11 13:53:45 +02:00
Crozet Sébastien
35ec135d2c Fix compilation after rebase. 2021-04-11 13:53:45 +02:00
Crozet Sébastien
d17088398a Replace generic-array with a regular array based on min-const-generics. 2021-04-11 13:53:45 +02:00
Sébastien Crozet
b2dadffcf2
Merge pull request #864 from vks/idiomatic-rand
More idiomatic use of Rand
2021-04-11 13:52:48 +02:00
Sébastien Crozet
2ebba30117
Merge pull request #861 from jturner314/fix-cholesky-det-complex
Fix Cholesky::determinant for complex elements
2021-04-11 13:49:35 +02:00
Sébastien Crozet
b9a524427b
Merge pull request #859 from OfficialURL/dev
Added pow functions
2021-04-11 13:44:06 +02:00
Vinzent Steinberg
7417f6cbca UnitComplex: More efficient sampling 2021-04-10 03:49:46 -03:00
Vinzent Steinberg
09f26385cc Comment about faster impl for unit sphere sampling 2021-04-10 03:36:21 -03:00
Vinzent Steinberg
c8fe49b1e9 Add some comments about random variates 2021-04-10 03:36:21 -03:00
Vinzent Steinberg
fd3a752409 Make use of rand more idiomatic
This should improve performance and accuracy.
2021-04-10 03:13:46 -03:00
Violeta Hernández
341091f647 pow_mut now returns Result. 2021-04-10 00:12:26 -05:00
Violeta Hernández
81f2fc38d7 Use mul_to instead of square_buf
Didn't realize that this was something that was already implemented.
2021-04-09 23:59:22 -05:00
Violeta Hernández
15a63cb892 Memory improvements, extra comments.
The result of `multiplier ^ 2` is now written into a single buffer.
2021-04-09 23:43:59 -05:00
Vinzent Steinberg
260ee54288 Disable some tests if "rand" feature is disabled
This avoids some misleading errors for `cargo test`.
2021-04-10 01:00:12 -03:00
Jim Turner
cea3bdc8e5 Fix Cholesky::determinant for Complex elements
The previous implementation was correct only for real elements. The
Cholesky decomposition is `L L^H`, so the determinant is `det(L) *
det(L^H)`. Since `L` is a triangular matrix, `det(L)` is the product
of the diagonal elements of `L`. Since `L^H` is triangular and its
diagonal elements are the conjugates of the diagonal elements of `L`,
`det(L^H)` is the conjugate of `det(L)`. So, the overall determinant
is the product of the diagonal elements of `L` times its conjugate.
2021-04-09 14:28:16 -04:00
Jim Turner
50fed194f4 Add determinant method to Cholesky 2021-04-07 23:10:19 -04:00
Violeta Hernández
06b657ad49 Added pow_mut.
Actually, I think this will do.
2021-04-05 12:32:12 -05:00
Violeta Hernández
ab85766b5a Added pow function.
I'll try adding some unchecked and in place variants soon.
2021-04-05 12:17:49 -05:00
Guilherme Salustiano
9947cd5b88
Add type aliases for unit vectors 2021-03-29 15:20:04 -03:00
Crozet Sébastien
b687c63bb2 Add a SIMD version of cap_magnitude: simd_cap_magnitude. 2021-03-06 19:16:22 +01:00
Crozet Sébastien
2dae1ca44f Add conversion of Similarity from/to glam types. 2021-03-06 12:39:53 +01:00
Crozet Sébastien
bdf0de68cf Add conversion of Rotation and UnitComplex from/to glam types. 2021-03-06 12:39:53 +01:00
Crozet Sébastien
729a8fd7f2 Add conversion from/to glam types + move glam/alga/mint impls to a "third_party" module. 2021-03-06 12:20:38 +01:00
Crozet Sébastien
f2c49aecb0 Add "cast" methods to cast the type of the components of most nalgebra types. 2021-03-05 17:08:46 +01:00
Crozet Sébastien
c32172b6b9 Make the rand dependency optional. 2021-03-02 12:25:12 +01:00
Crozet Sébastien
5b9b94c610 Release v0.25.0 2021-03-01 14:25:29 +01:00
Crozet Sébastien
6cfd2bca14 Use proptest for all nalgebra tests. 2021-02-28 17:52:14 +01:00
Crozet Sébastien
7b6b3649f2 Run cargo fmt. 2021-02-25 16:20:11 +01:00
Crozet Sébastien
6699039fec Fix rebase-induced compilation error. 2021-02-25 15:51:13 +01:00
Crozet Sébastien
aeb9f7ea39 Add a matrix.udu() method to compute the UDU decomposition. 2021-02-25 15:49:24 +01:00
Crozet Sébastien
ab0d335b61 Fix tests for the UDU decomposition. 2021-02-25 15:48:44 +01:00
Christopher Rabotin
89ca2fe5fb UDU only supported for Real matrices, not Complex
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
4ff4911ac3 Implement requested changes
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Chris
06861a9755 Update src/linalg/udu.rs
Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
7a49b9eeca UDU: d now stored in VectorN instead of MatrixN
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
e9933e5c91 UDU: Expand to Dim from DimName
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
5a7ed61e9b UDU impl: using 0-index nomenclature
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
a8d40423ea Fixed UDU algorithm
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
8dda6714b5 Untested UDU implementation
Pushing to trigger build

Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Sébastien Crozet
21cc428480
Merge pull request #803 from aweinstock314/no_unsound_assume_init
Propagate `mem::MaybeUninit` through the return types of `Allocator::…
2021-02-25 15:46:49 +01:00
Sébastien Crozet
fa2e025a1e
Merge pull request #824 from tpdickso/dual_quaternion
Implement additional `DualQuaternion` ops and `UnitDualQuaternion`
2021-02-25 15:46:34 +01:00
Sébastien Crozet
69e2ad6a44
Merge pull request #831 from iMplode-nZ/dev
Added bytemuck implementations for static storages.
2021-02-25 15:46:28 +01:00
Sébastien Crozet
bc6faa22f3
Merge pull request #797 from Recmo/remco/feat/double-ended-iter
impl DoubleEndedIterator for {MatrixIter, MatrixIterMut}
2021-02-25 15:46:11 +01:00
Sébastien Crozet
06f92ad1e3
Merge pull request #613 from russellb23/dev
QR factorizatio nwith column pivoting
2021-02-25 15:45:58 +01:00
Crozet Sébastien
a32f41bd41 Fix compilation when targetting no-std. 2021-02-25 15:03:35 +01:00
Crozet Sébastien
bf0f3163ce Rename some of the variables in dual-quaternion doc-tests. 2021-02-25 14:49:01 +01:00
Crozet Sébastien
162a7ef09c Fix compilation when the mint or alga features are enabled. 2021-02-25 14:30:04 +01:00
Crozet Sébastien
af448d2c70 Add bytemuck impls to points. 2021-02-25 14:19:20 +01:00
Crozet Sébastien
0b1e6f0b05 Run cargo fmt. 2021-02-25 14:16:57 +01:00
Crozet Sébastien
dc15261ec1 Move the bytemuck impls to GenericArray and add a transitive impl for matrices. 2021-02-25 14:10:34 +01:00
Crozet Sébastien
234e103e4b Fix compilation of the sparse module. 2021-02-25 13:52:58 +01:00
Avi Weinstock
ee32f7d4cf Run cargo fmt. 2021-02-25 13:42:23 +01:00
Avi Weinstock
cd12422d6f Change zero_or_uninitialized_generic to unimplemented_or_uninitialized_generic, and use it instead of manually dispatching on feature=no_unsound_assume_init in functions without N: Zero. 2021-02-25 13:42:23 +01:00
Avi Weinstock
36a3ac814f Propagate mem::MaybeUninit through the return types of Allocator::allocate_uninitialized and Matrix::new_uninitialized_generic.
Most call sites still invoke UB through `assume_init`. Said call sites instead invoke `unimplemented!()` if the `no_unsound_assume_init` feature is enabled, to make it easier to gradually fix them.

Progress towards #556.
2021-02-25 13:42:23 +01:00
Remco Bloemen
b25c2aa78c Fix inner size 2021-02-25 13:31:16 +01:00
Remco Bloemen
d5ca2019a3 impl FusedIterator 2021-02-25 13:31:16 +01:00
Remco Bloemen
eb3d787ed6 Fix inner_size computation 2021-02-25 13:31:16 +01:00
Remco Bloemen
d49af8e8b2 Implement next_back 2021-02-25 13:31:16 +01:00
Remco Bloemen
73d6ba0ca1 Dummy implementation of DoubleEndedIterator 2021-02-25 13:31:16 +01:00
Crozet Sébastien
598c217d75 Move the col_piv_qr method to the decomposition module. 2021-02-25 13:28:42 +01:00
Crozet Sébastien
693e6d0035 Run cargo fmt. 2021-02-25 12:59:14 +01:00
Sébastien Crozet
adc82845d1
Merge pull request #823 from Andlon/sparse-rework
Sparse rework: nalgebra-sparse
2021-02-25 12:58:28 +01:00
Crozet Sébastien
308d95386e Fix all tests and the ColPivQR::solve. 2021-02-25 12:06:04 +01:00
russellb23
63a34528e0 Added test for QR factorization and fixed unpack issue 2021-02-25 11:31:37 +01:00
russellb23
1316133625 Removed unused imports 2021-02-25 11:31:37 +01:00
russellb23
a2f3e1ac26 Inverted sign in householder 2021-02-25 11:31:37 +01:00
russellb23
f8c0195f0f QR factorization with column pivoting 2021-02-25 11:31:37 +01:00
Crozet Sébastien
bafa1dcd97 Re-export simba::SimdValue. 2021-02-22 14:27:18 +01:00
Crozet Sébastien
478921881f Add approximate rotation composition for unit-quaternion. 2021-02-22 14:27:08 +01:00
Crozet Sébastien
9d930eb21a Add a method to cap the magnitude of a vector. 2021-02-22 14:26:40 +01:00
Crozet Sébastien
6139372c38 Add from_basis_unchecked to rotation types. 2021-02-22 14:26:25 +01:00
iMplode nZ
1c0891bbbb Added bytemuck for Unit and Quaternion. 2021-02-12 15:30:12 -08:00
iMplode nZ
c667b1f9c8 Added bytemuck implementations for static storages. 2021-02-10 20:12:24 -08:00
Crozet Sébastien
fb26d4d0fb Update the htaml_root_url. 2021-01-29 13:56:40 +01:00
Terence
c408e09e28 update header comment for operators 2021-01-28 19:41:55 -05:00
Terence
ac92e68486 add new operators 2021-01-28 19:27:40 -05:00
Terence
ecda74f6b2 clippify 2021-01-28 18:50:34 -05:00
Terence
388b77108e rustfmt 2021-01-28 18:46:14 -05:00
Terence
6be0365203 add integration test 2021-01-28 18:45:34 -05:00
Terence
12c259f0b4 Implement additional DualQuaternion ops and UnitDualQuaternion
This implements `UnitDualQuaternion` as an alternative to `Isometry3`
for representing 3D isometries, which also provides the `sclerp`
operation which can be used to perform screw-linear interpolation
between two unit dual quaternions.
2021-01-28 17:25:32 -05:00
Andreas Longva
646f62a293 rustfmt (nalgebra) 2021-01-26 09:49:01 +01:00
Andreas Longva
5dfe06897f Rename nalgebra/proptest to /proptest-support
This gives us some freedom in the future, in case we need
additional dependencies for the proptest integration.
2021-01-26 09:49:01 +01:00
Andreas Longva
b2dbcf3168 Add D=Dynamic default and ::to_range_inclusive for DimRange (nalgebra) 2021-01-26 08:57:47 +01:00
Andreas Longva
f9ea2b4471 Initial proptest implementation for nalgebra
This introduces functionality for creating strategies for matrices and
vectors, as well as an implementation of Arbitrary.

Strategies for the geometric types (Point3, Quaternion etc.) are not
currently part of this contribution.

The current strategy implementation for matrices has some limitations
that lead to suboptimal shrinking behavior. This is documented in the
module-level docs, with some additional comments in the code.
2021-01-26 08:57:47 +01:00
Chinedu Francis Nwafili
b9513257b8
Serialize DQ to [N;8]
Closes #816
2020-12-18 12:19:38 -05:00
Chinedu Francis Nwafili
7ec5d00c3d
Clean up DualQuat bounds 2020-12-18 10:38:19 -05:00
Chinedu Francis Nwafili
89134efc3b
Store DQ as real and dual Quat 2020-12-18 10:09:56 -05:00
Chinedu Francis Nwafili
8036c56fda
Introduce DualQuaternion type
This commit introduces the `DualQuaternion` type, in line with the plan
laid out in [#487].

[#487]: https://github.com/dimforge/nalgebra/issues/487
2020-12-18 09:13:24 -05:00
Sébastien Crozet
88145b7f8c
Merge pull request #814 from dimforge/quaternion_partial_eq_fix
Fix the PartialEq impl for quaternions.
2020-12-18 12:29:38 +01:00
Sébastien Crozet
3899d92f5d
Merge pull request #815 from dimforge/isometry_inv_mul
Add a dedicated method for computing isometry1.inverse() * isometry2.
2020-12-18 12:08:34 +01:00
Sébastien Crozet
8c615289dc
Merge pull request #813 from dimforge/deserialize_uninit
Add workaround for the deserialization of a matrix containing an enum.
2020-12-18 12:06:39 +01:00
Crozet Sébastien
ed74ff7c99 Simplify trait bounds for quaternion indexing. 2020-12-18 12:06:27 +01:00
Crozet Sébastien
60708640d3 Add a dedicated method for computing isometry1.inverse() * isometry2.
It is more efficient that way.
2020-12-18 11:55:46 +01:00
Crozet Sébastien
b15a274a14 Add workaround for the deserialization of a matrix containing an enum. 2020-12-18 11:54:56 +01:00
Crozet Sébastien
67603be6ed Fix the PartialEq impl for quaternions.
The double-covering property should only be taken into account for `UnitQuaternion` instead of `Quaternion` itself.
2020-12-18 11:38:33 +01:00
Südi Tamás
b01d01d486
update the version number in the documentation
from 0.21 to 0.23
2020-12-16 18:35:13 +01:00
Crozet Sébastien
651d318c26 Add sections to the Unit wrapper documentation 2020-11-21 12:19:04 +01:00
Crozet Sébastien
c1372c3041 Add sections to the UnitComplex documentation 2020-11-21 11:56:32 +01:00
Crozet Sébastien
99ac7a8e08 Add sections to the Rotation documentation 2020-11-21 11:56:32 +01:00
Crozet Sébastien
2a3d98bff8 Matrix, vector, isometry, and point aliases documentation: warn that the reader should take a look at the documentation of the aliased type too. 2020-11-20 17:46:03 +01:00
Crozet Sébastien
cf769522f8 Add sections to the documentations of Isometry and Point. 2020-11-20 17:45:11 +01:00
Crozet Sébastien
857ce13b63 Add DVector::from(Vec). 2020-11-19 16:28:06 +01:00
Philippe Renon
87ee014bd3 clippy: fix clone_on_copy warnings 2020-11-19 12:55:15 +01:00
Philippe Renon
bbc6a28f7d clippy: fix len_without_is_empty warnings 2020-11-19 12:24:26 +01:00
Philippe Renon
6a5b418fbc clippy: fix ptr_offset_with_cast warnings 2020-11-19 11:56:58 +01:00
Philippe Renon
f515cffad9 clippy: fix redundant_closure warnings 2020-11-19 11:43:08 +01:00
Philippe Renon
726b8eeecf clippy: fix or_fun_call warnings 2020-11-19 11:43:08 +01:00
Philippe Renon
74a09c8a5e clippy: fix ptr_offset_with_cast warnings
i.e. use of `offset` with a `usize` casted to an `isize`
2020-11-16 14:59:53 +01:00
Philippe Renon
f1211b0d99 clippy: remove unused imports 2020-11-16 14:46:04 +01:00
Philippe Renon
008c24204e clippy: fix unreadable_literal warnings 2020-11-16 14:43:36 +01:00
Philippe Renon
de4a067d27 clippy: fix len_zero warnings 2020-11-16 12:11:24 +01:00
Philippe Renon
d577a18a45 clippy: fix or_fun_call warnings 2020-11-16 11:11:58 +01:00
Philippe Renon
5dff493515 clippy: fix just_underscores_and_digits warnings 2020-11-16 11:04:57 +01:00
Philippe Renon
cf54580fac clippy: fix redundant_field_names warnings 2020-11-16 11:04:56 +01:00
Crozet Sébastien
0521051665 Fix wrong import of Signed an Zero. 2020-11-15 17:44:58 +01:00
Crozet Sébastien
17eb626018 Fix typo. 2020-11-15 17:25:29 +01:00
Crozet Sébastien
f2da993c8b Reduce matrix and slice aliases depth to 1. 2020-11-15 17:23:46 +01:00
Crozet Sébastien
e852df6124 Add sections for most Matrix methods. 2020-11-15 16:57:49 +01:00
Crozet Sébastien
b8d1ae3a1f Add aliases for matrices with only one dynamic dimension. 2020-11-13 18:35:23 +01:00
Crozet Sébastien
9a4cf0b69f Reorganize matrix construction macros. 2020-11-13 18:34:47 +01:00
Crozet Sébastien
4c2192d9e0 Reorganize matrix slice macros. 2020-11-13 18:34:33 +01:00
Crozet Sébastien
45f2fc4f92 Move all matrix decomposition methods under a single impl. 2020-11-13 17:26:47 +01:00
Philippe Renon
04ce8b3f6a clippy: fix suspicious_op_assign_impl errors (false positives) 2020-10-26 13:09:03 +01:00
Philippe Renon
d990aff44e clippy: fix clippy::eq_op error (false positive) 2020-10-26 08:56:49 +01:00
Philippe Renon
74f01d2538 clippy: fix suspicious_arithmetic_impl errors (false positives) 2020-10-26 08:49:06 +01:00
Crozet Sébastien
8e483a5434 Fix reshaping test. 2020-10-25 16:31:10 +01:00
Crozet Sébastien
e89a26cbd0 Add doc-tests for reshape_generic. 2020-10-25 16:03:18 +01:00
Crozet Sébastien
5b3da9e2eb Fix typo in comment. 2020-10-25 16:02:31 +01:00
Nathan Kent
4a6022d9bf Add methods for in-place reshaping of matrices
There are two major additions in this commit. The first is a new storage
trait, `ReshapableStorage`, that can be implemented for storage types
that can be reshaped in-place. I have implemented this for both the
`ArrayStorage` and `VecStorage` types, as they are the most common and
they are just interpretations of a flat list.

The second is a `Matrix::reshape_generic` method that allows matrices to
be in-place reshaped provided that the underlying storage can handle it.
In practice, this means that the standard matrix types (`MatrixMN` and
`DMatrix`) can be resized to any size that has the same element count.
Resizing between array and vector storage is not implemented due to
`Storage` only being implemented for `VecStorage` variants where at
least one dimension is `Dynamic`.

Additionally, only the generic reshape function is added as it can be a
basis for other reshaping functions (see the resizing functions) and I
am not particularly in the mood to implement a variety of reshaping
methods.
2020-10-25 15:37:18 +01:00
Crozet Sébastien
c410a32c82 Fix doc-tests. 2020-10-25 14:15:26 +01:00
Crozet Sébastien
93f361cba8 Add missing slerp implementations. 2020-10-25 14:00:47 +01:00
Crozet Sébastien
097ae44efa Add lerp_slerp to isometries for interpolation. 2020-10-25 11:39:27 +01:00
Crozet Sébastien
9c93a58b5d Add Vector::ith_axis to build an unit vector with its i-th component set to 1. 2020-10-25 11:25:38 +01:00
Crozet Sébastien
55689c238a Add the conversion of a translation to an isometry. 2020-10-25 11:25:20 +01:00
Crozet Sébastien
503040b8bc Add Point.map(f) and Point.apply(f). 2020-10-25 11:25:20 +01:00
Crozet Sébastien
a623e63d08 Add the conversion of an array of four elements to a quaternion. 2020-10-25 11:25:20 +01:00
Crozet Sébastien
3d82c4335e Add inverse_transform_unit_vector to rotations and isometries. 2020-10-25 11:25:20 +01:00
Sébastien Crozet
eb94084760
Merge pull request #756 from dayrover/cholesky
Remove unnecessary Trait bound DimSub<Dynamic> in fn cholesky(self)
2020-10-24 18:23:03 +02:00
Sébastien Crozet
c240923abb
Merge pull request #754 from TheZoq2/patch-1
Update version in docs header
2020-10-24 18:22:36 +02:00
Crozet Sébastien
4da2bfcb71 Add missing dot-product dimension check.
Fix #776
2020-10-13 17:29:00 +02:00
Crozet Sébastien
343fb2f24f Ensure Isometry implements Copy when targeting no-std.
Fix #774.
2020-10-13 10:12:14 +02:00
Philippe Renon
822f114254 perspective: fix copy/paste error 2020-10-11 11:57:49 +02:00
Philippe Renon
0b0f248267 clippy: fix #identity_op 2020-10-11 11:42:22 +02:00
Philippe Renon
1624a87efa clippy: fix #needless_return 2020-10-11 11:42:22 +02:00
Philippe Renon
6293d3375b clippy: fix #redundant_field_names 2020-10-11 11:42:22 +02:00
Philippe Renon
fb15658cc9 fix typo: apsect should be aspect 2020-10-11 11:42:22 +02:00
Michael Morgan
c6d5d8a1a6 Remove unsafe statement in Point::deref by forwarding to Vector.
Since both impls are #[inline], this should have no performance impact.
2020-10-09 15:27:02 -04:00
Sébastien Crozet
a8f73cb7b2 Run cargo fmt. 2020-08-25 20:47:07 +02:00
Sébastien Crozet
46d1cf2231 Add a libm and libm-force feature to transitively enable the corresponding simba feature. 2020-08-25 20:46:35 +02:00
sebcrozet
7c69cbf326 Don't depend on serde_derive explicitly. 2020-08-25 20:46:04 +02:00
Sébastien Crozet
6300d34356 Add the ::ith constructor for vectors.
This initializes a vectors to zero except the i-th element set to a given value.
2020-08-25 20:46:04 +02:00
Michael Stevens
0a0799f76a Remove unnecessary Trait bound DimSub<Dynamic> in fn cholesky(self) 2020-08-03 18:20:26 +02:00
Frans Skarman
0f6c0e5233
Update version in docs header 2020-07-31 14:14:39 +02:00
Sébastien Crozet
2ab82befe4
Merge pull request #631 from Andlon/matrixcompare
Basic matrixcompare functionality
2020-07-17 01:10:04 -07:00
danielschlaugies
f9f7169558
Add matrix exponential for complex matrices (#744)
Added matrix exponential for complex matrices.
2020-07-16 10:29:52 +02:00
CGMossa
bc70258e5c
Why Option<_> (#746)
Add a comment about why `UnitQuaternion::rotation_between` returns an Option.
2020-07-16 09:27:06 +02:00
Adam Nemecek
1cf7d12695 unrolled new_nonuniform_scaling_wrt_point 2020-07-05 13:29:08 -07:00
Adam Nemecek
6a1c4f84af cargo fmt 2020-07-02 10:31:30 -07:00
Adam Nemecek
4653f772bd added new_nonuniform_scaling_wrt_point to Matrix3 & Matrix4 2020-07-02 10:16:18 -07:00
Andreas Longva
9196759bc2 Improve matrixcompare example 2020-06-29 19:03:20 +02:00
Andreas Longva
f6730dac1f Basic matrixcompare functionality 2020-06-29 18:50:19 +02:00
Jenan Wise
85a64fb517 More verbose DMatrix dim asserts where possible.
Previously, most dimension mismatch asserts used raw `assert!` and did
not include the mismatching dimensions in the panic message. When using
dynamic matrices, this led to somewhat-opaque panics such as:

```rust
let m1 = DMatrix::<f32>::zeros(2, 3);
let m2 = DMatrix::<f32>::zeros(5, 10);
m1 + m2 // panic: Matrix addition/subtraction dimensions mismatch.
```

This patch adds dimension information in the panic messages wherever
doing so did not add additional bounds checks, mostly by simply changing
`assert!(a == b, ...)` cases to `assert_eq!`. After:

```rust
// panic: assertion failed: `(left == right)`
//   left: `(2, 3)`,
//  right: `(5, 10)`: Matrix addition/subtraction dimensions mismatch.
```

Note that the `gemv` and `ger` were not updated, as they are called from
within other functions on subset matricies -- e.g., `gemv` is called
from `gemm` which is called from `mul_to` . Including dimension
information in the `gemv` panic messages would be confusing to
`mul` / `mul_to` users, because it would include dimensions of the column
vectors that `gemm` passes to `gemv` rather than of the original `mul`
arguments. A fix would be to add bounds checks to `mul_to`, but that may
have performance and redundancy implications, so is left to another
patch.
2020-06-22 17:18:53 -07:00
sebcrozet
2c2d1e4f07 Run cargo fmt. 2020-06-07 09:07:25 +02:00
Sébastien Crozet
3359e25435 Cholesky: add unchecked construction compatible with AoSoA SIMD. 2020-06-07 09:05:10 +02:00
Sébastien Crozet
423b4b27b0
Merge pull request #585 from fusion-engineering-forks/pr-default 2020-06-07 08:58:47 +02:00
Chris Hodapp
7363caba17 Fix doc typo (v is right-singular vectors, not left) 2020-04-21 10:23:00 -04:00
sebcrozet
6dc739b70b Remove unused allocator bound. 2020-04-21 10:37:14 +02:00
sebcrozet
f4c0897764 Fix compilation of matrix exponential when targetting no-std. 2020-04-21 10:35:20 +02:00
Fredrik Jansson
583a8fb110 Removed unsafe immutable hack 2020-04-12 13:27:11 +02:00
Fredrik Jansson
e914afe2af Added support for dynamic matrices 2020-04-12 11:59:06 +02:00
Fredrik Jansson
0a3ee99cdb Changed dimension name R to D
Changed N::from_x to crate::convert
2020-04-12 11:46:00 +02:00
Fredrik Jansson
4ec94408b5 Pub use of exp in the linalg module 2020-04-07 09:41:32 +02:00
Fredrik Jansson
b3ef66fd14 Fixed bug in onenorm_matrix_power_norm 2020-04-07 09:41:32 +02:00
Fredrik Jansson
e156561677 one_norm is not a public function 2020-04-07 09:41:32 +02:00
Fredrik Jansson
2696ffd7a1 Fixed bug by introducing one norm 2020-04-07 09:41:32 +02:00
Fredrik Jansson
c0a6df55b1 Addition of matrix exponent for static size matrices. 2020-04-07 09:41:32 +02:00
sebcrozet
677f355143 Run rustfmt. 2020-04-05 23:19:10 +02:00
Sébastien Crozet
b81aed767f
Merge pull request #713 from rustsim/soa_simd
Switch to Simba and make the base and geometry modules mostly SIMD AoSoA friendly.
2020-04-05 21:16:48 +02:00
sebcrozet
bbb3be512e Run cargo fmt. 2020-04-05 18:49:48 +02:00
sebcrozet
691f58b622 Fix compilation of tests. 2020-04-05 18:33:03 +02:00
sebcrozet
2c03353b30 Add missing docs. 2020-04-05 18:02:03 +02:00
sebcrozet
c5dad7f960 Re-add all the alga trait impls behind a feature. 2020-04-05 17:53:27 +02:00
sebcrozet
191ccbf551 Fix warnings and compilation with the arbitrary feature. 2020-04-05 17:18:50 +02:00
sebcrozet
d48a644d5c Add missing implementatino of SimdValue for UnitQuaternion. 2020-04-05 16:35:26 +02:00
sebcrozet
8f662a1a61 Rename translation simba impl file. 2020-04-05 16:35:16 +02:00
Chia-Sheng Chen
65bc037b5d Supplement the document of fn as_ptr 2020-04-03 17:56:08 +08:00
Chia-Sheng Chen
b996a6f0ce Supplement the document of fn vector_to_matrix_index 2020-04-03 17:39:49 +08:00
Fan Jiang
0e69df2999 Update format 2020-04-01 01:14:32 -04:00
Fan Jiang
451c61e293 Add TODO notice and reference to issue 2020-03-31 17:04:10 -04:00
Fan Jiang
526dac1914 Be more specific on what is happening here 2020-03-31 17:03:07 -04:00
Fan Jiang
74bfd9cad6 Change to the recommended style of using MaybeUninit 2020-03-31 16:50:26 -04:00
Sébastien Crozet
a095a7dfcd Re-add some missing transform multiplications. 2020-03-24 19:06:28 +01:00
Sébastien Crozet
81bb9e94f8 Re-add orthogonalization and subspace basis computation. 2020-03-24 19:06:05 +01:00
Sébastien Crozet
8ef46d62cb Re-add inf/sup. 2020-03-24 19:05:47 +01:00
Sébastien Crozet
cdbc9da46c Add From<[...; .]> impls for AoSoA Isometry and Similarity. 2020-03-24 10:16:31 +01:00
sebcrozet
b3f347e45e Add From<[...; .]> impls for all SIMD geometric sructures up to the isometry (excluded). 2020-03-23 09:16:01 +01:00
sebcrozet
b1857e6a36 Fix compilation of tests. 2020-03-21 23:44:24 +01:00
sebcrozet
cbcf4d7c27 Make Isometry, Unit/Quaternion, Rotation, Similarity, and UnitComplex partially compatible with AoSoA. 2020-03-21 23:35:41 +01:00
sebcrozet
f8cd26cfa9 Replace alga by simba. 2020-03-21 12:16:46 +01:00
Sébastien Crozet
002e735c76 Make blas, matrix, norm, and ops.rs compatible with SoA Simd. 2020-03-17 17:58:36 +01:00
Fan Jiang
fe75c60325 Fix warnings on latest rustc 2020-03-10 18:20:52 -04:00
Sébastien Crozet
155ba3a50a Merge pull request #698 from rustsim/try_set_magnitude
Add a method to set the magnitude of a vector.
2020-03-02 12:45:39 +01:00
Sébastien Crozet
1d64de3822 Merge pull request #609 from aplund/dev
Refactor row_sum() and column_sum() to cover more cases.
2020-03-02 12:45:39 +01:00
sebcrozet
b09d9770f7 Add a method to set the magnitude of a vector. 2020-03-02 12:45:39 +01:00
Sébastien Crozet
a67c451ae5 Merge pull request #607 from cauthmann/dev
Add #[must_use] to all functions with a _mut variant (#598)
2020-03-02 12:45:39 +01:00
nnmm
54f1c71742 Small docs improvements 2020-03-02 12:45:39 +01:00
Ilya Epifanov
a62d9d1ad1 GivensRotation::new() should default to (I, 0) 2020-03-02 12:45:38 +01:00
S.Brandeis
6d608cb99f Revert "Broader PartialEq implementation for types implementing Dim trait"
This reverts commit 6f5c9c0f
2020-03-02 12:45:38 +01:00
S.Brandeis
08d990f276 Make shape check a one-liner in impl PartialEq for Matrix 2020-03-02 12:45:38 +01:00
S.Brandeis
d35ef06f44 Remove unnecessary PartialEq trait use in PartialEq impl for Matrix 2020-03-02 12:45:38 +01:00
S.Brandeis
403e63dc5e Remove trailing whitespace 2020-03-02 12:45:38 +01:00
S.Brandeis
8a3f6a12cd Refactor and move named_dimension! macro 2020-03-02 12:45:38 +01:00
S.Brandeis
50ea55e877 Modify PartialEq for Matrix to allow comparison with all types of Matrix 2020-03-02 12:45:38 +01:00
S.Brandeis
2b8410e08b Fix bug - PartialEq for Matrix no longer panics when shapes do not match 2020-03-02 12:45:38 +01:00
S.Brandeis
39a433c0e7 Broader PartialEq implementation for types implementing Dim trait 2020-03-02 12:45:38 +01:00
Sébastien Crozet
12fa938516 Merge pull request #686 from rustsim/fix_vector_slerp
Fix slerp for regular vectors.
2020-03-02 12:45:38 +01:00
sebcrozet
e911bfc7db Fix doc-test for vector slerp. 2020-03-02 12:45:38 +01:00
sebcrozet
5f4a0c7b13 Fix slerp for regular vectors. 2020-03-02 12:45:38 +01:00
Sébastien Crozet
9ec8d4dbd8 Merge pull request #688 from rustsim/matrix_to_slice
Add matrix/slice conversions.
2020-03-02 12:45:37 +01:00
Mara Bos
43747b4f59 Implement Extend<&N> for VecStorage.
Extend<N> was already implemented, but nalgebra vectors/matrices give
iterators that give &N, not N, so implementing Extend<&N> as well makes
it easier to use.

It seems common practice to do so: The standard library's Vec also
implments Extend for both T and &T.
2020-03-02 12:45:37 +01:00
Sébastien Crozet
2728827a45 Merge pull request #684 from aweinstock314/scalar-inlined-clone
Add inlined_clone to Scalar, and relax bounds from `Scalar + Copy` to…
2020-03-02 12:45:37 +01:00
sebcrozet
8bf94f7afb Add matrix/slice conversions.
Fix #687.
2020-03-02 12:45:37 +01:00
Sébastien Crozet
999c48e6ed Merge pull request #680 from aweinstock314/copy-scalar-separation
Move `Copy` constraint from the definition of `Scalar` to all its use…
2020-03-02 12:45:37 +01:00
Avi Weinstock
774f4da3e2 Add Clone to Scalar, providing a default implementation of inlined_clone. Change Scalar + Clone bounds to just Scalar. 2020-03-02 12:45:37 +01:00
Avi Weinstock
52aac8b975 Add inlined_clone to Scalar, and relax bounds from Scalar + Copy to Scalar + Clone nearly everywhere.
The various nalgebra-lapack FooScalars are still Copy because they make use of uninitialized memory.
nalgebgra-glm Number still uses Copy because upstream `approx` requires it.
2020-03-02 12:45:37 +01:00
Aaron Hill
6bb355f4d0 Fix some out-of-bounds offset calls
After we yield the final element from the iterator, we don't offset
`ptr` agian, to avoid having it go out-of-bounds.

However, `inner_end` may be several elements out-of-bounds, depending on
the value of `size`. Therefore, we use `wrapping_offset` to avoid
undefined behavior.
2020-03-02 12:45:37 +01:00
Avi Weinstock
6c236af696 Add Scalar + Copy bounds to code that's under feature flags.
`./ci/test.sh` now passes locally.

Refactoring done via the following sed commands:
```bash
export RELEVANT_SOURCEFILES="$(find src -name '*.rs') $(find examples -name '*.rs')"
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Arbitrary\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Serialize\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Deserialize\)/N\1: Scalar + Copy + \2/' $f; do
export RELEVANT_SOURCEFILES="$(find nalgebra-glm -name '*.rs')"
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar,/N\1: Scalar + Copy,/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar>/N\1: Scalar + Copy>/' $f; done
for f in algebra-glm/src/traits.rs; do sed -i 's/Scalar + Ring/Scalar + Copy + Ring>/' $f; done # Number trait definition
```
2020-03-02 12:45:37 +01:00
Sébastien Crozet
e0db624031 Merge pull request #662 from Aaron1011/fix/final-offset
Don't call 'offset' on a dangling pointer
2020-03-02 12:45:37 +01:00
Avi Weinstock
7d99015473 Move Copy constraint from the definition of Scalar to all its use-sites.
This should semantically be a no-op, but enables refactorings to use non-Copy scalars on a case-by-case basis.
Also, the only instance of a `One + Zero` trait bound was changed into a `Zero + One` bound to match the others.

The following sed scripts were used in the refactoring (with each clause added to reduce the error count of `cargo check`):

```bash
export RELEVANT_SOURCEFILES="$(find src -name '*.rs') $(find examples -name '*.rs')"
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar,/N: Scalar+Copy,/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + Field/N: Scalar + Copy + Field/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + Zero/N: Scalar + Copy + Zero/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + Closed/N: Scalar + Copy + Closed/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + Eq/N: Scalar + Copy + Eq/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + PartialOrd/N: Scalar + Copy + PartialOrd/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: *Scalar + Zero/N: Scalar + Copy + Zero/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + PartialEq/N: Scalar + Copy + PartialEq/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar>/N: Scalar+Copy>/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + $bound/N: Scalar + Copy + $bound/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: *Scalar + $bound/N: Scalar + Copy + $bound/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\): *Scalar,/N\1: Scalar+Copy,/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: *Scalar + $trait/N: Scalar + Copy + $trait/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\): *Scalar + Superset/N\1: Scalar + Copy + Superset/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\): *Scalar + \([a-zA-Z]*Eq\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \([a-zA-Z]*Eq\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(hash::\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar {/N\1: Scalar + Copy {/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Zero\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Bounded\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Lattice\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Meet\|Join\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(fmt::\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Ring\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Hash\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Send\|Sync\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/One + Zero/Zero + One/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Zero\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \($marker\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar>/N\1: Scalar + Copy>/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/Scalar+Copy/Scalar + Copy/' $f; done
```
2020-03-02 12:45:37 +01:00
Sébastien Crozet
5a0ee23e3b Fix Vector::axpy for noncommutative cases (#648)
Fix Vector::axpy for noncommutative cases
2020-03-02 12:45:37 +01:00
Aaron Hill
e981283500 Switch to wrapping_offset instead of unsafe offset 2020-03-02 12:45:37 +01:00
Sébastien Crozet
ef3406cc8f Cholupdate (#673)
Cholupdate
2020-03-02 12:45:37 +01:00
Jakub Konka
fe65b1c129 Add Vector::axcpy method
The added method `Vector::axcpy` generalises `Vector::gemv` to
noncommutative cases since it allows us to write for `gemv`
`self.axcpy(alpha, &col2, val, beta)`, instead the usual
`self.axpy(alpha * val, &col2, beta)`. Hence, `axcpy` preserves the
order of scalar multiplication which is important for applications where
commutativity is not guaranteed (e.g., matrices of quaternions, etc.).

This commmit also removes helpers `array_axpy` and `array_ax`, and
replaces them with `array_axcpy` and `array_axc` respectively, which
like above preserve the order of scalar multiplication.

Finally, `Vector::axpy` is preserved, however, now expressed in terms of
`Vector::axcpy` like so:

```
self.axcpy(alpha * val, &col2, beta)
```
2020-03-02 12:45:37 +01:00
Aaron Hill
4e25bd87fb Don't call 'offset' on a dangling pointer
When creating a matrix with only one zero dimension, we end up with a
matrix with a total size of zero, but a non-zero stride for elements.
While such a matrix can never actually have any elements, we need to be
careful with how we use the pointer associated with it.

Since such a pointer will always be dangling, it can never be used with `ptr.offset`,
which requires that the pointer be in-bounds or one passed the end of an
allocation. Violating this results in undefined behavior.

This commit adds in checks before the uses of `ptr.offset`. If we ever
need to offset from a pointer when our actual allocation size is zero,
we skip offsetting, and return the original pointer. This is fine
because any actual use of the original or offsetted pointer would
already be undefined behavior - we shoul never be trying to dereference
the pointer associated with a zero-size matrix.

This issue was caught be running `cargo miri test` on the project.
2020-03-02 12:45:37 +01:00
Jakub Konka
e1c8e1bccf Fix Vector::axpy for noncommutative cases
One example would be performing simple matrix multiplication
over a division algebra such as quaternions.
2020-03-02 12:45:37 +01:00
Nestor Demeure
50ad84e4b1 Update cholesky.rs
corrected typo ni doc for `xx_rank_one_update`
2020-03-02 12:45:36 +01:00
Sébastien Crozet
d78309b1fd Merge pull request #669 from daingun/patch-2
Use same algorithm to solve 2x2 eigenvalue problem
2020-03-02 12:45:36 +01:00
sebcrozet
cd8fc9285f Add some missing spaces. 2020-03-02 12:45:36 +01:00
daingun
a5b2a4ceb7 Merge pull request #1 from daingun/patch-1
Correct Schur decomposition for 2x2 matrices
2020-03-02 12:45:36 +01:00
sebcrozet
b96159aab3 Fix Cholesky for no-std platforms. 2020-03-02 12:45:36 +01:00
daingun
50417494ec Use same algorithm to solve 2x2 eigenvalue problem
The eigenvalue problem is solved in two different method that use different methods
to calculate the discriminant of the solution to the quadratic equation.
Use the method whose computation is considered more stable.
2020-03-02 12:45:36 +01:00
daingun
667c49d0e1 Correct Schur decomposition for 2x2 matrices
Due to rounding and possible loss of precision the lower left element of the 2x2 matrix
may be different from zero.
2020-03-02 12:45:36 +01:00
Nestor Demeure
59c6a98615 finished cleaning 2020-03-02 12:45:36 +01:00
Nestor Demeure
3d08a80d8d needs faster matrix initialization 2020-03-02 12:45:36 +01:00
Nestor Demeure
f54faedc32 tests pass, needs cleanup 2020-03-02 12:45:36 +01:00
Nestor Demeure
27a2045389 insert does compile 2020-03-02 12:45:36 +01:00
Nestor Demeure
c613360a5c insert does not compile yet 2020-03-02 12:45:36 +01:00
Nestor Demeure
b29231cf7b found uneeded storagemut 2020-03-02 12:45:36 +01:00
Nestor Demeure
cfa7bbdc7c remove column is now working 2020-03-02 12:45:36 +01:00
Nestor Demeure
498c6ef60b added template for remove_column 2020-03-02 12:45:36 +01:00
Nestor Demeure
e583e37d1c finally got the correct type for insert column 2020-03-02 12:45:36 +01:00
Nestor Demeure
2f18aee212 added assertion 2020-03-02 12:45:36 +01:00
Nestor Demeure
3d170e1684 removed useless if 2020-03-02 12:45:36 +01:00
Nestor Demeure
b2a50404b6 code cleaned 2020-03-02 12:45:36 +01:00
Nestor Demeure
516155025a code cleaned 2020-03-02 12:45:36 +01:00
Nestor Demeure
7347d467ae rank update passed tests 2020-03-02 12:45:36 +01:00
Nestor Demeure
96c16af66f updated comment 2020-03-02 12:45:36 +01:00
Nestor Demeure
16154f163a added real constraint on sigma 2020-03-02 12:45:36 +01:00
Nestor Demeure
5942a2a125 got test to compile 2020-03-02 12:45:36 +01:00
Nestor Demeure
0c9451165d first version of rank one update 2020-03-02 12:45:36 +01:00
Andreas Longva
2f77d73226 Generalize From<_> for MatrixSlice(Mut) to allow different strides 2020-03-02 12:45:35 +01:00
daingun
1103d49b80 Correct Schur decomposition for 2x2 matrices
Due to rounding and possible loss of precision the lower left element of the 2x2 matrix
may be different from zero.
2020-03-02 12:45:35 +01:00
Andreas Longva
a05aa313da Implement From<&Matrix> for MatrixSlice 2020-03-02 12:45:35 +01:00
Nestor Demeure
6f1e924e40 used Storage trait for solve
see issue 667
2020-03-02 12:45:35 +01:00
Nestor Demeure
ffb69d5a6f used Storage trait for solve method
as per issue 667 https://github.com/rustsim/nalgebra/issues/667
2020-03-02 12:45:35 +01:00
Nestor Demeure
456a5a84e7 Used Storage trait for solve method
See issue 667 : https://github.com/rustsim/nalgebra/issues/667
2020-03-02 12:45:35 +01:00
sebcrozet
0cc1bac816 Bump dependencies. 2019-10-28 14:15:03 +01:00
Edoardo Morandi
d0d1172d4b Rand 0.6 -> 0.7
* Bumped rand version to 0.7
 * Added dependency to rand_distr
 * Bumped quickcheck version to 0.9 (because of rand)
 * Bumped rand_xorshift version to 0.2
2019-10-28 14:15:03 +01:00
thibault
67f3379b34 Corrected typo. 2019-10-28 14:15:03 +01:00
thibault
7773f13016 Changed name. Changed argument. Added documentation line. 2019-10-28 14:15:03 +01:00
thibault
dacd15e927 Added function to compute the mean quaternion from a vector of unit quaternions. 2019-10-28 14:15:03 +01:00
Pierre Avital
b5f43c6efc Switched fmt implementation to a macro, applied that macro to all formats in std 2019-10-28 14:15:03 +01:00
Pierre Avital
6ee0e02612 implemented LowerExp 2019-10-28 14:15:03 +01:00
sebcrozet
be41cb96e8 GEMM on empty matrices: properly take the beta parameter into account. 2019-10-28 14:15:03 +01:00
sebcrozet
8e759ade83 Fix multiplication between matrices of dimension 0.
Fix #644
2019-10-28 14:15:03 +01:00
Koen Deschacht
fba61923ae .min() and .max(): updated examples to be more concise 2019-10-28 14:15:03 +01:00
Koen Deschacht
8f0ee9fa90 Allow getting .min() and .max() of matrices of unsigned integers 2019-10-28 14:15:03 +01:00
sebcrozet
cfb654240c Matrix::transform_point: correctly take the normalization term into account.
Fix #640
2019-08-27 22:05:28 +02:00
Fabian Löschner
e170729f67 Simplified ordering check 2019-08-27 22:05:28 +02:00
Fabian Löschner
a06b833343 More elegant initial value for xcmp 2019-08-27 22:05:28 +02:00
Fabian Löschner
c625a37525 Undo breaking changes 2019-08-27 22:05:28 +02:00
Fabian Löschner
a4a5750ccd Clarified documentation of min/max behaviour 2019-08-27 22:05:28 +02:00
Fabian Löschner
d21c65f755 Fix for [a,ca]min/max methods.
Panic on empty matrices, propagate NaN, fix of wrong results, added doc tests
2019-08-27 22:05:28 +02:00
Jake Shadle
4fa4a6b854 HTTPS All The Things (#608)
* Use https for all links where it is valid

* Fix random links to external sites
2019-08-27 22:05:28 +02:00
Las
3d97b21aea Fix incorrect documentation from s/Real/&Field 2019-08-27 22:05:28 +02:00
Jack Wrenn
c8ae3839c1 simplify anti-aliasing assertion 2019-08-27 22:05:28 +02:00
Jack Wrenn
2e273ad6c5 prevent constructing MatrixSliceMutMN for which disjoint indices may alias the same linear index
Fixes #486.
2019-08-27 22:05:28 +02:00
Stefan Mesken
e86ab5db3d removed depedency on Vec 2019-08-27 22:05:28 +02:00
Stefan Mesken
4add995c1b addressed Trevis CI error 2019-08-27 22:05:28 +02:00
Stefan Mesken
3baefb1319 Allow the removal of multiple rows/columns given an array of indices. #530 2019-08-27 22:05:28 +02:00
Austin Lund
f9921a6774 Refactor row_sum() and column_sum() to cover more cases.
Currently the methods for row_sum and column_sum require Field and
Supersetof<f64>.  This means that to perform a row_sum or
column_sum requires the scalar type to have more properties than just
addition.  Consequently, row_sum() won't work on integer matricies.

This patch makes the only requirement that the scalar type be an
additive monoid. Doc tests using integers are also added.
2019-06-20 09:18:42 +10:00
Jake Shadle
0384268bd4 HTTPS All The Things (#608)
* Use https for all links where it is valid

* Fix random links to external sites
2019-06-11 20:56:50 +02:00
Christian Authmann
589aebbf85 Add #[must_use] to all functions with a _mut variant (#598) 2019-06-05 23:04:04 +02:00
Las
65e4c59152 Fix incorrect documentation from s/Real/&Field 2019-04-17 19:30:45 +02:00
Mara Bos
85c931520a Implement Default for Quaternion and UnitQuaternion. 2019-04-16 10:12:09 +02:00
Mara Bos
e6265da980 Implement Default for MatrixMN. 2019-04-16 10:11:27 +02:00
Jack Wrenn
05eb9ac2ba simplify anti-aliasing assertion 2019-04-16 09:14:46 +02:00
Jack Wrenn
306f096c64 prevent constructing MatrixSliceMutMN for which disjoint indices may alias the same linear index
Fixes #486.
2019-04-16 09:14:46 +02:00
Stefan Mesken
ff9027f473 removed depedency on Vec 2019-04-08 23:44:49 +02:00
Stefan Mesken
cb459d4493 addressed Trevis CI error 2019-04-08 23:44:49 +02:00
Stefan Mesken
5392b936d1 Allow the removal of multiple rows/columns given an array of indices. #530 2019-04-08 23:44:49 +02:00
Sébastien Crozet
b5f452087e Release v0.18.0 2019-03-31 17:32:40 +02:00
sebcrozet
bb06701eff Fix the return type of convolve_same to match the documentation. 2019-03-31 17:04:20 +02:00
sebcrozet
ae4afa3d2c Merge branch 'master-public' into dev
# Conflicts:
#	Cargo.toml
#	src/base/matrix.rs
#	src/geometry/quaternion.rs
2019-03-31 16:33:25 +02:00
sebcrozet
b5b81a0ba9 Bump version numbers. 2019-03-31 15:25:54 +02:00
sebcrozet
94a8babcdc Uncomment the fast renormalization of Rotation2. 2019-03-31 14:34:07 +02:00
sebcrozet
18b9f82042 Fix warnings. 2019-03-31 13:32:26 +02:00
sebcrozet
7dbff7c389 Continue reexporting the deprecated alga::general::Real trait. 2019-03-31 12:26:20 +02:00
sebcrozet
55873cae37 Fix compilation with no-std. 2019-03-31 12:06:26 +02:00
sebcrozet
ba40e8eb55 Fix merge errors due to the switch to rust 2018. 2019-03-31 10:53:31 +02:00
sebcrozet
38ef0cbf7b Merge branch 'dev' into complex
# Conflicts:
#	src/base/ops.rs
#	src/geometry/isometry.rs
#	src/geometry/quaternion.rs
#	src/geometry/quaternion_construction.rs
#	src/geometry/rotation.rs
#	src/geometry/similarity.rs
#	src/geometry/transform.rs
#	src/geometry/translation.rs
#	src/geometry/unit_complex.rs
2019-03-31 10:48:59 +02:00
Adam Nemecek
1e04053a21 refactoring 2019-03-31 10:34:03 +02:00
Adam Nemecek
e416360fc9 geometric operations 2019-03-31 10:34:03 +02:00
Simon Puchert
74aefd9c23 Improve precision of UnitQuaternion::angle (#569)
The previous implementation had stability problems for small angles due
to the behaviour of the arccosine it used. In particular, it needs a
hack to handle "cosines" greater than 1 and the smallest obtainable
nonzero angle for e.g. f32 is acos(1-2^-22) = 0.00069...
These problems can be fixed by using an arctangent-based formula.
2019-03-31 10:32:34 +02:00
sebcrozet
56f961c4bc Reexport Complex from num_complex. 2019-03-26 18:02:14 +01:00
sebcrozet
3b6cd04a80 Adapt BLAS tests to complex numbers. 2019-03-26 18:02:03 +01:00
sebcrozet
4ef4001836 Rename Real to RealField. 2019-03-25 11:21:41 +01:00
sebcrozet
5b28c39fa7 Rename Complex to ComplexField. 2019-03-25 11:19:36 +01:00
Samuel Hurel
b4d800f3e2 Fix matrix slerp function (#568)
* Fix matrix slerp function

* Adding slerp doc test
2019-03-24 21:44:49 +01:00
sebcrozet
3cbe60523a 2018 edition. 2019-03-23 14:33:47 +01:00
sebcrozet
ce24ea972e Remove all spurious allocation introduced by complex number support on decompositions. 2019-03-23 14:13:00 +01:00
sebcrozet
921a05d523 Implement some BLAS opertaions involving adjoint. 2019-03-23 11:48:12 +01:00
sebcrozet
1001e8ee0f Cleanup warnings and rename Schur -> RealSchur 2019-03-23 11:46:56 +01:00
sebcrozet
fd65738738 Fix icamax_full doc-test. 2019-03-19 22:56:32 +01:00
sebcrozet
cb367a645d Fix mint tests. 2019-03-19 22:53:21 +01:00
sebcrozet
b0a9eab0b9 Final SVD fix. 2019-03-19 22:52:57 +01:00
sebcrozet
3edef2f006 Decomposition results: return a real vector whenever applicable.
This includes singular values, eigenvalues of hermitian matrices, tridiagonalization and bidiagonalization diagonal and off-diagonal elements.
2019-03-19 14:22:59 +01:00
sebcrozet
2f0d95bdbb Fix most tests. 2019-03-19 12:00:10 +01:00
sebcrozet
e4748c69ce Start fixing SVD. 2019-03-18 11:23:19 +01:00
adamnemecek
1e614db227 Quaternionic division + refactoring (#563) 2019-03-18 09:08:42 +01:00
Sébastien Crozet
f916dae6ed
Merge pull request #537 from greizgh/fix-axpy-typo
Fix typo in axpy documentation
2019-03-16 10:06:35 +01:00
Sébastien Crozet
fac012a775
Merge pull request #558 from tpdickso/geometric-transform-point
Add the `transform` methods as inherent methods on geometric types
2019-03-16 10:06:00 +01:00
Greizgh
0f09f2a58c Fix typo in axpy documentation 2019-03-15 15:59:39 +01:00
Sébastien Crozet
a2c0a453d3
Add operator explanation to docs
Co-Authored-By: tpdickso <tpdickso@uwaterloo.ca>
2019-03-15 10:50:47 -04:00
sebcrozet
010c009cff Fix Schur decomposition. 2019-03-12 13:15:02 +01:00
est31
db3d08f81a Fix two compiler warnings
Fixes #561
2019-03-12 09:00:23 +01:00
Sébastien Crozet
b46cf75996
Merge pull request #560 from adamnemecek/master
quaternion trigonometry
2019-03-04 21:18:24 +01:00
Adam Nemecek
edb08cd900 quaternion trigonometry 2019-03-04 08:36:46 -08:00
Sébastien Crozet
2f4983d778
Merge pull request #539 from npapapietro/Implement_convolution_#520
Implement convolution #520
2019-03-02 22:47:21 +01:00
Nathan
36feddb8c2 Moving functions into impl for Vector<N,D,S> 2019-03-02 15:00:40 -06:00
sebcrozet
77f048b6b9 WIP use Complex instead of Real whenever possible on the linalg module. 2019-03-02 19:33:49 +01:00
Benjamin Hetherington
aeff67ecbd Correct typo in quaternion documentation (#559)
Correct "looses" to "loses" in quaternion.rs documentation.
2019-02-25 17:34:13 +01:00
Nathan
28525bfc20 Restructured usage of convolves, added unit testing. 2019-02-24 19:53:09 -06:00
Terence
2a2e9d7f8e Add the transform methods as inherent methods on geometric types
This adds `transform_point`, `transform_vector`,
`inverse_transform_point` and `inverse_transform_vector` as inherent
methods on the applicable geometric transformation structures, such
that they can be used without the need to import the `Transformation`
and `ProjectiveTransformation` traits from `alga`.
2019-02-24 11:29:27 -05:00
adamnemecek
704331be4f added Quaternion accessors for r,i,j,k, refactored conjugate to use imag (#551) 2019-02-23 16:03:01 +01:00
Nathan
a3d571ea6b Merge remote-tracking branch 'upstream/master' into Implement_convolution_#520 2019-02-23 08:29:41 -06:00
Jack Wrenn
20e9c6f480 Implement iter::Sum for DMatrix (#552)
Fixes #514.
2019-02-23 15:02:27 +01:00
sebcrozet
7c91f2eeb5 Use Complex instead of Real whenever possible on the base/ module. 2019-02-23 11:24:07 +01:00
Nathan
2a2debf58b Fixing documentation 2019-02-20 20:32:09 -06:00
Nathan
9f52019385 Fixing type traits based on feedback, convolve_full still broken 2019-02-18 19:01:18 -06:00
Sébastien Crozet
c97dfaf381
Add renormalization and rotation extraction from general 2D and 3D matrices. (#549)
* Add From impls to convert between UnitQuaterion/UnitComplex and Rotation2/3

* Add rotation extraction from a Matrix2 or Matrix3.

* Add fast Taylor renormalization for Unit.

Fix 376.

* Add renormalization for Rotation3.

Renormalization for Rotation2 requires Complex to implement VectorSpace which will be fixed only on alga v0.9

* Update Changelog.
2019-02-18 22:41:46 +01:00
adamnemecek
975d72f070 Replace explicit types with Self where possible. 2019-02-16 22:29:41 +01:00
Nathan
b08c2ad70d Feedback updates round 1 2019-02-14 20:54:26 -06:00
Nathan
bca385ea6b Quick fix to documentation 2019-02-10 13:46:37 -06:00
Nathan
b3c6492530 Moved test file to lingal folder, wrote tests based on github ticket request (scipy reference) 2019-02-10 13:40:32 -06:00
sebcrozet
fac709b0c0 Release nalgebra v0.17 and nalgebra-glm v0.3. 2019-02-03 17:03:12 +01:00
Sébastien Crozet
cc7bab9755
Merge branch 'master' into as_ptr 2019-02-03 16:55:54 +01:00
sebcrozet
08f31837a8 Update to alga 0.8. 2019-02-03 15:52:15 +01:00
sebcrozet
7be7fc8776 Fix compilation with no-std. 2019-02-03 15:16:50 +01:00
sebcrozet
ce8879c37a Add all the missing docs. 2019-02-03 14:18:55 +01:00
sebcrozet
fc24db8ff3 Merge branch 'master-public' into sparse
# Conflicts:
#	Cargo.toml
#	examples/matrix_construction.rs
#	nalgebra-glm/src/constructors.rs
#	nalgebra-glm/src/ext/matrix_clip_space.rs
#	nalgebra-glm/src/ext/matrix_transform.rs
#	nalgebra-glm/src/ext/mod.rs
#	nalgebra-glm/src/ext/quaternion_common.rs
#	nalgebra-glm/src/gtx/quaternion.rs
#	nalgebra-glm/src/gtx/rotate_vector.rs
#	nalgebra-glm/src/lib.rs
#	nalgebra-glm/src/traits.rs
#	nalgebra-lapack/src/cholesky.rs
#	nalgebra-lapack/src/eigen.rs
#	nalgebra-lapack/src/hessenberg.rs
#	nalgebra-lapack/src/lu.rs
#	nalgebra-lapack/src/qr.rs
#	nalgebra-lapack/src/schur.rs
#	nalgebra-lapack/src/svd.rs
#	nalgebra-lapack/src/symmetric_eigen.rs
#	rustfmt.toml
#	src/base/array_storage.rs
#	src/base/blas.rs
#	src/base/cg.rs
#	src/base/default_allocator.rs
#	src/base/edition.rs
#	src/base/iter.rs
#	src/base/matrix.rs
#	src/base/swizzle.rs
#	src/base/vec_storage.rs
#	src/geometry/mod.rs
#	src/geometry/point_construction.rs
#	src/geometry/quaternion.rs
#	src/geometry/similarity.rs
#	src/geometry/translation.rs
#	src/geometry/unit_complex_construction.rs
#	src/linalg/bidiagonal.rs
#	src/linalg/cholesky.rs
#	src/linalg/full_piv_lu.rs
#	src/linalg/hessenberg.rs
#	src/linalg/lu.rs
#	src/linalg/permutation_sequence.rs
#	src/linalg/qr.rs
#	src/linalg/schur.rs
#	src/linalg/svd.rs
#	src/linalg/symmetric_eigen.rs
#	src/linalg/symmetric_tridiagonal.rs
#	tests/geometry/point.rs
#	tests/geometry/quaternion.rs
#	tests/lib.rs
#	tests/linalg/eigen.rs
#	tests/linalg/svd.rs
2019-02-03 12:53:41 +01:00
sebcrozet
f52bd4be3d Rename VecStorage::data/data_mut to ::as_vec/as_vec_mut 2019-02-03 11:48:42 +01:00
sebcrozet
664658760a Remove the Deref implementation for MatrixRef.
Fix #380.
2019-02-03 11:41:14 +01:00
sebcrozet
e225297147 Add doc-tests for apply_norm and apply_metric_distance. 2019-02-03 11:29:10 +01:00
sebcrozet
48e9bbc065 Add tests for row and column iterators. 2019-02-03 11:17:23 +01:00
sebcrozet
bafd74da70 Fix doc-tests for variance. 2019-02-03 11:06:06 +01:00
sebcrozet
381fdb642c Remove useless extern crate in doc-tests. 2019-02-03 11:01:11 +01:00
sebcrozet
dcae274d2e Fix rebase fallback + add missing docs. 2019-02-03 08:33:07 +01:00
sebcrozet
414fe8afda Pass references to zip_apply and zip_zip_apply. 2019-02-03 08:08:03 +01:00
sebcrozet
da8dc6c4bd Use IntoIterator for select_rows and select_columns argument. 2019-02-03 08:08:03 +01:00
sebcrozet
d1391592a0 Add zip_apply and zip_zip_apply. 2019-02-03 08:08:03 +01:00
sebcrozet
904000ce27 Add argmin and argmax. 2019-02-03 08:08:03 +01:00
sebcrozet
0d2c1be8da Add row and column iterators. 2019-02-03 08:08:03 +01:00
sebcrozet
bba1f48e81 Add select_rows and select_columns. 2019-02-03 08:06:24 +01:00
sebcrozet
01d1f9d24b Simplify the construction of DVector.
Fix #377.
2019-02-03 08:06:24 +01:00
sebcrozet
660b868603 Add more general norms and metrics.
Fix #258.
2019-02-03 08:06:24 +01:00
sebcrozet
cc2a70664d Add statistics functions: sum, variance, mean. 2019-02-03 08:06:24 +01:00
Sébastien Crozet
570611a59b
Merge pull request #524 from shivshank/master
Add `push` method to Vector
2019-02-03 07:52:03 +01:00
Sébastien Crozet
9167965252
Merge pull request #525 from jswrenn/fix-serde-deserialization-panic
Fix out-of-bounds panic during deserialization; produce error instead
2019-02-03 07:31:03 +01:00
Sébastien Crozet
77a317234c
Merge pull request #533 from ybyygu/master
fix doc strings for `map_with_location` and `lower_triangle`
2019-02-03 07:29:49 +01:00
Wenping Guo
b42339ec94 fix doc string of lower_triangle method 2019-01-30 15:42:28 +08:00
Wenping Guo
bb3f3ac2ee fix doc for map_with_location method 2019-01-30 09:33:45 +08:00
sebcrozet
13f76efe36 Add simple constructors for pure-translation and pure-rotation isometries. 2019-01-29 12:04:23 +01:00
sebcrozet
a7ab61f974 Add horizontal and vertical resizing for dynamic matrices and vectors. 2019-01-29 12:03:48 +01:00
sebcrozet
9fbdedb942 Implement ContiguousStorage for some matrix slices. 2019-01-29 12:02:05 +01:00
Gedl
59b0709fcf Retain new_observer_frame as a deprecated wrapper function 2019-01-17 10:17:00 +01:00
Gedl
3fdcf5329d Rename ::new_observer_frame to ::face_towards 2019-01-16 22:41:25 +01:00
Jack Wrenn
6426a7cb6f Fix out-of-bounds panic during deserialization; produce error instead.
Fixes #522
2019-01-16 11:23:20 -05:00
shivshank
85a943b7ef Rewrite to_homogenous for vectors to use push 2019-01-09 21:48:03 -05:00
shivshank
3055c289c0 Add push method to Vector 2019-01-09 21:38:58 -05:00
sebcrozet
5569850dbd Fix examples on stable. 2018-12-29 15:32:09 +01:00
sebcrozet
c9351cb818 Fix merge fallout. 2018-12-29 14:57:26 +01:00
sebcrozet
82106caa9e Merge branch 'dev' into master-public
# Conflicts:
#	src/linalg/svd.rs
2018-12-29 14:39:32 +01:00
Sébastien Crozet
564246ec1c
Merge pull request #507 from burtonageo/update_deps_2
Update dependencies, and fix tests from fallout
2018-12-29 14:33:53 +01:00
sebcrozet
be8d1ce3ce Fix compilation errors related to rand. 2018-12-29 14:22:24 +01:00
Jack Wrenn
5a9a1eb645 typofix: indicies -> indices 2018-12-29 13:41:56 +01:00
Jack Wrenn
4ab8a290c7 groundwork for indexing with typenums 2018-12-29 13:41:56 +01:00
Jack Wrenn
939915131d MutMatrixIndex -> MatrixIndexMut 2018-12-29 13:41:56 +01:00
Jack Wrenn
57123ed6aa Overloaded Indexing 2018-12-29 13:41:56 +01:00
Jack Wrenn
d3510b8ff6 typofix: DimNameNimimum -> DimNameMinimum 2018-12-29 13:41:23 +01:00