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
ae40b163e5
coord: prefer cbegin/cend where possible
2017-06-13 14:18:00 +10:00
b67a99ee4e
coord: add arity query function
2017-03-23 14:36:39 +11:00
e364b0855f
coord/store: avoid unused variable on non-sse alignment
2017-01-05 19:50:27 +11:00
abedda1e5d
coord/store: abstract SIMD alignment tests
2017-01-05 16:46:01 +11:00
353cf839d4
use nested namespace declarations
2017-01-05 15:06:49 +11:00
3dd80be05a
coord: use self-dot-product for norm2
2016-12-21 20:23:43 +11:00
919c635f63
coord/base: assert we are using arithmetic types
2016-10-25 19:57:37 +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
109d47e971
coord/ops: generalise vectors hypot function
2016-09-23 13:27:44 +10:00
ff86357b83
coord/ops: use full types for is_coord
...
rather than passing the template class we pass the fully specified
template; ie point<3,float> rather than point.
this makes it dramatically easier to use is_coord in foreign code at the
cost of making the library code slightly more verbose. we no longer have
to obtain a typedef for the root coord class somehow.
2016-09-22 16:20:32 +10:00
7db82e4b22
coord/base: add cbegin and cend members
2016-09-21 22:23:20 +10:00
2b946510e5
coord/ops: correct last iterators for util::all and util::any
2016-09-21 22:22:52 +10:00
ff7ce2f1ef
coord/ops: mod style
2016-09-14 17:42:11 +10:00
fa21e52ee0
coord/ops: add scalar cos/sin
2016-09-14 17:41:59 +10:00
ab89286d5c
coord/ops: add scalar mod
2016-09-14 17:38:30 +10:00
f6ceb5cdee
coord/ops: add element sum overload
2016-08-15 20:56:10 +10:00
1f3b44a20e
vector: move vector::is_zero to coord::almost_zero
2016-08-11 16:33:32 +10:00
606a9c4eb8
coord/ops: use free functions for normalisations
2016-08-11 14:58:46 +10:00
517d7ce4a2
coord/ops: use distinct trait to enable scalar ops
2016-08-11 14:58:04 +10:00
650f5c05e6
coord/ops: rename traits to result
2016-08-11 14:23:32 +10:00
efb2657798
coord/fwd: use fwd header for ops
2016-08-11 14:22:53 +10:00
dfdd9421cd
Revert "coord/base: remove front/back methods"
...
This reverts commit 0b811e636e
.
2016-08-10 18:26:40 +10:00
974998cc48
quaternion: update to use coord framework
2016-08-10 17:42:52 +10:00
0b811e636e
coord/base: remove front/back methods
2016-08-10 17:33:58 +10:00
6ddff9dfde
coord/base: use std::fill for scalar constructor
2016-08-10 17:33:45 +10:00
fe8bbd1b61
coord: add forward declarations
2016-07-28 13:45:44 +10:00
d51cfe7a34
stream: remove unneeded numeric class
...
explicitly cast before passing to a stream routine if you need it.
2016-06-29 17:52:26 +10:00
3802de5ba3
coord/ops: disable scalar ops for non-arithmetic types
2016-05-12 18:22:55 +10:00
c2310d5d50
build: explicitly allow anonymous structs
2016-05-12 18:06:12 +10:00
efa52c60e9
build: remove unnecessary pedantic checks
2016-04-28 16:09:14 +10:00
3e46f18e5a
coord/base: style
2016-04-28 16:06:48 +10:00
039113b661
coord/store: enforce 16 byte alignment for arity 4
2016-03-14 22:31:50 +11:00
12b526dff7
coord/ops: ensure coord funcs only receive coords
2016-03-14 19:54:25 +11:00
0cfcd7b439
coord/ops: make operations constexpr where possible
2016-03-14 19:01:59 +11:00
27c7108c6d
coord/ops: remove duplicate unary negation
2016-03-14 18:57:07 +11:00
8035cbf46f
coord/ops: return the computed value in unary ops
2016-03-14 18:56:36 +11:00
809e7b0421
iostream: use consistent ostream format
2016-03-11 13:01:57 +11:00
7f4cf49931
iterator: use infix_iterator for coord ostream
2016-03-11 12:48:19 +11:00
2ca4a7e291
coord/ops: enable iff types are coords
2015-11-04 23:22:49 +11:00
23fff4a65a
coord/ops: expand dot product to accept arrays
2015-11-04 17:10:16 +11:00
3991848726
coord: add vector relational operators
2015-10-20 12:37:08 +11:00
60f16cdc4a
WIP coord: clean up operation templates
2015-10-19 17:06:19 +11:00
b824691541
coord: add front/back methods
2015-10-19 16:23:49 +11:00
634f2af9cc
coord/ops: don't use multiplication for negation
2015-10-19 12:06:03 +11:00
5ed95ec952
coord/ops: use common_type for results
2015-10-19 12:06:03 +11:00