bfe0a92eec
preprocessor: build the header out of tree
...
This avoids unnecessary rebuilds when we have parallel configurations
being built.
2018-10-30 21:41:15 +11:00
f6056153e3
rename root namespace from util to cruft
...
This places, at long last, the core library code into the same namespace
as the extended library code.
2018-08-05 14:42:02 +10:00
803acc9a87
relicense under MPL-2.0
2018-08-04 15:14:06 +10:00
6dea530f6e
coord/ops: remove misplaced include
2018-06-20 13:25:49 +10:00
cdac2dcbc2
maths: add 'frac' function
...
Extracts the fractional component from a floating point number. Prefer
to use temporaries that you have on hand over these functions.
2018-05-21 15:06:07 +10:00
3e5c89f643
coord/ops: add lshift
2018-05-04 17:06:18 +10:00
b01173d82b
maths: rename limit to clamp
2018-05-03 21:43:48 +10:00
497d3ca970
build: update for gcc-8.1 warnings
2018-05-03 18:32:08 +10:00
fe88708c50
coord: relax restrictions on is_normalised
2018-04-18 21:43:40 +10:00
9affc28807
coord: make the pow function actually work...
2018-04-17 17:02:08 +10:00
e0f0e3b19b
coord: add product function
2018-04-17 17:01:53 +10:00
f830b149b0
coord/ops: add scalar bool overload for any
2018-04-11 18:22:49 +10:00
12d401b98b
tuple/variadic: split into type/value/pack operations
2018-03-15 23:48:21 +11:00
bafe71b3ab
coord/ops: add `all' overload for scalar bool
2018-03-15 15:25:18 +11:00
583e4aa26d
coord/ops: fix incorrect invoke function name
2018-03-13 15:41:48 +11:00
17816021b9
coord/ops: add std::{cos,sin} overloads for coords
2018-03-13 14:39:38 +11:00
3e9e9bff5a
coord/ops: add elementwise apply
2018-03-13 14:39:38 +11:00
16c6a6d627
coord/ops: move `get' query to top for usage later
2018-03-13 14:39:38 +11:00
d1c6df8bf1
coord/ops: add simple cosine wrapper
2018-03-12 23:04:17 +11:00
92de21982a
coord/ops: use manual integer casting for floor
2018-03-12 23:04:04 +11:00
3b3f9cd3d3
coord/ops: use the coord type for literal equality comparisons
2018-02-26 13:37:08 +11:00
959617277f
coord: use consistent technique for assignment operators
2018-01-16 13:31:37 +11:00
9bb2bdbaba
Merge remote-tracking branch 'origin/master'
2018-01-10 17:19:39 +11:00
a8088d03cd
matrix: use vector for the row storage
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
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
31afd9dcfd
coord/ops: initial stubs for coord::apply
2017-08-28 12:59:06 +10:00
c0df6bf8a2
coord/ops: move make_coord higher for visibility
...
latter code may require make_coord it should be above most of the
operations.
2017-08-28 12:58:18 +10:00
c4e367e648
coord: use std::size_t over size_t
2017-08-28 12:25:23 +10:00
3799135236
coord: add general vector comparison function
2017-08-27 12:32:00 +10:00
677a0aa4a9
coord/ops: use vector ops for point difference
2017-08-27 12:27:26 +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
dba4e673ca
coord/ops: add scalar/vector relational operators
2017-08-24 16:25:27 +10:00
0b52ef47be
coord/ops: make make_foo functions constexpr
2017-08-24 14:39:54 +10:00
84963aacf8
coord/ops: make 'all' and 'any' constexpr
2017-08-24 14:39:54 +10:00
ac19e165ba
coord/ops: add comment for util::limit
2017-08-24 12:49:59 +10:00
c49738e7a3
coord/ops: add elementwise limit operation
2017-08-16 17:26:16 +10:00
6c77393a2c
coord: make min and max variadic
2017-07-31 16:16:54 +10:00
0016c83dab
coord: add the select function
2017-07-31 15:41:57 +10:00
2fad1715cf
coord: define make_klass for all coordinate types
2017-07-28 16:08:59 +10:00
62491b4cec
coord: generalise point hashing for all coord types
...
move the point hashing function into general coord operations. convert
from using std::hash to something we've made so that we know it's going
to spread the bits a little (unlike the default identity of GCC 7).
2017-06-29 16:33:53 +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
b67a99ee4e
coord: add arity query function
2017-03-23 14:36:39 +11:00
3dd80be05a
coord: use self-dot-product for norm2
2016-12-21 20:23:43 +11:00
e96ef7af32
quaternion: move out of coord infrastructure
2016-10-17 22:30:16 +11:00
2c6011394f
coord/ops: assert when normalising zero coords
2016-10-12 22:58:13 +11:00
b7d141322c
coord/ops: add logical or, and logical and for bools
2016-09-23 13:39:13 +10:00