Commit Graph

1361 Commits

Author SHA1 Message Date
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
sebcrozet 34b20dc291 Add lower triangular solve with sparse right-hand-side. 2018-10-23 18:18:05 +02:00
sebcrozet e4e5659405 Add lower triangular solve with dense right-hand-side. 2018-10-22 17:55:13 +02:00
sebcrozet dc8edeceb2 Use an iterator to iterate through a column entries. 2018-10-21 07:42:32 +02:00
sebcrozet 9fa3e7a769 Implement CsMatrix: axpy_cs, transpose, Add and Mul. 2018-10-20 22:42:16 +02:00
sebcrozet 0d24cf4dc0 Run rustmt. 2018-10-20 22:26:44 +02:00
sebcrozet a3d363f397 Fix minor typos. 2018-10-16 20:57:52 +02:00
sebcrozet 7a9cfef285 Complete doc-tests for blas operations. 2018-10-16 20:57:52 +02:00
sebcrozet 8e3edf102c Start adding doc-tests for BLAS operations. 2018-10-16 20:57:52 +02:00
Bruce Mitchener 47fe851173 Add favicons to docs. 2018-10-16 18:28:39 +02:00
sebcrozet 9e2541f949 Add a Point::from_slice 2018-10-13 13:13:48 +02:00
sebcrozet a68937990b Consider two empty matrices as equal. 2018-10-13 12:59:36 +02:00
sebcrozet a390732b97 Fix partial_cmp 2018-10-13 12:59:36 +02:00
sebcrozet 18e9b8998d Add impls of From/Into to convert any transformation types to a matrix. 2018-10-13 11:25:19 +02:00
João Costa 7a95644a21 Simplify SVD recompose pattern match 2018-10-13 10:55:37 +02:00
João Costa 8b1aa2078c Change the SVD methods to return a Result instead of panicking 2018-10-13 10:55:37 +02:00
Bruce Mitchener 3be727e76b Capitalize 'Euclidean'. 2018-10-09 08:31:38 +02:00
sebcrozet c7c156a6a0 Use other keywords for isometry documentations.
Fix #419.
2018-10-06 07:27:40 +02:00
Bruce Mitchener 3a24afd111 clippy: Use println!(f), without empty string. 2018-10-05 20:31:29 +02:00
Sébastien Crozet 5059d7ee7b Add conditional compilation for the base::MatrixVec import too. 2018-10-04 20:37:12 +02:00
Sébastien Crozet 3abeae04f5 Add conditional compilation to From impls for dynamically-sized matrices. 2018-10-04 20:37:12 +02:00
Jack Wrenn 23d646c342 Add an `Into` impl for converting `MatrixSlice`s into `MatrixMN`
See #342.
2018-10-04 20:37:12 +02:00
mborst 12962c3c13 Implement map_with_location. 2018-09-28 05:22:32 +02:00
Thomas Vincent 7331807a6d Fix minor typos 2018-09-27 06:16:04 +02:00
Bruce Mitchener a8ae62ea52 Improve cross-linking and cross-referencing in docs. 2018-09-27 06:00:32 +02:00
Bruce Mitchener 57fa7099aa Call `base` that instead of `based`. 2018-09-27 05:49:18 +02:00
Benjamin Saunders 2f03857017 Introduce Unit::from_ref_unchecked 2018-09-25 05:35:20 +02:00
sebcrozet f218186ec0 Add Rotation * Unit<Vector> 2018-09-24 22:05:15 +02:00
sebcrozet 51a4e73386 Use typenum type-level integer for swizzle dimension comparison.
Fix #408.
2018-09-24 22:04:05 +02:00
Bruce Mitchener 175c41ed3a Typo fixes. 2018-09-24 21:15:07 +02:00
sebcrozet c6bc62c95f For matrices, return the actual result of partial_clamp instead of None.
Fix #401
2018-09-24 20:58:09 +02:00