Vladimír Vondruš
5513eba398
Math: packed debug output for angles, matrices and vectors.
...
Not documenting this publicly as it has a certain smell (needs better
naming, mainly), but I need this for a less verbose output in certain
tools.
4 years ago
Vladimír Vondruš
822fa0d644
Updated copyright year.
4 years ago
Vladimír Vondruš
08a6e7d957
Math: explicit test that all types are trivially copyable.
...
I saw some copy constructors here and there and wasn't sure.
5 years ago
Vladimír Vondruš
7072befbdb
Math: generalize slicing and expanding to arbitrarily-sized matrices.
...
Originally was done only for square matrices, but now I need that for
converting 3x3 -> 3x4 and back (UBO packing, ugh ugh), so let's
generalize.
5 years ago
Vladimír Vondruš
a347a2b3bd
Math: make it possible to create an identity RectangularMatrix as well.
5 years ago
Vladimír Vondruš
ed9deff432
Test: adapt to a less shitty CORRADE_COMPARE().
5 years ago
Vladimír Vondruš
3d136503d8
Updated copyright year.
5 years ago
Vladimír Vondruš
1026aee80e
Moved the NoInit tag from Math to the root namespace.
...
The old one is deprecated, and will be removed in a future release.
Unfortunately, to avoid deprecation warnings, all use of NoInit in the
Math library temporarily have to be Magnum::NoInit This will be cleaned
up when the deprecated alias is removed.
6 years ago
Vladimír Vondruš
19e0e96d74
Updated copyright year.
6 years ago
Vladimír Vondruš
36ba5f4333
Math: ensure ZeroInit and IdentityInit constructors are explicit.
...
Like NoInit ones. Not sure what I was doing there.
7 years ago
Vladimír Vondruš
3626562e1d
Adapted to Corrade changes.
...
Mostly missing includes now.
7 years ago
Vladimír Vondruš
64bc7f9c8e
Math: moved configuration value parsers to a dedicated header.
...
There's a lot of string operations and that's nothing good to have
included everywhere. Should speed up the compilation quite a bit.
7 years ago
Vladimír Vondruš
2149f7b869
Wrap all tests in unnamed namespaces.
...
This makes the compiler warn about test cases that aren't ever used,
which is a good thing.
7 years ago
Vladimír Vondruš
e6b7aa12fa
Updated copyright year.
7 years ago
Borislav Stanimirov
f7f2ab8cb5
Math: added StrictWeakOrdering for math types
8 years ago
Vladimír Vondruš
623fa97970
Updated copyright year.
8 years ago
Vladimír Vondruš
06a7677fbe
Math: test underflow/overflow when parsing vector/matrix from Configuration.
...
Fails as overflow is not handled.
9 years ago
Vladimír Vondruš
7a16273e5d
Updated copyright year.
9 years ago
Vladimír Vondruš
ae9095de16
Remove most of the "MSVC 2015 can't handle {} here" workarounds.
9 years ago
Vladimír Vondruš
aa69bbcc19
Math: ability to create matrices with one value for all components.
...
In order to do that with the previous API, one had to write an
abomination like
auto a = Matrix4x4::fromVector(Math::Vector<16, Float>{0.5f});
Ugh.
9 years ago
Vladimír Vondruš
61e511dbc4
Math: component-wise comparison for RectangularMatrix.
...
Required for TestSuite::Compare::Around.
9 years ago
Vladimír Vondruš
3cedefe14b
Math: remove GCC constexpr workaround from the tests.
10 years ago
Vladimír Vondruš
70ef473710
Math: verify that the NoInit constructors are explicit.
10 years ago
Vladimír Vondruš
e9a2623e02
Math: expect NoInit test failures on GCC 6.1+ with optimizations enabled.
...
It's nothing harmful, just inefficient.
10 years ago
Vladimír Vondruš
9fdf467c59
Math: added *Matrix::setRow().
...
Row equivalent for the mutable operator[]().
10 years ago
Vladimír Vondruš
40d60f6a3f
Math: make all constructor noexcept and test their behavior.
10 years ago
Vladimír Vondruš
bf393fad59
Math: fix/workaround constexpr test compilation on MSVC 2015.
10 years ago
Vladimír Vondruš
951f116f5b
Math: added RectangularMatrix::flipped{Cols,Rows}().
10 years ago
Vladimír Vondruš
23646e6690
Hell, this project is big.
10 years ago
Vladimír Vondruš
6e8c16c960
MSVC 2015 Update 1: fixed nearly all constexpr bugs.
11 years ago
Vladimír Vondruš
d5359a2c36
Math: update and document subclass implementation macro tests.
11 years ago
Vladimír Vondruš
b2604bb903
MSVC 2015 compatibility: issues with delegating constexpr tag constructors.
...
Fixed-size constructors were worked around, the rest is now impossible
to have constexpr.
11 years ago
Vladimír Vondruš
9136007371
MSVC 2015 compatibility: apparently dereferencing pointer is verboten.
11 years ago
Vladimír Vondruš
d7e507a2a7
MSVC 2015 compatibility: Math copy/conversion constexpr issues.
...
I don't know why, but marking the output of copy constructor of any
subclass or output of conversion operator of any class as constexpr
causes MSVC to complain about non-constant expression.
Probably just another bug.
11 years ago
Vladimír Vondruš
000d8f8129
MSVC 2015 compatibility: Math external conversion constexpr issues.
...
Caused by inability to delegate constexpr constructors. Subclasses are
okay, fortunately.
11 years ago
Vladimír Vondruš
d805e87f21
MSVC 2015 compatibility: Math conversion constructor constexpr issues.
...
Some could be worked around, but the rest is prevented by inability to
delegate constexpr constructors.
11 years ago
Vladimír Vondruš
a89a692ddd
MSVC 2013 compatibility: {}-related issues.
11 years ago
Vladimír Vondruš
3b5e650af5
Math: fix compilation of tests under libc++.
...
std::forward() is not constexpr in C++11.
11 years ago
Vladimír Vondruš
911ed52413
Math: test constexpr-ness of subclass types.
...
Fails with libc++ because std::forward() is not constexpr in C++11 (yes,
I'm adding the test solely because of that).
11 years ago
Vladimír Vondruš
1b0da5b2df
Math: ability to construct all types without initializing the contents.
...
Useful for squeezing out last bits of performance, e.g. in this case:
Vector3 a;
a[0] = something++;
a[1] = something++;
a[2] = something++;
In the code all elements are first zeroed out and then overwritten
later, thus it might be good to avoid the zero-initialization:
Vector3 a{Math::NoInit};
a[0] = something++;
a[1] = something++;
a[2] = something++;
This will of course be more useful in far larger data types and arrays
of these.
11 years ago
Vladimír Vondruš
3a8ac02909
Math: more explicit default zero/identity constructors.
...
Some classes are by default constructed zero-filled while other are set
to identity and the only way to to check this is to look into the
documentation. This changes the default constructor of all classes to
take an optional "tag" which acts as documentation about how the type is
constructed. Note that this result in no behavioral changes, just
ability to be more explicit when writing the code. Example:
// These two are equivalent
Quaternion q1;
Quaternion q2{Math::IdentityInit};
// These two are equivalent
Vector4 vec1;
Vector4 vec2{Math::ZeroInit};
Matrix4 a{Math::IdentityInit, 2}; // 2 on diagonal
Matrix4 b{Math::ZeroInit}; // all zero
This functionality was already present in some ugly form in Matrix,
Matrix3 and Matrix4 classes. It was long and ugly to write, so it is
now generalized into the new Math::IdentityInit and Math::ZeroInit tags,
the original Matrix::IdentityType, Matrix::Identity, Matrix::ZeroType
and Matrix::Zero are deprecated and will be removed in the future
release.
Math::Matrix<7, Int> m{Math::Matrix<7, Int>::Identity}; // before
Math::Matrix<7, Int> m{Math::IdentityInit}; // now
11 years ago
Vladimír Vondruš
1a389f7a00
Math: work around bug in GCC 5.1 which broke the tests.
...
Reported here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66450 .
11 years ago
Vladimír Vondruš
229d0b130c
Math: test code reorganization.
11 years ago
Vladimír Vondruš
fa3ec12dba
Math: actually test the conversion and not some random copy constructor.
11 years ago
Vladimír Vondruš
4027874b8d
Math: cleanup.
11 years ago
Vladimír Vondruš
c71dc12503
Making test declarations more compact.
...
Yet again I experienced how insanely large this thing got over the
years.
11 years ago
Vladimír Vondruš
6488fe6e75
Oh, it's 2015 already.
11 years ago
Vladimír Vondruš
b475389cc9
Math: make the constructors in test also constexpr.
12 years ago
Vladimír Vondruš
a9a5ead13d
Dropped GCC 4.6 support.
12 years ago
Vladimír Vondruš
6f0ba96cb6
Happy new year too.
12 years ago