Commit Graph

127 Commits

Author SHA1 Message Date
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
0f9fb9b515 coord: add general store template and 5-element init 2018-04-17 14:25:04 +10:00
c4eec456a0 coord/base: remove explicit from scalar constructor
we need to create vectors of zeros pretty often and it's pretty verbose
having to continually use the full type name each time.
2018-04-16 16:00:32 +10:00
f830b149b0 coord/ops: add scalar bool overload for any 2018-04-11 18:22:49 +10:00
2d801a1725 coord/base: actually set fill values in constructor 2018-04-11 18:22:25 +10:00
93185775e6 coord/simd: template on arity and type 2018-03-23 17:52:08 +11:00
2d7e3e5d7d build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
341907ac79 coord/simd: add more sse operations 2018-03-20 13:35:10 +11:00
b307ab935d coord/simd: add initial simd tests 2018-03-16 11:10:44 +11: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
a8b4c93ccd coord: mitigate gcc ICE when using redim 2018-01-17 13:28:44 +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
a0b0863d61 coord: use new template form in ostream operators 2017-11-24 17:19:32 +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
31652ed3a3 coord/base: add clarifying comment to index assertion 2017-08-27 11:37:52 +10:00
8f216a0a27 coord/base: don't use std::fill in constexpr constructor 2017-08-27 11:37:18 +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
8b2c1d3fd2 coord/init: make 1-dimension constructor explicit 2017-08-24 17:52:06 +10:00
dba4e673ca coord/ops: add scalar/vector relational operators 2017-08-24 16:25:27 +10:00
efb719b822 coord/base: add indices method 2017-08-24 14:39:54 +10:00
ad345f19d5 coord/base: add restrictions to redim with/out params
redim to lower dimensionality should not allow a parameter, and redim to
higher dimensions should require a fill parameter.
2017-08-24 14:39:54 +10:00
1d4992e3e4 coord/base: add comments for constructors 2017-08-24 14:39:54 +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