Christopher Durham
07c3fbc191
Merge branch 'dev' into bytemuck
2021-07-22 17:47:57 -05:00
Violeta Hernández
22b657f566
First draft of `Owned` overhaul
2021-07-19 18:00:40 -05:00
Violeta Hernández
a753d84aae
cargo fmt
2021-07-17 21:50:06 -05:00
Violeta Hernández
b74be8499f
Miscellaneous improvements
2021-07-17 21:43:50 -05:00
Violeta Hernández
10b5dc9bb6
Many miscellaneous improvements throughout
2021-07-17 20:19:20 -05:00
Violeta Hernández
7e1b2f81b3
Fixed some more blatant issues
2021-07-17 13:53:01 -05:00
Violeta Hernández
fa1ed9683b
Got rid of the `unimplemented_or_uninitialized_generic` macro
2021-07-17 13:36:35 -05:00
Violeta Hernández
0687318c7a
Tests work!
2021-07-17 13:30:57 -05:00
Violeta Hernández
c01d591478
We have reached compilation!
2021-07-17 13:01:03 -05:00
Violeta Hernández
9a528e23b9
Almost!
2021-07-17 04:36:14 -05:00
Violeta Hernández
a6b8dd6d78
Checkpoint #10
2021-07-17 02:52:57 -05:00
Violeta Hernández
87fe2b30df
Checkpoint #9
2021-07-16 23:17:56 -05:00
Violeta Hernández
c3f869e017
Checkpoint #8
2021-07-16 01:53:28 -05:00
Violeta Hernández
8270dd8e89
`ops.rs` works too now!
2021-07-16 00:39:15 -05:00
Violeta Hernández
54e9750191
Tied some blas loose strings
2021-07-16 00:27:16 -05:00
Violeta Hernández
df9b6f5f64
blas.rs works now!
2021-07-15 23:56:58 -05:00
CAD97
b1775ee747
Add Transform × UnitComplex & friends
2021-07-14 23:52:38 -05:00
Violeta Hernández
bbd045d216
`blas.rs` should be sound now
2021-07-14 23:30:31 -05:00
Violeta Hernández
775917142b
More trait restructuring!
2021-07-14 17:21:22 -05:00
Violeta Hernández
8d10e69e33
Finally figured out some trait nitty-gritty
2021-07-14 13:24:27 -05:00
Violeta Hernández
1a78b00476
Checkpoint #1
2021-07-14 04:25:16 -05:00
Sébastien Crozet
cce7d9e9b6
Merge pull request #937 from jsmith628/fixed-size-borrow
...
Implemented Borrow and BorrowMut on fixed size matrices
2021-07-11 17:48:09 +02:00
Sébastien Crozet
c320988088
Merge pull request #944 from vadixidav/dev
...
import macros from alloc
2021-07-11 17:47:51 +02:00
Sébastien Crozet
b007e192d4
Merge pull request #938 from Nateckert/omatrix_to_string
...
Make display generical for Omatrix
2021-07-11 17:45:02 +02:00
Geordon Worley
02e9ac4cad
import macros from alloc to solve issues with missing format! macro, among other issues
2021-07-10 18:33:11 -05:00
Sébastien Crozet
7bcb54641d
Merge pull request #943 from dimforge/point_dim_name
...
Add a OPoint type that takes type-level integers instead of const-generics
2021-07-10 11:40:31 +02:00
Sébastien Crozet
ac61e112dd
Merge pull request #932 from CAD97/moar-const
...
Remove scalar bound from geometry type defs
2021-07-10 11:28:23 +02:00
Crozet Sébastien
2ce6811e2c
Fix compilation when enabling the bytemuck feature.
2021-07-10 11:24:23 +02:00
CAD97
85d07b22a3
FIx serde impl bounds
2021-07-09 15:30:06 -05:00
CAD97
22ba88353a
Fix bounds for bytemuck impls
2021-07-09 15:23:08 -05:00
Violeta Hernández
1be8964c12
Fixed indent
2021-07-08 11:15:08 -05:00
Violeta Hernández
04e937792b
Removed unnecessary `unsafe` markers
2021-07-08 11:12:43 -05:00
Joshua Smith
a7fe7a5d9a
fixed check-fmt error
2021-07-08 11:05:32 -05:00
nathan.eckert
92a51662bf
Remove Allocator<usize, > from display
2021-07-08 14:18:22 +02:00
Sébastien Crozet
0a5bd520a4
Merge pull request #922 from Cryptjar/impl-into-slice
...
Allow to extract the inner slices of SliceStorage
2021-07-08 09:50:41 +02:00
Sébastien Crozet
a66b54a015
Merge pull request #929 from remilauzier/dev
...
Fix some clippy warnings and typo
2021-07-08 09:44:43 +02:00
Joshua Smith
2279da446e
impl Borrow and BorrowMut for fixed size matrices
2021-07-07 13:26:19 -05:00
Violeta Hernández
6e96c28ad9
Trivial doc comment improvements
2021-07-06 21:05:25 -05:00
Rémi Lauzier
bbd60fbc8c
Fix some clippy warnings and typo
2021-07-06 11:39:29 -04:00
Sébastien Crozet
1fc29dcf63
Merge pull request #930 from CAD97/patch-1
...
impl Hash for Transform
2021-07-06 01:09:00 -07:00
CAD97
314b4dd103
Remove scalar bound from geometry type defs
...
This was inconsistently applied, with some types having <T>, some having
<T: Scalar>, and some having <T: RealField>.
This unifies all types to match the convention of Matrix:
Just declare <T> at type def time, and apply bounds on impls only.
A significant advantage of this approach is const fn construction. Const
fn generics currently still can't have trait bounds, so any generic
const fn needs to only move opaque types around. Construction methods
such as new_unchecked or from_parts can be made const by removing their
generic bounds after this PR.
Actual constification is left to a follow-up PR.
Note that na::Transform is _not_ loosened here, as it has more complicated
definition requirements.
2021-07-05 19:04:10 -05:00
Christopher Durham
1eeaf3526c
Rotation::matrix_mut_unchecked may not cause UB
...
...because it isn't unsafe, so clarify the documentation to match.
2021-07-05 18:53:11 -05:00
Christopher Durham
3b4b661756
impl Hash for Transform
...
This just fixes the types in the existing TODO to compile.
2021-07-05 18:36:33 -05:00
Sébastien Crozet
b10711e66e
Merge pull request #927 from remilauzier/dev
...
Fix some clippy warnings
2021-07-05 06:55:26 -07:00
CAD97
e77a97e854
Add a couple trivial const fn conversions
2021-07-04 17:42:39 -05:00
Rémi Lauzier
78da5209e9
Fix some clippy warnings
2021-07-03 23:43:45 -04:00
Andreas Longva
92c26334ec
Fix serde impls and Distribution impl for OPoint
2021-07-02 12:01:01 +02:00
CAD97
396d3d6615
Add missing repr(C) on bytemuckable geometry types
2021-06-28 20:49:57 -05:00
CAD97
cb0812aaf3
Add bytemuck impls to geometry types
2021-06-28 20:36:28 -05:00
Crozet Sébastien
16b8f4812d
Define OPoint, a generic point with D: DimName
...
And define Point<T, const D: usize> as an alias for OPoint.
2021-06-26 18:39:20 +02:00
Cryptjar
1554c0114e
Fix unsoundness in `into_slice` by adding `ContiguousStorage` bound.
2021-06-18 13:18:33 +02:00
Sébastien Crozet
0312981a4f
Merge pull request #921 from OfficialURL/ptr_alias
...
Fixed potential UB
2021-06-18 09:49:41 +02:00
Violeta Hernández
281b140365
Fix most clippy warnings
2021-06-18 09:45:37 +02:00
Violeta Hernández
c5f240cc28
Fixed potential UB
2021-06-17 19:51:00 -05:00
Cryptjar
801d8a61a6
Add a `From` impl to convert `DVectorSlice[mut]` back to into a slice.
2021-06-18 02:50:10 +02:00
Cryptjar
498b377d0e
Add `into_slice[_mut]` and impl to SliceStorage[Mut].
2021-06-18 02:42:03 +02:00
Sébastien Crozet
38add0b00d
Fix potential undoundness with Storage::as_slice and Storage::as_mut_slice ( #905 )
2021-06-17 09:46:49 +02:00
Violeta Hernández
d64e799fc9
Fixes #909 ( #917 )
2021-06-17 09:45:33 +02:00
Violeta Hernández
7643a24cc1
`Result<(), ()>` to `bool` ( #916 )
2021-06-17 09:44:06 +02:00
Violeta Hernández
885bbdaf97
Implemented `SliceRange` for `RangeInclusive` ( #911 )
2021-06-17 09:42:47 +02:00
Malte Tammena
38e9a5da33
Annotate `get_mut`/`slice`-like functions with `#[must_use]`
2021-06-07 17:15:36 +02:00
Malte Tammena
e1fe76235f
Normalize `#[must_use]` hints
2021-06-07 16:44:59 +02:00
Malte Tammena
9fb963017f
Simplify default `#[must_use]` annotation
2021-06-07 16:34:03 +02:00
Malte Tammena
39aa52d019
Add must_use annotations in src/**/*.rs
2021-06-06 14:46:36 +02:00
Malte Tammena
d85c10a73c
Add some missing question marks
2021-06-06 11:34:29 +02:00
Malte Tammena
925fc1edd7
Annotate functions with #[must_use] where appropriate
2021-06-06 11:28:12 +02:00
Crozet Sébastien
7acd4ecdcc
Fix bug in the glam conversion Vec2 -> Isometry2
2021-06-04 10:52:28 +02:00
Crozet Sébastien
dfc8ad3d6a
Release v0.27.0
2021-06-02 15:15:17 +02:00
Crozet Sébastien
47a4f52e8d
Replace unchecked glam conversion by TryFrom or checks
2021-06-01 10:48:24 +02:00
Crozet Sébastien
4af979c55b
Support multiple version of the optional glam conversion
2021-06-01 10:27:32 +02:00
Crozet Sébastien
8810b85a2f
Add a point! macro for construction points
...
This macro is similar to the `vector!` macro, except that it builds a point instead of a vector.
2021-05-24 17:53:59 +02:00
David Koloski
9fff10b1f0
Move rkyv impls into separate modules
2021-05-09 12:24:07 -04:00
David Koloski
38dd3345e0
Switch to distributive implementations
2021-05-09 12:24:03 -04:00
David Koloski
b48b104d57
Add rkyv implementations for a few types
2021-05-09 12:23:16 -04:00
Sébastien Crozet
23ac85e896
Merge pull request #886 from Andlon/matrix-macro
...
Matrix macro
2021-05-09 16:52:04 +02:00
Sébastien Crozet
a803271fcc
Merge pull request #889 from dimforge/dvector_deserialize
...
Fix potential unsoundness after deserializing a DVector with a bad number or elements.
2021-05-09 16:50:38 +02:00
Andreas Longva
922393b04f
Enable from_{}_storage only when std/alloc available
2021-05-07 09:09:10 +02:00
Andreas Longva
3a3bc55f66
Move from_{}_storage impl blocks to matrix.rs
2021-05-07 09:00:29 +02:00
Crozet Sébastien
b398a5e189
Re-add conversion between arrays and row vectors.
2021-05-06 18:22:04 +02:00
Crozet Sébastien
5bff5368bf
Manually implement Serialize and Deserialize for VecStorage
2021-05-06 18:16:42 +02:00
Andreas Longva
8552fc8385
Cargo fmt
2021-05-03 13:52:34 +02:00
Andreas Longva
eeab4db69a
Add nalgebra/macros feature and re-export matrix macros from nalgebra
2021-05-03 13:52:34 +02:00
Andreas Longva
d2c11ad797
Impl DMatrix/DVector::from_vec_storage
...
These methods enable safe & const construction of DMatrix/DVector from a
given VecStorage.
2021-05-03 13:52:34 +02:00
Andreas Longva
9142dc8f84
Implement SMatrix::from_array_storage and use it in matriX! impl
...
This allows us to avoid injecting unsafe code into every macro
invocation, which seems desirable.
2021-05-03 13:52:34 +02:00
Chammika Mannakkara
105e894c0a
add missing doc tests
2021-05-02 13:50:03 +09:00
Crozet Sébastien
d59d438189
Add more conversion for glam types
...
Add Isometry3 <-> (Vec3, Quat)
Add Isometry2 <-> (Vec3, Quat)
Add Translation2/3/4 <-> Vec2/3/4
2021-04-27 13:21:46 +02:00
Crozet Sébastien
65b94ccb91
Add more conversions for translations
...
Add [T; D] <-> Translation<T, D>
Add Point<T, D> -> Translation<T, D>
2021-04-27 13:17:51 +02:00
Crozet Sébastien
db27a080f1
Cleanup conversions between points and static vectors.
2021-04-27 13:17:12 +02:00
Crozet Sébastien
09be376cd9
Add more conversion for Isometry
...
Add [T; D] -> Isometry<T, R, D>
Add SVector<T, D> -> Isometry<T, R, D>
Add Point<T, D> -> Isometry<T, R, D>
2021-04-27 13:16:44 +02:00
Crozet Sébastien
43cf22af28
Cleanup conversion between static arrays and static matrices.
2021-04-27 13:16:01 +02:00
Crozet Sébastien
f70e7f77d1
Fix serialization of DVector
2021-04-12 17:43:04 +02:00
Crozet Sébastien
c5c6c139ab
Release v0.26.0
2021-04-12 16:15:08 +02:00
Crozet Sébastien
95b021dbfb
Don't enable serde by default.
...
Don't enable `serde/std` by default.
Add a `serde-serialize-no-std` feature to enable serde without its default features.
2021-04-12 12:14:16 +02:00
Crozet Sébastien
ee1c0be2dd
Add a note about the PhantomData in Matrix.
2021-04-12 11:27:21 +02:00
Crozet Sébastien
2bef19ed5c
Deprecate the MatrixN alias.
2021-04-12 11:15:01 +02:00
Crozet Sébastien
7ec4497f92
Fix wrong alias.
2021-04-12 11:06:13 +02:00
Crozet Sébastien
5a1dbfe37d
Use explicit storage names in matrix aliases.
2021-04-12 10:34:15 +02:00
Crozet Sébastien
bc7db9d139
Mark as const-fn some constructors of Point, Translation, Quaternion
2021-04-12 10:32:17 +02:00
Crozet Sébastien
bedf48dbc2
Mark small matrix/vector "new" constractors as const-fn.
2021-04-12 09:18:17 +02:00
Crozet Sébastien
ad5b18ac77
Deny missing docs again.
2021-04-11 14:36:27 +02:00
Crozet Sébastien
600bb175e7
Fix compilation with the mint feature.
2021-04-11 14:35:10 +02:00
Crozet Sébastien
3d834e08c9
Run cargo fmt
2021-04-11 14:09:01 +02:00
Crozet Sébastien
cc4427e52b
Make matrix power work for non-owned matrices.
2021-04-11 14:07:06 +02:00
Crozet Sébastien
24d546d3b6
Rename generic parameter N -> T
2021-04-11 13:57:54 +02:00
Crozet Sébastien
23a7d7475b
First compiling version after migrating the geometry module to const-generics.
2021-04-11 13:53:45 +02:00
Crozet Sébastien
8abbb35b40
First pass to migrate the geometry module to const-generics.
2021-04-11 13:53:45 +02:00
Crozet Sébastien
35ec135d2c
Fix compilation after rebase.
2021-04-11 13:53:45 +02:00
Crozet Sébastien
d17088398a
Replace generic-array with a regular array based on min-const-generics.
2021-04-11 13:53:45 +02:00
Sébastien Crozet
b2dadffcf2
Merge pull request #864 from vks/idiomatic-rand
...
More idiomatic use of Rand
2021-04-11 13:52:48 +02:00
Sébastien Crozet
2ebba30117
Merge pull request #861 from jturner314/fix-cholesky-det-complex
...
Fix Cholesky::determinant for complex elements
2021-04-11 13:49:35 +02:00
Sébastien Crozet
b9a524427b
Merge pull request #859 from OfficialURL/dev
...
Added pow functions
2021-04-11 13:44:06 +02:00
Vinzent Steinberg
7417f6cbca
UnitComplex: More efficient sampling
2021-04-10 03:49:46 -03:00
Vinzent Steinberg
09f26385cc
Comment about faster impl for unit sphere sampling
2021-04-10 03:36:21 -03:00
Vinzent Steinberg
c8fe49b1e9
Add some comments about random variates
2021-04-10 03:36:21 -03:00
Vinzent Steinberg
fd3a752409
Make use of rand more idiomatic
...
This should improve performance and accuracy.
2021-04-10 03:13:46 -03:00
Violeta Hernández
341091f647
`pow_mut` now returns `Result`.
2021-04-10 00:12:26 -05:00
Violeta Hernández
81f2fc38d7
Use mul_to instead of square_buf
...
Didn't realize that this was something that was already implemented.
2021-04-09 23:59:22 -05:00
Violeta Hernández
15a63cb892
Memory improvements, extra comments.
...
The result of `multiplier ^ 2` is now written into a single buffer.
2021-04-09 23:43:59 -05:00
Vinzent Steinberg
260ee54288
Disable some tests if "rand" feature is disabled
...
This avoids some misleading errors for `cargo test`.
2021-04-10 01:00:12 -03:00
Jim Turner
cea3bdc8e5
Fix Cholesky::determinant for Complex elements
...
The previous implementation was correct only for real elements. The
Cholesky decomposition is `L L^H`, so the determinant is `det(L) *
det(L^H)`. Since `L` is a triangular matrix, `det(L)` is the product
of the diagonal elements of `L`. Since `L^H` is triangular and its
diagonal elements are the conjugates of the diagonal elements of `L`,
`det(L^H)` is the conjugate of `det(L)`. So, the overall determinant
is the product of the diagonal elements of `L` times its conjugate.
2021-04-09 14:28:16 -04:00
Jim Turner
50fed194f4
Add determinant method to Cholesky
2021-04-07 23:10:19 -04:00
Violeta Hernández
06b657ad49
Added pow_mut.
...
Actually, I think this will do.
2021-04-05 12:32:12 -05:00
Violeta Hernández
ab85766b5a
Added pow function.
...
I'll try adding some unchecked and in place variants soon.
2021-04-05 12:17:49 -05:00
Guilherme Salustiano
9947cd5b88
Add type aliases for unit vectors
2021-03-29 15:20:04 -03:00
Crozet Sébastien
b687c63bb2
Add a SIMD version of cap_magnitude: simd_cap_magnitude.
2021-03-06 19:16:22 +01:00
Crozet Sébastien
2dae1ca44f
Add conversion of Similarity from/to glam types.
2021-03-06 12:39:53 +01:00
Crozet Sébastien
bdf0de68cf
Add conversion of Rotation and UnitComplex from/to glam types.
2021-03-06 12:39:53 +01:00
Crozet Sébastien
729a8fd7f2
Add conversion from/to glam types + move glam/alga/mint impls to a "third_party" module.
2021-03-06 12:20:38 +01:00
Crozet Sébastien
f2c49aecb0
Add "cast" methods to cast the type of the components of most nalgebra types.
2021-03-05 17:08:46 +01:00
Crozet Sébastien
c32172b6b9
Make the rand dependency optional.
2021-03-02 12:25:12 +01:00
Crozet Sébastien
5b9b94c610
Release v0.25.0
2021-03-01 14:25:29 +01:00
Crozet Sébastien
6cfd2bca14
Use proptest for all nalgebra tests.
2021-02-28 17:52:14 +01:00
Crozet Sébastien
7b6b3649f2
Run cargo fmt.
2021-02-25 16:20:11 +01:00
Crozet Sébastien
6699039fec
Fix rebase-induced compilation error.
2021-02-25 15:51:13 +01:00
Crozet Sébastien
aeb9f7ea39
Add a matrix.udu() method to compute the UDU decomposition.
2021-02-25 15:49:24 +01:00
Crozet Sébastien
ab0d335b61
Fix tests for the UDU decomposition.
2021-02-25 15:48:44 +01:00
Christopher Rabotin
89ca2fe5fb
UDU only supported for Real matrices, not Complex
...
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
4ff4911ac3
Implement requested changes
...
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Chris
06861a9755
Update src/linalg/udu.rs
...
Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
7a49b9eeca
UDU: d now stored in VectorN instead of MatrixN
...
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
e9933e5c91
UDU: Expand to Dim from DimName
...
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
5a7ed61e9b
UDU impl: using 0-index nomenclature
...
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
a8d40423ea
Fixed UDU algorithm
...
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Christopher Rabotin
8dda6714b5
Untested UDU implementation
...
Pushing to trigger build
Signed-off-by: Christopher Rabotin <christopher.rabotin@gmail.com>
2021-02-25 15:48:44 +01:00
Sébastien Crozet
21cc428480
Merge pull request #803 from aweinstock314/no_unsound_assume_init
...
Propagate `mem::MaybeUninit` through the return types of `Allocator::…
2021-02-25 15:46:49 +01:00
Sébastien Crozet
fa2e025a1e
Merge pull request #824 from tpdickso/dual_quaternion
...
Implement additional `DualQuaternion` ops and `UnitDualQuaternion`
2021-02-25 15:46:34 +01:00
Sébastien Crozet
69e2ad6a44
Merge pull request #831 from iMplode-nZ/dev
...
Added bytemuck implementations for static storages.
2021-02-25 15:46:28 +01:00
Sébastien Crozet
bc6faa22f3
Merge pull request #797 from Recmo/remco/feat/double-ended-iter
...
impl DoubleEndedIterator for {MatrixIter, MatrixIterMut}
2021-02-25 15:46:11 +01:00
Sébastien Crozet
06f92ad1e3
Merge pull request #613 from russellb23/dev
...
QR factorizatio nwith column pivoting
2021-02-25 15:45:58 +01:00
Crozet Sébastien
a32f41bd41
Fix compilation when targetting no-std.
2021-02-25 15:03:35 +01:00
Crozet Sébastien
bf0f3163ce
Rename some of the variables in dual-quaternion doc-tests.
2021-02-25 14:49:01 +01:00
Crozet Sébastien
162a7ef09c
Fix compilation when the mint or alga features are enabled.
2021-02-25 14:30:04 +01:00
Crozet Sébastien
af448d2c70
Add bytemuck impls to points.
2021-02-25 14:19:20 +01:00
Crozet Sébastien
0b1e6f0b05
Run cargo fmt.
2021-02-25 14:16:57 +01:00
Crozet Sébastien
dc15261ec1
Move the bytemuck impls to GenericArray and add a transitive impl for matrices.
2021-02-25 14:10:34 +01:00
Crozet Sébastien
234e103e4b
Fix compilation of the sparse module.
2021-02-25 13:52:58 +01:00
Avi Weinstock
ee32f7d4cf
Run `cargo fmt`.
2021-02-25 13:42:23 +01:00
Avi Weinstock
cd12422d6f
Change `zero_or_uninitialized_generic` to `unimplemented_or_uninitialized_generic`, and use it instead of manually dispatching on `feature=no_unsound_assume_init` in functions without `N: Zero`.
2021-02-25 13:42:23 +01:00
Avi Weinstock
36a3ac814f
Propagate `mem::MaybeUninit` through the return types of `Allocator::allocate_uninitialized` and `Matrix::new_uninitialized_generic`.
...
Most call sites still invoke UB through `assume_init`. Said call sites instead invoke `unimplemented!()` if the `no_unsound_assume_init` feature is enabled, to make it easier to gradually fix them.
Progress towards #556 .
2021-02-25 13:42:23 +01:00
Remco Bloemen
b25c2aa78c
Fix inner size
2021-02-25 13:31:16 +01:00
Remco Bloemen
d5ca2019a3
impl FusedIterator
2021-02-25 13:31:16 +01:00
Remco Bloemen
eb3d787ed6
Fix inner_size computation
2021-02-25 13:31:16 +01:00
Remco Bloemen
d49af8e8b2
Implement next_back
2021-02-25 13:31:16 +01:00
Remco Bloemen
73d6ba0ca1
Dummy implementation of DoubleEndedIterator
2021-02-25 13:31:16 +01:00
Crozet Sébastien
598c217d75
Move the col_piv_qr method to the decomposition module.
2021-02-25 13:28:42 +01:00
Crozet Sébastien
693e6d0035
Run cargo fmt.
2021-02-25 12:59:14 +01:00
Sébastien Crozet
adc82845d1
Merge pull request #823 from Andlon/sparse-rework
...
Sparse rework: nalgebra-sparse
2021-02-25 12:58:28 +01:00
Crozet Sébastien
308d95386e
Fix all tests and the ColPivQR::solve.
2021-02-25 12:06:04 +01:00
russellb23
63a34528e0
Added test for QR factorization and fixed unpack issue
2021-02-25 11:31:37 +01:00
russellb23
1316133625
Removed unused imports
2021-02-25 11:31:37 +01:00
russellb23
a2f3e1ac26
Inverted sign in householder
2021-02-25 11:31:37 +01:00
russellb23
f8c0195f0f
QR factorization with column pivoting
2021-02-25 11:31:37 +01:00
Crozet Sébastien
bafa1dcd97
Re-export simba::SimdValue.
2021-02-22 14:27:18 +01:00
Crozet Sébastien
478921881f
Add approximate rotation composition for unit-quaternion.
2021-02-22 14:27:08 +01:00
Crozet Sébastien
9d930eb21a
Add a method to cap the magnitude of a vector.
2021-02-22 14:26:40 +01:00
Crozet Sébastien
6139372c38
Add from_basis_unchecked to rotation types.
2021-02-22 14:26:25 +01:00
iMplode nZ
1c0891bbbb
Added bytemuck for Unit and Quaternion.
2021-02-12 15:30:12 -08:00
iMplode nZ
c667b1f9c8
Added bytemuck implementations for static storages.
2021-02-10 20:12:24 -08:00
Crozet Sébastien
fb26d4d0fb
Update the htaml_root_url.
2021-01-29 13:56:40 +01:00
Terence
c408e09e28
update header comment for operators
2021-01-28 19:41:55 -05:00
Terence
ac92e68486
add new operators
2021-01-28 19:27:40 -05:00
Terence
ecda74f6b2
clippify
2021-01-28 18:50:34 -05:00
Terence
388b77108e
rustfmt
2021-01-28 18:46:14 -05:00
Terence
6be0365203
add integration test
2021-01-28 18:45:34 -05:00
Terence
12c259f0b4
Implement additional `DualQuaternion` ops and `UnitDualQuaternion`
...
This implements `UnitDualQuaternion` as an alternative to `Isometry3`
for representing 3D isometries, which also provides the `sclerp`
operation which can be used to perform screw-linear interpolation
between two unit dual quaternions.
2021-01-28 17:25:32 -05:00
Andreas Longva
646f62a293
rustfmt (nalgebra)
2021-01-26 09:49:01 +01:00
Andreas Longva
5dfe06897f
Rename nalgebra/proptest to /proptest-support
...
This gives us some freedom in the future, in case we need
additional dependencies for the proptest integration.
2021-01-26 09:49:01 +01:00
Andreas Longva
b2dbcf3168
Add D=Dynamic default and ::to_range_inclusive for DimRange (nalgebra)
2021-01-26 08:57:47 +01:00
Andreas Longva
f9ea2b4471
Initial proptest implementation for nalgebra
...
This introduces functionality for creating strategies for matrices and
vectors, as well as an implementation of Arbitrary.
Strategies for the geometric types (Point3, Quaternion etc.) are not
currently part of this contribution.
The current strategy implementation for matrices has some limitations
that lead to suboptimal shrinking behavior. This is documented in the
module-level docs, with some additional comments in the code.
2021-01-26 08:57:47 +01:00
Chinedu Francis Nwafili
b9513257b8
Serialize DQ to [N;8]
...
Closes #816
2020-12-18 12:19:38 -05:00
Chinedu Francis Nwafili
7ec5d00c3d
Clean up DualQuat bounds
2020-12-18 10:38:19 -05:00
Chinedu Francis Nwafili
89134efc3b
Store DQ as real and dual Quat
2020-12-18 10:09:56 -05:00
Chinedu Francis Nwafili
8036c56fda
Introduce DualQuaternion type
...
This commit introduces the `DualQuaternion` type, in line with the plan
laid out in [#487 ].
[#487 ]: https://github.com/dimforge/nalgebra/issues/487
2020-12-18 09:13:24 -05:00
Sébastien Crozet
88145b7f8c
Merge pull request #814 from dimforge/quaternion_partial_eq_fix
...
Fix the PartialEq impl for quaternions.
2020-12-18 12:29:38 +01:00
Sébastien Crozet
3899d92f5d
Merge pull request #815 from dimforge/isometry_inv_mul
...
Add a dedicated method for computing isometry1.inverse() * isometry2.
2020-12-18 12:08:34 +01:00
Sébastien Crozet
8c615289dc
Merge pull request #813 from dimforge/deserialize_uninit
...
Add workaround for the deserialization of a matrix containing an enum.
2020-12-18 12:06:39 +01:00
Crozet Sébastien
ed74ff7c99
Simplify trait bounds for quaternion indexing.
2020-12-18 12:06:27 +01:00
Crozet Sébastien
60708640d3
Add a dedicated method for computing isometry1.inverse() * isometry2.
...
It is more efficient that way.
2020-12-18 11:55:46 +01:00
Crozet Sébastien
b15a274a14
Add workaround for the deserialization of a matrix containing an enum.
2020-12-18 11:54:56 +01:00
Crozet Sébastien
67603be6ed
Fix the PartialEq impl for quaternions.
...
The double-covering property should only be taken into account for `UnitQuaternion` instead of `Quaternion` itself.
2020-12-18 11:38:33 +01:00
Südi Tamás
b01d01d486
update the version number in the documentation
...
from 0.21 to 0.23
2020-12-16 18:35:13 +01:00
Crozet Sébastien
651d318c26
Add sections to the Unit wrapper documentation
2020-11-21 12:19:04 +01:00
Crozet Sébastien
c1372c3041
Add sections to the UnitComplex documentation
2020-11-21 11:56:32 +01:00
Crozet Sébastien
99ac7a8e08
Add sections to the Rotation documentation
2020-11-21 11:56:32 +01:00
Crozet Sébastien
2a3d98bff8
Matrix, vector, isometry, and point aliases documentation: warn that the reader should take a look at the documentation of the aliased type too.
2020-11-20 17:46:03 +01:00
Crozet Sébastien
cf769522f8
Add sections to the documentations of Isometry and Point.
2020-11-20 17:45:11 +01:00
Crozet Sébastien
857ce13b63
Add DVector::from(Vec).
2020-11-19 16:28:06 +01:00
Philippe Renon
87ee014bd3
clippy: fix clone_on_copy warnings
2020-11-19 12:55:15 +01:00
Philippe Renon
bbc6a28f7d
clippy: fix len_without_is_empty warnings
2020-11-19 12:24:26 +01:00
Philippe Renon
6a5b418fbc
clippy: fix ptr_offset_with_cast warnings
2020-11-19 11:56:58 +01:00
Philippe Renon
f515cffad9
clippy: fix redundant_closure warnings
2020-11-19 11:43:08 +01:00
Philippe Renon
726b8eeecf
clippy: fix or_fun_call warnings
2020-11-19 11:43:08 +01:00
Philippe Renon
74a09c8a5e
clippy: fix ptr_offset_with_cast warnings
...
i.e. use of `offset` with a `usize` casted to an `isize`
2020-11-16 14:59:53 +01:00
Philippe Renon
f1211b0d99
clippy: remove unused imports
2020-11-16 14:46:04 +01:00
Philippe Renon
008c24204e
clippy: fix unreadable_literal warnings
2020-11-16 14:43:36 +01:00
Philippe Renon
de4a067d27
clippy: fix len_zero warnings
2020-11-16 12:11:24 +01:00
Philippe Renon
d577a18a45
clippy: fix or_fun_call warnings
2020-11-16 11:11:58 +01:00
Philippe Renon
5dff493515
clippy: fix just_underscores_and_digits warnings
2020-11-16 11:04:57 +01:00
Philippe Renon
cf54580fac
clippy: fix redundant_field_names warnings
2020-11-16 11:04:56 +01:00
Crozet Sébastien
0521051665
Fix wrong import of Signed an Zero.
2020-11-15 17:44:58 +01:00
Crozet Sébastien
17eb626018
Fix typo.
2020-11-15 17:25:29 +01:00
Crozet Sébastien
f2da993c8b
Reduce matrix and slice aliases depth to 1.
2020-11-15 17:23:46 +01:00
Crozet Sébastien
e852df6124
Add sections for most Matrix methods.
2020-11-15 16:57:49 +01:00
Crozet Sébastien
b8d1ae3a1f
Add aliases for matrices with only one dynamic dimension.
2020-11-13 18:35:23 +01:00
Crozet Sébastien
9a4cf0b69f
Reorganize matrix construction macros.
2020-11-13 18:34:47 +01:00
Crozet Sébastien
4c2192d9e0
Reorganize matrix slice macros.
2020-11-13 18:34:33 +01:00
Crozet Sébastien
45f2fc4f92
Move all matrix decomposition methods under a single impl.
2020-11-13 17:26:47 +01:00
Philippe Renon
04ce8b3f6a
clippy: fix suspicious_op_assign_impl errors (false positives)
2020-10-26 13:09:03 +01:00
Philippe Renon
d990aff44e
clippy: fix clippy::eq_op error (false positive)
2020-10-26 08:56:49 +01:00
Philippe Renon
74f01d2538
clippy: fix suspicious_arithmetic_impl errors (false positives)
2020-10-26 08:49:06 +01:00
Crozet Sébastien
8e483a5434
Fix reshaping test.
2020-10-25 16:31:10 +01:00
Crozet Sébastien
e89a26cbd0
Add doc-tests for reshape_generic.
2020-10-25 16:03:18 +01:00
Crozet Sébastien
5b3da9e2eb
Fix typo in comment.
2020-10-25 16:02:31 +01:00
Nathan Kent
4a6022d9bf
Add methods for in-place reshaping of matrices
...
There are two major additions in this commit. The first is a new storage
trait, `ReshapableStorage`, that can be implemented for storage types
that can be reshaped in-place. I have implemented this for both the
`ArrayStorage` and `VecStorage` types, as they are the most common and
they are just interpretations of a flat list.
The second is a `Matrix::reshape_generic` method that allows matrices to
be in-place reshaped provided that the underlying storage can handle it.
In practice, this means that the standard matrix types (`MatrixMN` and
`DMatrix`) can be resized to any size that has the same element count.
Resizing between array and vector storage is not implemented due to
`Storage` only being implemented for `VecStorage` variants where at
least one dimension is `Dynamic`.
Additionally, only the generic reshape function is added as it can be a
basis for other reshaping functions (see the resizing functions) and I
am not particularly in the mood to implement a variety of reshaping
methods.
2020-10-25 15:37:18 +01:00
Crozet Sébastien
c410a32c82
Fix doc-tests.
2020-10-25 14:15:26 +01:00
Crozet Sébastien
93f361cba8
Add missing slerp implementations.
2020-10-25 14:00:47 +01:00
Crozet Sébastien
097ae44efa
Add `lerp_slerp` to isometries for interpolation.
2020-10-25 11:39:27 +01:00
Crozet Sébastien
9c93a58b5d
Add Vector::ith_axis to build an unit vector with its i-th component set to 1.
2020-10-25 11:25:38 +01:00
Crozet Sébastien
55689c238a
Add the conversion of a translation to an isometry.
2020-10-25 11:25:20 +01:00
Crozet Sébastien
503040b8bc
Add Point.map(f) and Point.apply(f).
2020-10-25 11:25:20 +01:00
Crozet Sébastien
a623e63d08
Add the conversion of an array of four elements to a quaternion.
2020-10-25 11:25:20 +01:00
Crozet Sébastien
3d82c4335e
Add inverse_transform_unit_vector to rotations and isometries.
2020-10-25 11:25:20 +01:00
Sébastien Crozet
eb94084760
Merge pull request #756 from dayrover/cholesky
...
Remove unnecessary Trait bound DimSub<Dynamic> in fn cholesky(self)
2020-10-24 18:23:03 +02:00
Sébastien Crozet
c240923abb
Merge pull request #754 from TheZoq2/patch-1
...
Update version in docs header
2020-10-24 18:22:36 +02:00
Crozet Sébastien
4da2bfcb71
Add missing dot-product dimension check.
...
Fix #776
2020-10-13 17:29:00 +02:00
Crozet Sébastien
343fb2f24f
Ensure Isometry implements Copy when targeting no-std.
...
Fix #774 .
2020-10-13 10:12:14 +02:00
Philippe Renon
822f114254
perspective: fix copy/paste error
2020-10-11 11:57:49 +02:00
Philippe Renon
0b0f248267
clippy: fix #identity_op
2020-10-11 11:42:22 +02:00
Philippe Renon
1624a87efa
clippy: fix #needless_return
2020-10-11 11:42:22 +02:00
Philippe Renon
6293d3375b
clippy: fix #redundant_field_names
2020-10-11 11:42:22 +02:00
Philippe Renon
fb15658cc9
fix typo: apsect should be aspect
2020-10-11 11:42:22 +02:00
Michael Morgan
c6d5d8a1a6
Remove unsafe statement in Point::deref by forwarding to Vector.
...
Since both impls are #[inline], this should have no performance impact.
2020-10-09 15:27:02 -04:00
Sébastien Crozet
a8f73cb7b2
Run cargo fmt.
2020-08-25 20:47:07 +02:00
Sébastien Crozet
46d1cf2231
Add a libm and libm-force feature to transitively enable the corresponding simba feature.
2020-08-25 20:46:35 +02:00
sebcrozet
7c69cbf326
Don't depend on serde_derive explicitly.
2020-08-25 20:46:04 +02:00
Sébastien Crozet
6300d34356
Add the ::ith constructor for vectors.
...
This initializes a vectors to zero except the i-th element set to a given value.
2020-08-25 20:46:04 +02:00
Michael Stevens
0a0799f76a
Remove unnecessary Trait bound DimSub<Dynamic> in fn cholesky(self)
2020-08-03 18:20:26 +02:00
Frans Skarman
0f6c0e5233
Update version in docs header
2020-07-31 14:14:39 +02:00
Sébastien Crozet
2ab82befe4
Merge pull request #631 from Andlon/matrixcompare
...
Basic matrixcompare functionality
2020-07-17 01:10:04 -07:00
danielschlaugies
f9f7169558
Add matrix exponential for complex matrices ( #744 )
...
Added matrix exponential for complex matrices.
2020-07-16 10:29:52 +02:00
CGMossa
bc70258e5c
Why Option<_> ( #746 )
...
Add a comment about why `UnitQuaternion::rotation_between` returns an Option.
2020-07-16 09:27:06 +02:00
Adam Nemecek
1cf7d12695
unrolled new_nonuniform_scaling_wrt_point
2020-07-05 13:29:08 -07:00
Adam Nemecek
6a1c4f84af
cargo fmt
2020-07-02 10:31:30 -07:00
Adam Nemecek
4653f772bd
added new_nonuniform_scaling_wrt_point to Matrix3 & Matrix4
2020-07-02 10:16:18 -07:00
Andreas Longva
9196759bc2
Improve matrixcompare example
2020-06-29 19:03:20 +02:00
Andreas Longva
f6730dac1f
Basic matrixcompare functionality
2020-06-29 18:50:19 +02:00
Jenan Wise
85a64fb517
More verbose DMatrix dim asserts where possible.
...
Previously, most dimension mismatch asserts used raw `assert!` and did
not include the mismatching dimensions in the panic message. When using
dynamic matrices, this led to somewhat-opaque panics such as:
```rust
let m1 = DMatrix::<f32>::zeros(2, 3);
let m2 = DMatrix::<f32>::zeros(5, 10);
m1 + m2 // panic: Matrix addition/subtraction dimensions mismatch.
```
This patch adds dimension information in the panic messages wherever
doing so did not add additional bounds checks, mostly by simply changing
`assert!(a == b, ...)` cases to `assert_eq!`. After:
```rust
// panic: assertion failed: `(left == right)`
// left: `(2, 3)`,
// right: `(5, 10)`: Matrix addition/subtraction dimensions mismatch.
```
Note that the `gemv` and `ger` were not updated, as they are called from
within other functions on subset matricies -- e.g., `gemv` is called
from `gemm` which is called from `mul_to` . Including dimension
information in the `gemv` panic messages would be confusing to
`mul` / `mul_to` users, because it would include dimensions of the column
vectors that `gemm` passes to `gemv` rather than of the original `mul`
arguments. A fix would be to add bounds checks to `mul_to`, but that may
have performance and redundancy implications, so is left to another
patch.
2020-06-22 17:18:53 -07:00
sebcrozet
2c2d1e4f07
Run cargo fmt.
2020-06-07 09:07:25 +02:00
Sébastien Crozet
3359e25435
Cholesky: add unchecked construction compatible with AoSoA SIMD.
2020-06-07 09:05:10 +02:00
Sébastien Crozet
423b4b27b0
Merge pull request #585 from fusion-engineering-forks/pr-default
2020-06-07 08:58:47 +02:00
Chris Hodapp
7363caba17
Fix doc typo (v is right-singular vectors, not left)
2020-04-21 10:23:00 -04:00
sebcrozet
6dc739b70b
Remove unused allocator bound.
2020-04-21 10:37:14 +02:00
sebcrozet
f4c0897764
Fix compilation of matrix exponential when targetting no-std.
2020-04-21 10:35:20 +02:00
Fredrik Jansson
583a8fb110
Removed unsafe immutable hack
2020-04-12 13:27:11 +02:00
Fredrik Jansson
e914afe2af
Added support for dynamic matrices
2020-04-12 11:59:06 +02:00
Fredrik Jansson
0a3ee99cdb
Changed dimension name R to D
...
Changed N::from_x to crate::convert
2020-04-12 11:46:00 +02:00
Fredrik Jansson
4ec94408b5
Pub use of exp in the linalg module
2020-04-07 09:41:32 +02:00
Fredrik Jansson
b3ef66fd14
Fixed bug in onenorm_matrix_power_norm
2020-04-07 09:41:32 +02:00
Fredrik Jansson
e156561677
one_norm is not a public function
2020-04-07 09:41:32 +02:00
Fredrik Jansson
2696ffd7a1
Fixed bug by introducing one norm
2020-04-07 09:41:32 +02:00
Fredrik Jansson
c0a6df55b1
Addition of matrix exponent for static size matrices.
2020-04-07 09:41:32 +02:00
sebcrozet
677f355143
Run rustfmt.
2020-04-05 23:19:10 +02:00
Sébastien Crozet
b81aed767f
Merge pull request #713 from rustsim/soa_simd
...
Switch to Simba and make the base and geometry modules mostly SIMD AoSoA friendly.
2020-04-05 21:16:48 +02:00
sebcrozet
bbb3be512e
Run cargo fmt.
2020-04-05 18:49:48 +02:00
sebcrozet
691f58b622
Fix compilation of tests.
2020-04-05 18:33:03 +02:00
sebcrozet
2c03353b30
Add missing docs.
2020-04-05 18:02:03 +02:00
sebcrozet
c5dad7f960
Re-add all the alga trait impls behind a feature.
2020-04-05 17:53:27 +02:00
sebcrozet
191ccbf551
Fix warnings and compilation with the `arbitrary` feature.
2020-04-05 17:18:50 +02:00
sebcrozet
d48a644d5c
Add missing implementatino of SimdValue for UnitQuaternion.
2020-04-05 16:35:26 +02:00
sebcrozet
8f662a1a61
Rename translation simba impl file.
2020-04-05 16:35:16 +02:00
Chia-Sheng Chen
65bc037b5d
Supplement the document of fn as_ptr
2020-04-03 17:56:08 +08:00
Chia-Sheng Chen
b996a6f0ce
Supplement the document of fn vector_to_matrix_index
2020-04-03 17:39:49 +08:00
Fan Jiang
0e69df2999
Update format
2020-04-01 01:14:32 -04:00
Fan Jiang
451c61e293
Add TODO notice and reference to issue
2020-03-31 17:04:10 -04:00
Fan Jiang
526dac1914
Be more specific on what is happening here
2020-03-31 17:03:07 -04:00
Fan Jiang
74bfd9cad6
Change to the recommended style of using MaybeUninit
2020-03-31 16:50:26 -04:00
Sébastien Crozet
a095a7dfcd
Re-add some missing transform multiplications.
2020-03-24 19:06:28 +01:00
Sébastien Crozet
81bb9e94f8
Re-add orthogonalization and subspace basis computation.
2020-03-24 19:06:05 +01:00
Sébastien Crozet
8ef46d62cb
Re-add inf/sup.
2020-03-24 19:05:47 +01:00
Sébastien Crozet
cdbc9da46c
Add From<[...; .]> impls for AoSoA Isometry and Similarity.
2020-03-24 10:16:31 +01:00
sebcrozet
b3f347e45e
Add From<[...; .]> impls for all SIMD geometric sructures up to the isometry (excluded).
2020-03-23 09:16:01 +01:00
sebcrozet
b1857e6a36
Fix compilation of tests.
2020-03-21 23:44:24 +01:00
sebcrozet
cbcf4d7c27
Make Isometry, Unit/Quaternion, Rotation, Similarity, and UnitComplex partially compatible with AoSoA.
2020-03-21 23:35:41 +01:00
sebcrozet
f8cd26cfa9
Replace alga by simba.
2020-03-21 12:16:46 +01:00
Sébastien Crozet
002e735c76
Make blas, matrix, norm, and ops.rs compatible with SoA Simd.
2020-03-17 17:58:36 +01:00
Fan Jiang
fe75c60325
Fix warnings on latest rustc
2020-03-10 18:20:52 -04:00
Sébastien Crozet
155ba3a50a
Merge pull request #698 from rustsim/try_set_magnitude
...
Add a method to set the magnitude of a vector.
2020-03-02 12:45:39 +01:00
Sébastien Crozet
1d64de3822
Merge pull request #609 from aplund/dev
...
Refactor row_sum() and column_sum() to cover more cases.
2020-03-02 12:45:39 +01:00
sebcrozet
b09d9770f7
Add a method to set the magnitude of a vector.
2020-03-02 12:45:39 +01:00
Sébastien Crozet
a67c451ae5
Merge pull request #607 from cauthmann/dev
...
Add #[must_use] to all functions with a _mut variant (#598 )
2020-03-02 12:45:39 +01:00
nnmm
54f1c71742
Small docs improvements
2020-03-02 12:45:39 +01:00
Ilya Epifanov
a62d9d1ad1
GivensRotation::new() should default to (I, 0)
2020-03-02 12:45:38 +01:00
S.Brandeis
6d608cb99f
Revert "Broader PartialEq implementation for types implementing Dim trait"
...
This reverts commit 6f5c9c0f
2020-03-02 12:45:38 +01:00
S.Brandeis
08d990f276
Make shape check a one-liner in impl PartialEq for Matrix
2020-03-02 12:45:38 +01:00
S.Brandeis
d35ef06f44
Remove unnecessary PartialEq trait use in PartialEq impl for Matrix
2020-03-02 12:45:38 +01:00
S.Brandeis
403e63dc5e
Remove trailing whitespace
2020-03-02 12:45:38 +01:00
S.Brandeis
8a3f6a12cd
Refactor and move named_dimension! macro
2020-03-02 12:45:38 +01:00
S.Brandeis
50ea55e877
Modify PartialEq for Matrix to allow comparison with all types of Matrix
2020-03-02 12:45:38 +01:00
S.Brandeis
2b8410e08b
Fix bug - PartialEq for Matrix no longer panics when shapes do not match
2020-03-02 12:45:38 +01:00
S.Brandeis
39a433c0e7
Broader PartialEq implementation for types implementing Dim trait
2020-03-02 12:45:38 +01:00
Sébastien Crozet
12fa938516
Merge pull request #686 from rustsim/fix_vector_slerp
...
Fix slerp for regular vectors.
2020-03-02 12:45:38 +01:00
sebcrozet
e911bfc7db
Fix doc-test for vector slerp.
2020-03-02 12:45:38 +01:00
sebcrozet
5f4a0c7b13
Fix slerp for regular vectors.
2020-03-02 12:45:38 +01:00
Sébastien Crozet
9ec8d4dbd8
Merge pull request #688 from rustsim/matrix_to_slice
...
Add matrix/slice conversions.
2020-03-02 12:45:37 +01:00
Mara Bos
43747b4f59
Implement Extend<&N> for VecStorage.
...
Extend<N> was already implemented, but nalgebra vectors/matrices give
iterators that give &N, not N, so implementing Extend<&N> as well makes
it easier to use.
It seems common practice to do so: The standard library's Vec also
implments Extend for both T and &T.
2020-03-02 12:45:37 +01:00
Sébastien Crozet
2728827a45
Merge pull request #684 from aweinstock314/scalar-inlined-clone
...
Add inlined_clone to Scalar, and relax bounds from `Scalar + Copy` to…
2020-03-02 12:45:37 +01:00
sebcrozet
8bf94f7afb
Add matrix/slice conversions.
...
Fix #687 .
2020-03-02 12:45:37 +01:00
Sébastien Crozet
999c48e6ed
Merge pull request #680 from aweinstock314/copy-scalar-separation
...
Move `Copy` constraint from the definition of `Scalar` to all its use…
2020-03-02 12:45:37 +01:00
Avi Weinstock
774f4da3e2
Add `Clone` to `Scalar`, providing a default implementation of `inlined_clone`. Change `Scalar + Clone` bounds to just `Scalar`.
2020-03-02 12:45:37 +01:00
Avi Weinstock
52aac8b975
Add inlined_clone to Scalar, and relax bounds from `Scalar + Copy` to `Scalar + Clone` nearly everywhere.
...
The various nalgebra-lapack FooScalars are still Copy because they make use of uninitialized memory.
nalgebgra-glm Number still uses Copy because upstream `approx` requires it.
2020-03-02 12:45:37 +01:00
Aaron Hill
6bb355f4d0
Fix some out-of-bounds `offset` calls
...
After we yield the final element from the iterator, we don't offset
`ptr` agian, to avoid having it go out-of-bounds.
However, `inner_end` may be several elements out-of-bounds, depending on
the value of `size`. Therefore, we use `wrapping_offset` to avoid
undefined behavior.
2020-03-02 12:45:37 +01:00
Avi Weinstock
6c236af696
Add Scalar + Copy bounds to code that's under feature flags.
...
`./ci/test.sh` now passes locally.
Refactoring done via the following sed commands:
```bash
export RELEVANT_SOURCEFILES="$(find src -name '*.rs') $(find examples -name '*.rs')"
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Arbitrary\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Serialize\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Deserialize\)/N\1: Scalar + Copy + \2/' $f; do
export RELEVANT_SOURCEFILES="$(find nalgebra-glm -name '*.rs')"
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar,/N\1: Scalar + Copy,/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar>/N\1: Scalar + Copy>/' $f; done
for f in algebra-glm/src/traits.rs; do sed -i 's/Scalar + Ring/Scalar + Copy + Ring>/' $f; done # Number trait definition
```
2020-03-02 12:45:37 +01:00
Sébastien Crozet
e0db624031
Merge pull request #662 from Aaron1011/fix/final-offset
...
Don't call 'offset' on a dangling pointer
2020-03-02 12:45:37 +01:00
Avi Weinstock
7d99015473
Move `Copy` constraint from the definition of `Scalar` to all its use-sites.
...
This should semantically be a no-op, but enables refactorings to use non-Copy scalars on a case-by-case basis.
Also, the only instance of a `One + Zero` trait bound was changed into a `Zero + One` bound to match the others.
The following sed scripts were used in the refactoring (with each clause added to reduce the error count of `cargo check`):
```bash
export RELEVANT_SOURCEFILES="$(find src -name '*.rs') $(find examples -name '*.rs')"
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar,/N: Scalar+Copy,/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + Field/N: Scalar + Copy + Field/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + Zero/N: Scalar + Copy + Zero/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + Closed/N: Scalar + Copy + Closed/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + Eq/N: Scalar + Copy + Eq/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + PartialOrd/N: Scalar + Copy + PartialOrd/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: *Scalar + Zero/N: Scalar + Copy + Zero/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + PartialEq/N: Scalar + Copy + PartialEq/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar>/N: Scalar+Copy>/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: Scalar + $bound/N: Scalar + Copy + $bound/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: *Scalar + $bound/N: Scalar + Copy + $bound/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\): *Scalar,/N\1: Scalar+Copy,/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N: *Scalar + $trait/N: Scalar + Copy + $trait/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\): *Scalar + Superset/N\1: Scalar + Copy + Superset/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\): *Scalar + \([a-zA-Z]*Eq\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \([a-zA-Z]*Eq\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(hash::\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar {/N\1: Scalar + Copy {/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Zero\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Bounded\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Lattice\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Meet\|Join\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(fmt::\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Ring\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Hash\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Send\|Sync\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/One + Zero/Zero + One/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \(Zero\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar + \($marker\)/N\1: Scalar + Copy + \2/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/N\([0-9]\?\): *Scalar>/N\1: Scalar + Copy>/' $f; done
for f in $RELEVANT_SOURCEFILES; do sed -i 's/Scalar+Copy/Scalar + Copy/' $f; done
```
2020-03-02 12:45:37 +01:00
Sébastien Crozet
5a0ee23e3b
Fix Vector::axpy for noncommutative cases ( #648 )
...
Fix Vector::axpy for noncommutative cases
2020-03-02 12:45:37 +01:00
Aaron Hill
e981283500
Switch to `wrapping_offset` instead of unsafe `offset`
2020-03-02 12:45:37 +01:00
Sébastien Crozet
ef3406cc8f
Cholupdate ( #673 )
...
Cholupdate
2020-03-02 12:45:37 +01:00
Jakub Konka
fe65b1c129
Add Vector::axcpy method
...
The added method `Vector::axcpy` generalises `Vector::gemv` to
noncommutative cases since it allows us to write for `gemv`
`self.axcpy(alpha, &col2, val, beta)`, instead the usual
`self.axpy(alpha * val, &col2, beta)`. Hence, `axcpy` preserves the
order of scalar multiplication which is important for applications where
commutativity is not guaranteed (e.g., matrices of quaternions, etc.).
This commmit also removes helpers `array_axpy` and `array_ax`, and
replaces them with `array_axcpy` and `array_axc` respectively, which
like above preserve the order of scalar multiplication.
Finally, `Vector::axpy` is preserved, however, now expressed in terms of
`Vector::axcpy` like so:
```
self.axcpy(alpha * val, &col2, beta)
```
2020-03-02 12:45:37 +01:00
Aaron Hill
4e25bd87fb
Don't call 'offset' on a dangling pointer
...
When creating a matrix with only one zero dimension, we end up with a
matrix with a total size of zero, but a non-zero stride for elements.
While such a matrix can never actually have any elements, we need to be
careful with how we use the pointer associated with it.
Since such a pointer will always be dangling, it can never be used with `ptr.offset`,
which requires that the pointer be in-bounds or one passed the end of an
allocation. Violating this results in undefined behavior.
This commit adds in checks before the uses of `ptr.offset`. If we ever
need to offset from a pointer when our actual allocation size is zero,
we skip offsetting, and return the original pointer. This is fine
because any actual use of the original or offsetted pointer would
already be undefined behavior - we shoul never be trying to dereference
the pointer associated with a zero-size matrix.
This issue was caught be running `cargo miri test` on the project.
2020-03-02 12:45:37 +01:00
Jakub Konka
e1c8e1bccf
Fix Vector::axpy for noncommutative cases
...
One example would be performing simple matrix multiplication
over a division algebra such as quaternions.
2020-03-02 12:45:37 +01:00
Nestor Demeure
50ad84e4b1
Update cholesky.rs
...
corrected typo ni doc for `xx_rank_one_update`
2020-03-02 12:45:36 +01:00
Sébastien Crozet
d78309b1fd
Merge pull request #669 from daingun/patch-2
...
Use same algorithm to solve 2x2 eigenvalue problem
2020-03-02 12:45:36 +01:00
sebcrozet
cd8fc9285f
Add some missing spaces.
2020-03-02 12:45:36 +01:00
daingun
a5b2a4ceb7
Merge pull request #1 from daingun/patch-1
...
Correct Schur decomposition for 2x2 matrices
2020-03-02 12:45:36 +01:00
sebcrozet
b96159aab3
Fix Cholesky for no-std platforms.
2020-03-02 12:45:36 +01:00
daingun
50417494ec
Use same algorithm to solve 2x2 eigenvalue problem
...
The eigenvalue problem is solved in two different method that use different methods
to calculate the discriminant of the solution to the quadratic equation.
Use the method whose computation is considered more stable.
2020-03-02 12:45:36 +01:00
daingun
667c49d0e1
Correct Schur decomposition for 2x2 matrices
...
Due to rounding and possible loss of precision the lower left element of the 2x2 matrix
may be different from zero.
2020-03-02 12:45:36 +01:00
Nestor Demeure
59c6a98615
finished cleaning
2020-03-02 12:45:36 +01:00
Nestor Demeure
3d08a80d8d
needs faster matrix initialization
2020-03-02 12:45:36 +01:00
Nestor Demeure
f54faedc32
tests pass, needs cleanup
2020-03-02 12:45:36 +01:00