- Minor refactoring.
- Tweaked
dsga.natvis
for better debugging experience. - Changed usage of
std::array::operator []
tostd::array::at()
for bounds checking. - Overhauled
dsga::mix()
to use a faster algorithm thanstd::lerp()
.
- Extracted
dsga::invoke()
to its own example header, and modified it to work on a wide range of inputs. - Made all lambda captures specific.
- Added
dsga::compXor()
to perform xor operations on boolean values (as opposed to bitwise xor ^) - Added
dsga::invoke()
which returns a vector created by invoking an operation element-wise to a variable number of vectors (there must be at least 1) that are all the same size, but might be of different types - Upgraded to cxcm v1.2.0
- Upgraded to cxcm v1.1.10
- Replaced home-brew asserts with exceptions. Attempting to make safer through bounds checking and other input checking, enforced by throwing exceptions.
- Upgraded to cxcm v1.1.8
- Reverted major changes between v2.0.5 and v2.1.4, so we no longer have the view structs that wrap a pointer. Wrapping a pointer turned the data structures from owning to non-owning for the view structs, but we want the vector and matrix structs to be owning. The point of the view experiment was built on lack of insight on the nature of owning vs. non-owning and what this library was trying to achieve.
- Updated/refacatored some examples.
- Minor README refactoring.
- Fixed wrong matrix type (reversed dimensions) being returned from
outerProduct()
.
- Added bool return types for a few lambdas.
- Renamed
logicalNot()
tocompNot()
. DeprecatedlogicalNot()
. - Added
compAnd()
andcompOr()
functions to complementcompNot()
. - Added missing scalar versions of non-geometric vector functions.
- Added some asserts.
- Tolerance checking functions moved to examples/tolerance.hxx.
- Upgraded to cxcm v1.1.4.
- Updated example iostream formatters for boolalpha output when appropriate.
- Added Intel's icx/icpx compiler (for Windows) as one of the test compilers.
- Potentially breaking change: removed an implicit
dsga::basic_matrix
constructor, now requiring the use of a constructor that is explicit. - Minor doc and repo maintenance.
- Added
query()
function (not in GLSL norstd::valarray
) to vector_base. It works likeapply()
, but expects a boolean predicate, and returns a vector of boolean values instead of element type T. - Upgraded to cxcm v1.1.3.
- Minor refactoring.
- Updated example
iostream
andstd::format
output to look like the c++23 std::format style for ranges. - Updated the MSVC debugger visualizer (dsga.natvis) to look like the c++23 std::format style for ranges.
- Minor refactoring of some examples.
- Large Breaking Change - minimized how vectors of length == 1 behave as vectors. Most dsga operations and functions treat length == 1 vectors as scalars, returning scalar results (mostly through refactoring the underlying execution machinery). Use of the non-GLSL types iscal, uscal, bscal, scal, fscal, dscal, etc., is generally discouraged.
- Small Breaking Change - reverted/removed
std::initializer_list
constructors added in v1.5.0. - Moved vector relational functions above the other vector functions (for use in assertions).
- Added
within_tolerance()
comparison functions, that fit well withwithin_distance()
andwithin_box()
. - Upgraded to cxcm v1.1.2.
- Minor type constraint (concepts) refactoring.
- Other minor refactoring.
- Added changelog.
- Small Breaking Change - added
std::initializer_list
constructors tobasic_vector
andbasic_matrix
- if not enough components, then fill rest with zeros - if too many components, just use the components necessary to fill the vector or matrix. - Fixed
indexed_vector
iterator classes to use signed types for indexing into storage (fixes iterator subtraction andreverse_iterator
usage, as the iterators are random-access).
- Minor refactoring.
- Comment removal and/or updating.
- Removed Microsoft VS2019 support (latest version of VS2019 does not compile dsga).
- Minor type constraint (concepts) refactoring.
- Updating copyright dates.