59240ce83a
matrix: move implementation from ipp to hpp
2017-11-24 17:19:32 +11:00
0351313c36
Merge branch 'master' into coord
2017-11-23 17:24:11 +11:00
d3f434b523
coord: make template parameters more flexible
...
The coordinate system was unable to support types that prohibited
redim or retype operations. Additionally, the `tags' type used for
providing named data parameters was unwiedly.
We remove much of the dependance on template template parameters in the
defined operations and instead define these in terms of a template
specialisation of is_coord.
The tag types were replaced with direct specialisation of the `store'
struct by the primary type, and passing this type through use of the
CRTP.
2017-11-22 17:03:00 +11:00
34788756d2
build: don't use './' as an include prefix
...
GCC produces ODR error when including paths of the form './foo' and
'foo' in the same binary. Rather than managing duplication we just
universally pick the absolute form over the relative form.
2017-11-22 16:49:37 +11:00
3ad0339474
WIP vector: spherical/cartesian conversion
2017-11-02 18:11:16 +11:00
28ec0bd48e
maths: add forgotten header to test suite
2017-11-02 18:02:53 +11:00
d8bb00c9c3
endian: add float byteswap specialisation
2017-10-12 17:38:40 +11:00
aff4786409
traits: add bodies to test objects for ODR-used symbols
2017-10-11 17:15:47 +11:00
32f3240186
json2: initial 'jsonish' support
2017-10-05 11:44:37 +11:00
340981dac2
json2: initial import
2017-10-03 17:49:08 +11:00
35db5f0a7a
utf8: add forgotten headers
2017-10-02 15:41:20 +11:00
7ecaaacd93
utf8: add a trivial utf8 decoder
2017-10-02 15:25:59 +11:00
220e499681
view: make equality consistent
2017-09-15 15:22:51 +10:00
cfa272a80a
string: allow tokenisation of c arrays
2017-09-15 15:22:29 +10:00
9c5b471b24
iterator: modify to allow iteration over c arrays
2017-09-15 15:21:25 +10:00
4050754ab4
preprocessor: use a script to create map/reduce
...
We need over 300 arguments for some projects and I'm not going to code
that shit by hand.
2017-09-12 14:17:30 +10:00
8e7f23c4dd
traits: add trivial type_traits tests
2017-09-08 14:20:01 +10:00
0e97044adf
allow/raw: rename base as begin
2017-08-31 13:48:33 +10:00
9d5e599246
alloc: seperate out the raw allocators from the adapters
2017-08-29 16:53:11 +10:00
3799135236
coord: add general vector comparison function
2017-08-27 12:32:00 +10:00
9aa0ba8f55
test: use constexpr for test data where possible
2017-08-27 12:28:56 +10:00
3c9dcba2fb
coord/ops: add rshift coord operation
...
shifts each element to the right `num' places and fills the left space
with a constant or elements from another vector.
2017-08-25 13:05:45 +10:00
e9ef2ae316
sarray: add assignment operator for completeness in test
2017-08-24 17:53:46 +10:00
56444b4a50
geom/aabb: add (minimally) more thorough test data
2017-08-24 17:02:18 +10:00
1cea1600d3
geom/aabb: change contract/expand semantics to mirror region
2017-08-24 17:01:16 +10:00
f77cdabaee
geom/aabb: dont use mutating function naming convention
2017-08-24 16:47:02 +10:00
cd1bb730f2
geom/aabb: rename AABB to aabb
2017-08-24 16:43:54 +10:00
359702fb86
geom/aabb: remove mutating operators
2017-08-24 16:25:57 +10:00
6e32ad84a7
coord: use consistent naming for point coverage tests
...
use inclusive for tests that include all borders, and exclusive for
tests that do not accept the bottom right borders.
2017-08-24 15:56:58 +10:00
efb719b822
coord/base: add indices method
2017-08-24 14:39:54 +10:00
84963aacf8
coord/ops: make 'all' and 'any' constexpr
2017-08-24 14:39:54 +10:00
14718594c9
coord: add tests for vec/num/num overload of util::limit
2017-08-24 12:50:17 +10:00
2576061b26
ray: extract make member function as free function
...
for consistency with other make_foo functions. to be replaced with
deduction guides in the future.
2017-08-22 15:46:49 +10:00
a016e98b12
region: add make_range for regions
...
introduces an object that provides iterators suitable for row-major
scanning of points covering a region object. mostly a wrapper for the
equivalent extent_range.
2017-08-21 18:48:52 +10:00
31d2e6bfd8
region: remove duplicate point/region coverage tests
2017-08-11 15:15:44 +10:00
01f6e5a1e8
region: add make_union function
2017-07-31 15:44:01 +10:00
0016c83dab
coord: add the select function
2017-07-31 15:41:57 +10:00
f39f7d7362
parse: add throwing native type parsers
2017-07-26 15:26:56 +10:00
d29276a427
region: add "has" point query
2017-07-25 17:10:16 +10:00
b18feb8bc4
maths: use bit patterns for tests float values
...
this makes some of the tests more robust in the face of (potentially
stanard breaking) optimisations.
2017-07-25 17:08:52 +10:00
a27869d1c8
region: commenting and style for test cases
2017-07-19 17:19:20 +10:00
3460d5edbe
crypto/salsa: add initial skeleton for salsa20
2017-07-11 16:49:49 +10:00
320fe6c378
job/queue: add trivial job queuing system
2017-07-03 17:05:01 +10:00
96c80ecea5
comparator: add test for self equality failure
2017-06-29 15:27:16 +10:00
6065aa9933
comparator: add comparator for indexed compound types
...
compares each index of the two parameters in sequence, returning true if
the first parameter has the first value that compares less than the
second.
2017-06-19 15:28:10 +10:00
046a369f55
coord: don't use kahan summation for sum(coord)
...
Our kahan summation algorithm has issues with infinities so we just
avoid using it in coordinates where speed and simplicity are more
important.
2017-06-16 17:38:55 +10:00
061088467f
coord: add structured bindings support
2017-06-15 16:32:40 +10:00
ca63485d12
sarray: add a simple static storage/dynamic size array
2017-06-14 17:45:43 +10:00
b15914cf9a
iterator: add make_indices, zip, and izip
2017-06-13 17:01:06 +10:00
2bc7e3e449
point: work around GCC ICE in test case
...
GCC experiences an ICE when comparing the components of a redim'd to
lower dimension point. The test case is too complex to reasonably reduce
and submit for fixing/workaround so we add a bit more explicit work here
for this test case only.
2017-06-13 14:19:27 +10:00
606a46a128
typeidx: add lightweight runtime type id call
2017-05-29 17:21:11 +10:00
da00e77e7e
maths: add signed overloads for renormalise
2017-05-24 15:15:25 +10:00
30fa4a378d
colour: add html-style colour parsing
2017-05-22 16:20:21 +10:00
813600e774
ascii: add hex conversion and unit tests
2017-05-22 16:11:31 +10:00
9471b9eae7
test: ensure all tests return a useful status code
...
These tests were all assumed to execute correctly because CTest is not
capable of parsing the TAP output and instead relies entirely on status
codes.
2017-05-22 13:55:21 +10:00
1ad3e0bde0
algo/sort: add SOA sorting helper
...
sort::soa applies a permutation to multiple value arrays such that the
first value array is sorted
2017-05-18 18:24:48 +10:00
436df2952f
view: add make_view specialisations for std::string
2017-03-17 18:06:02 +11:00
bec24535fc
hash/crc: parameterise crc for reflection, and 64 bits
2017-02-14 19:47:12 +11:00
5a25f07f8e
hash/crc: adapt implementation from png appendix
2017-01-25 16:12:12 +11:00
ca7f4b739a
exe: test image query against argv, not constants
2017-01-25 15:07:14 +11:00
845c8dd14d
cmake: avoid recursive cmake lists for tests
2017-01-25 15:06:47 +11:00
d937bb2ece
backtrace: convert from CRLF terminators to LF
2017-01-23 15:33:47 +11:00
dd23d4a347
build: cmake tests
2017-01-17 19:20:30 +11:00
c0f3983ca8
stream: add minimal scoped flag test case
2017-01-09 15:54:47 +11:00
98dc992473
build: avoid integer length warnings
2017-01-05 19:50:28 +11:00
b770e5f370
fixed: add integer logical operators
2017-01-04 22:38:41 +11:00
2e0fa64494
range: convert static members to constexpr methods
2016-12-21 16:44:48 +11:00
2dcb315ce6
region: prefer constexpr functions over static variables
2016-12-12 17:07:53 +11:00
4bf160934c
vector: prefer constexpr functions over static variables
2016-12-12 17:04:39 +11:00
d2ba672a30
colour: remove static constants
2016-12-12 17:03:36 +11:00
6d079554a6
format: fix escaped percent before value specifier
2016-12-06 13:37:54 +11:00
cb32823248
hash: add xxhash implementation
2016-11-17 18:38:09 +11:00
246357e279
random: remove typed randomisers without generators
2016-11-17 18:38:08 +11:00
a93dd90da9
types: remove elems function, prefer std::size
...
Now that std::size is part of our supported compilers we can remove the
old elems function.
2016-11-17 18:06:39 +11:00
e549f3d554
matrix: move identity and zeroes into constexpr funcs
2016-10-17 22:34:53 +11:00
e96ef7af32
quaternion: move out of coord infrastructure
2016-10-17 22:30:16 +11:00
9cff1e9c85
test/affine: add trivial origin rotation test
2016-10-17 16:51:06 +11:00
1d53c32de0
quaternion: add trivial from_to tests
2016-10-12 23:03:33 +11:00
db076ad6f4
quaternion: update look, from_to, rotate
2016-10-12 23:03:33 +11:00
1af6ed4ca8
matrix: fix look_at multiply ordering
2016-10-12 23:03:33 +11:00
9a798446b5
build: remove unnecessary includes
...
discovered with include-what-you-use
2016-10-12 15:08:22 +11:00
2d31cf9537
matrix: add tranposition test case
2016-10-11 20:57:03 +11:00
3dc31a9d10
alloc/aligned: add allocator with forced alignment
2016-10-10 18:19:09 +11:00
254a63ca90
exe: split into platform units
2016-10-10 16:23:07 +11:00
fad44bd1f7
format: allow %! specifier for all types
...
If we allow the %! specifier for all types it greatly simplifies
handling of format strings in templated code, or code with non-trivial
typedefs.
2016-09-27 15:23:33 +10:00
ede9b75bad
vector: fix hypot implementation
2016-09-21 22:24:02 +10:00
4544a594c3
vector: add hypot function
...
calculates the root of the sum of the squares. much like std::hypot, but
of arbitrary dimension.
2016-09-21 17:13:25 +10:00
d9713fe8b7
json/tree: fix signed min, unsigned max constraints
...
signed/unsigned casting issues prevented correct comparisons with the
min/max constraints. account for the source type's range before doing the
comparison.
2016-09-20 16:02:08 +10:00
e2b4e48315
test: add matrix/quaternion consistency checks
2016-09-14 17:56:27 +10:00
83484a6ea1
matrix: add look_at and euler tests
2016-09-14 17:56:27 +10:00
c917f264c4
quaternion: fix incorrect factorisation in as_matrix
...
One of the terms in m[0][0] and m[1][1] was incorrectly negated from an
incomplete factorisation when I transcribed the formula.
Also reintroduces the axis-rotation tests which inadvertantly had zero
magnitudes.
2016-09-14 16:49:26 +10:00
45795a1ae0
quaternion: compare test results using sum-of-differences
...
comparison of floating point values is inexact and there isn't an easy
way for providing an ULP delta via the TAP interface. morever, the
general expected error is too large to reliably express in ULPs.
2016-08-15 20:56:10 +10:00
28cd180c44
matrix: add expanded scalar operations
2016-08-15 20:56:10 +10:00
f6ceb5cdee
coord/ops: add element sum overload
2016-08-15 20:56:10 +10:00
1f86925237
matrix: add elementwise sum function overload
2016-08-15 20:56:10 +10:00
b809925396
vector: rename UNIT to ONES
...
unit isn't a normalised vector, so it's misleading to call it a 'unit'
vector
2016-08-15 20:56:10 +10:00
606a9c4eb8
coord/ops: use free functions for normalisations
2016-08-11 14:58:46 +10:00
974998cc48
quaternion: update to use coord framework
2016-08-10 17:42:52 +10:00
de48f75e96
format: fix transcription of zero values to strings
...
an iteration condition terminated the write when a value was zero rather
than when all numerals were written. instead, iterate over the remaining
numerals.
fixes printf("%zu", 0u)
2016-08-10 17:38:39 +10:00
c26c687912
format: set ostream precision as if for strings
...
ostream conversions are converted to strings anyway, so we should treat
them as such earlier in the process.
2016-07-28 16:13:23 +10:00