Commit Graph

1314 Commits

Author SHA1 Message Date
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