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
sebcrozet
f36ff97d6a
Fix deprecation warnings.
2018-12-29 13:19:09 +01:00
Jack Wrenn
53632cd1b4
Implement `Hash` for all `Matrix<N, R, C>` where `N: Hash`.
...
Implements #508 .
2018-12-29 11:29:13 +01:00
sebcrozet
a14d8a4cb2
Add coordinates access to translations.
...
Fix #509 .
2018-12-26 15:19:50 +01:00
sebcrozet
cae2be5cad
Add .min and .max.
2018-12-22 18:03:32 +01:00
George Burton
6a4323d0ea
Fix unintentional change
2018-12-18 14:46:29 +00:00
George Burton
9c37c51203
Update dependencies, and fix tests from fallout
2018-12-18 14:44:53 +00:00
Jack Wrenn
8b8f127f8d
Deprecate `origin`
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
daadac7647
Deprecate `try_normalize`
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
8a5e062e7e
Deprecate `normalize`
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
e89faca588
Deprecate `magnitude_squared`
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
770489c664
Deprecate `magnitude`
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
2bb7c011b1
Deprecate `norm_squared`
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
e55c72fddc
Deprecate `norm`.
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
03f7c2d286
Deprecate `angle`
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
52b8155c67
Deprecate `dot`
...
See #371 .
2018-12-16 12:58:51 +01:00
Jack Wrenn
aac29b70ea
Deprecate `abs`
...
See #371
2018-12-16 12:58:51 +01:00
Jack Wrenn
2595db1607
Fix doctests broken by 35d2381a2a
2018-12-16 12:58:20 +01:00
Jack Wrenn
0d47a8e16b
Rename `Perspective3::unwrap` to `Perspective3::into_inner` and deprecate `Perspective3::unwrap`
...
See #460
2018-12-16 12:58:20 +01:00
Jack Wrenn
9600c45dd4
Rename `Orthographic3::unwrap` to `Orthographic3::into_inner` and deprecate `Orthographic3::unwrap`
...
See #460
2018-12-16 12:58:20 +01:00
Jack Wrenn
43c5f4cb73
Rename `Transform::unwrap` to `Transform::into_inner` and deprecate `Transform::unwrap`
...
See #460
2018-12-16 12:58:20 +01:00
Jack Wrenn
35ab64b086
Rename `Rotation::unwrap` to `Rotation::into_inner` and deprecate `Rotation::unwrap`
...
See #460
2018-12-16 12:58:20 +01:00
Jack Wrenn
0ab137bfcf
Rename `Unit::unwrap` to `Unit::into_inner` and deprecate `Unit::unwrap`
...
See #460
2018-12-16 12:58:20 +01:00
Jack Wrenn
0f66403cbb
Rename `MatrixVec` to `VecStorage`.
...
See #470 .
2018-12-06 20:51:29 +01:00
Jack Wrenn
b83c3b857b
Rename `MatrixArray` to `ArrayStorage`.
...
See #470 .
2018-12-06 20:51:29 +01:00
sebcrozet
c69ab193be
Fix cornercase for Rotation3 conversion to euler angles.
...
Fix #494
2018-12-04 22:04:07 +01:00
Jack Wrenn
72d89c75ae
Group swizzle methods by dimensional requirement.
...
This is semantically equivalent, but improves the rendered documentation.
2018-11-24 08:03:54 +01:00
sebcrozet
f972d1dd7e
Small dimension check fix for swizzling.
2018-11-23 07:01:35 +01:00
Jack Wrenn
accdd51faf
Implement `Into<Vec<N>>` for `MatrixVec<N, R, C>`
2018-11-23 07:01:15 +01:00
Jack Wrenn
74ff6ae199
Implement `Point` swizzling
2018-11-23 06:34:00 +01:00
Jochen Görtler
85bfae5390
RFC: Add comment in `Rotation::to_homogeneous()`
2018-11-20 17:47:29 +01:00
Sébastien Crozet
bc9c74cbb6
RFC: Remove redundant `Dim` trait
...
Co-Authored-By: grtlr <grtlr@users.noreply.github.com>
2018-11-20 17:47:29 +01:00
Jochen Görtler
72f61918f4
RFC: Fix type annotations
2018-11-20 17:47:29 +01:00
Jochen Görtler
3ac5efeac1
WIP: to_homogeneous for MatrixN
2018-11-20 17:47:29 +01:00
Jim Turner
267d9760bd
Add as_ptr and as_mut_ptr methods
...
This is useful for moving around a matrix/slice in unsafe code and for
converting slices to other types (e.g. `ndarray::ArrayView`).
2018-11-19 16:53:46 -05:00
Jack Wrenn
c36416b9c0
Add `ShapeConstraint` for `Extend<Vector<_,_,_>>` implementations.
2018-11-18 06:36:04 +01:00
Jack Wrenn
0ed67d0470
Implement `Extend<Vector<_,_,_>>` for `Matrix`.
...
Extend a `Matrix` with columns drawn from an iterator of `Vector`s.
2018-11-18 06:36:04 +01:00
Jack Wrenn
0f29a3ae0a
Simplify documentation examples for `Extend` implementations.
2018-11-18 06:36:04 +01:00
Jack Wrenn
f711c107ca
Implements `Extend` for `Matrix<N, Dynamic, U1>`.
...
Extends a `Vector` with new rows populated from an iterator.
Inspired by https://github.com/rustsim/nalgebra/issues/446#issuecomment-437931790
2018-11-18 06:36:04 +01:00
Jack Wrenn
c3dd709c0a
Implements `Extend` for `Matrix<N, Dim, Dynamic>`.
...
Extends a matrix with new columns populated from an iterator.
2018-11-18 06:36:04 +01:00
sebcrozet
bd7d0be7a8
Remove over-restrictive assertions on Orthographic3 construction + add doc-tests.
...
Fix #365
2018-11-10 12:57:47 +01:00
sebcrozet
69490c2cea
Add doc-tests to Transform.
2018-11-10 11:20:34 +01:00
sebcrozet
b6d741c593
Document similarity_construction.rs.
2018-11-10 11:20:34 +01:00
sebcrozet
a8a9a3082a
Add doc-tests to unit_complex_construction.
2018-11-10 11:20:34 +01:00
sebcrozet
ff5b64e35d
Add doc-tests to unit_complex.rs.
2018-11-10 11:20:34 +01:00
sebcrozet
536923f9fc
Add doc-tests to rotation_specialization.
2018-11-10 11:20:34 +01:00
sebcrozet
80fc057ead
Add doc-tests to rotation_construction.
2018-11-10 11:20:34 +01:00
sebcrozet
7d9d47d9ea
Complete doc-tests of rotation.rs.
2018-11-10 11:20:34 +01:00
sebcrozet
c24caa311f
Add some documentation for Rotation.
2018-11-10 11:20:34 +01:00
Jack Wrenn
9e763bbcff
doc tests for `from_vec_generic` and `from_vec`
2018-11-08 06:42:55 +01:00
Jack Wrenn
d6fb07dad2
Introduce `from_vec`, to complement `from_vec_generic`
2018-11-08 06:42:55 +01:00
Jack Wrenn
68bdb427cf
Rename: `from_vec` -> `from_vec_generic`
2018-11-08 06:42:55 +01:00
Jack Wrenn
ff4e44a8ed
Introduces a `from_vec` constructor for `MatrixMN`.
...
Addresses #378 .
The implementation of `from_vec` simply wraps a call to
`from_iterator_generic`. Because the standard library's implementation
of `into_iter` is specialized for the `.into_iter().collect<Vec<_>>()`
case (see https://github.com/rust-lang/rust/issues/46084#issuecomment-345524508 ),
this is equivalent to re-using the original Vec as storage.
2018-11-08 06:42:55 +01:00
sebcrozet
b4b66bddd2
Add comment about cs matrix multiplication implementation.
2018-11-06 19:25:27 +01:00
sebcrozet
f43ab963ad
Fix matrix market grammar.
2018-11-06 19:25:16 +01:00
Antony Lesage
c370564dba
Fix MatrixMN::from_distribution ( #463 )
2018-11-06 19:24:20 +01:00
sebcrozet
8341ec2f10
Run rustfmt.
2018-11-06 18:32:20 +01:00
sebcrozet
ed07b78b97
Add matrixmarket parser.
2018-11-06 18:31:04 +01:00
sebcrozet
383a18f083
Improve CsMatrix multiplaction performances.
2018-11-06 18:27:43 +01:00
sebcrozet
538e18b3e9
Ensure the output of addition is sorted.
2018-11-05 16:44:59 +01:00
sebcrozet
748cfeea66
Ensure the output of multiplication and triangular solve are sorted.
2018-11-05 16:38:43 +01:00
sebcrozet
c3e8112d5e
Add implementation of the left-looking cholesky decomposition.
2018-11-04 07:10:43 +01:00
sebcrozet
a7acd5b832
Fix missing type annotation.
2018-11-01 11:07:36 +01:00
sebcrozet
2119c1adf5
Complete documentation for quaternions.
2018-11-01 11:07:36 +01:00
sebcrozet
911ddca588
Implement From<Vector> for Translation and Quaternion.
2018-11-01 11:07:36 +01:00
sebcrozet
96db8e564a
Complete the documentation for Translation.
2018-11-01 11:07:36 +01:00
sebcrozet
1dd6bcce6a
Add doc-tests to most of quaternion.rs.
2018-11-01 11:07:36 +01:00
sebcrozet
98b0b842e9
Remove the inherent clone method from points.
...
Fix #458 .
2018-11-01 10:22:10 +01:00
sebcrozet
50d0b64924
Avoid bound-checking on cholesky decomposition.
2018-10-30 17:45:59 +01:00
sebcrozet
9bf1d0280d
Fix cholesky computation.
2018-10-30 17:29:32 +01:00
sebcrozet
0ba23da475
Make transform_vector and transform_point public.
2018-10-30 07:55:08 +01:00
sebcrozet
19d2bc0b7c
Fix typo.
2018-10-30 07:55:08 +01:00
sebcrozet
fc782f3644
Make MatrixN::{transform_vector, transform_point} inherent methods.
...
Addresses https://github.com/rustsim/nalgebra/issues/372
2018-10-30 07:55:08 +01:00
sebcrozet
7ecbacacda
Add elimination tree computation.
2018-10-30 07:46:34 +01:00
sebcrozet
bfab204a24
Add lerp for vectors.
...
Fix #453
2018-10-27 16:06:45 +02:00
sebcrozet
4ce6555b96
Add more point and quaternion documentation.
2018-10-27 15:00:18 +02:00
sebcrozet
b32a02f0ac
Add doc-tests to point_construction.rs
2018-10-27 15:00:18 +02:00
sebcrozet
551c44c854
Implement From<Vector> for Point.
2018-10-27 15:00:18 +02:00
sebcrozet
6d63a0a5f1
Add doc-tests to isometry_construction.rs
2018-10-27 15:00:18 +02:00
sebcrozet
a512e16868
Add doc-tests to isometry.rs.
2018-10-27 15:00:18 +02:00
sebcrozet
14ad10a7e0
Add rustfmt.toml and run it.
2018-10-27 15:00:18 +02:00
sebcrozet
5ea612ef96
Remove mention to the eye and target on the unit quaternion look_at_* methods.
2018-10-27 15:00:18 +02:00
sebcrozet
f6cd81b028
Add doc-tests for several matrix construction methods.
2018-10-27 15:00:18 +02:00
sebcrozet
15844d877a
Add doc-tests for componentwise operations.
2018-10-27 15:00:18 +02:00