MyraMath
myramath
expression
arithmetic.h
Go to the documentation of this file.
1
// This file is part of MyraMath, copyright (c) 2014-2019 by Ryan A Chilton //
2
// and distributed by MyraCore, LLC. See LICENSE.txt for license terms. //
3
// ========================================================================= //
4
5
#ifndef MYRAMATH_EXPRESSION_ARITHMETIC_H
6
#define MYRAMATH_EXPRESSION_ARITHMETIC_H
7
13
#include <myramath/MYRAMATH_EXPORT.h>
14
#include <
myramath/utility/Number.h
>
15
16
namespace
myra
{
17
18
// Forward declarations.
19
template
<
int
Arity,
class
Number>
class
Expression
;
20
21
// ---------------------------------- operator+
22
24
MYRAMATH_EXPORT
Expression<1,NumberS>
operator+ (
const
Expression<1,NumberS>
& A,
const
Expression<1,NumberS>
& B);
26
MYRAMATH_EXPORT
Expression<1,NumberD>
operator+ (
const
Expression<1,NumberD>
& A,
const
Expression<1,NumberD>
& B);
27
MYRAMATH_EXPORT
Expression<1,NumberC>
operator+ (
const
Expression<1,NumberC>
& A,
const
Expression<1,NumberC>
& B);
28
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator+ (
const
Expression<1,NumberZ>
& A,
const
Expression<1,NumberZ>
& B);
29
MYRAMATH_EXPORT
Expression<2,NumberS>
operator+ (
const
Expression<2,NumberS>
& A,
const
Expression<2,NumberS>
& B);
30
MYRAMATH_EXPORT
Expression<2,NumberD>
operator+ (
const
Expression<2,NumberD>
& A,
const
Expression<2,NumberD>
& B);
31
MYRAMATH_EXPORT
Expression<2,NumberC>
operator+ (
const
Expression<2,NumberC>
& A,
const
Expression<2,NumberC>
& B);
32
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator+ (
const
Expression<2,NumberZ>
& A,
const
Expression<2,NumberZ>
& B);
34
36
MYRAMATH_EXPORT
Expression<1,NumberS>
operator+ (
const
Expression<1,NumberS>
& A,
NumberS
b);
38
MYRAMATH_EXPORT
Expression<1,NumberD>
operator+ (
const
Expression<1,NumberD>
& A, NumberD b);
39
MYRAMATH_EXPORT
Expression<1,NumberC>
operator+ (
const
Expression<1,NumberC>
& A, NumberC b);
40
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator+ (
const
Expression<1,NumberZ>
& A, NumberZ b);
41
MYRAMATH_EXPORT
Expression<2,NumberS>
operator+ (
const
Expression<2,NumberS>
& A,
NumberS
b);
42
MYRAMATH_EXPORT
Expression<2,NumberD>
operator+ (
const
Expression<2,NumberD>
& A, NumberD b);
43
MYRAMATH_EXPORT
Expression<2,NumberC>
operator+ (
const
Expression<2,NumberC>
& A, NumberC b);
44
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator+ (
const
Expression<2,NumberZ>
& A, NumberZ b);
46
48
MYRAMATH_EXPORT
Expression<1,NumberS>
operator+ (
NumberS
a,
const
Expression<1,NumberS>
& B);
50
MYRAMATH_EXPORT
Expression<1,NumberD>
operator+ (NumberD a,
const
Expression<1,NumberD>
& B);
51
MYRAMATH_EXPORT
Expression<1,NumberC>
operator+ (NumberC a,
const
Expression<1,NumberC>
& B);
52
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator+ (NumberZ a,
const
Expression<1,NumberZ>
& B);
53
MYRAMATH_EXPORT
Expression<2,NumberS>
operator+ (
NumberS
a,
const
Expression<2,NumberS>
& B);
54
MYRAMATH_EXPORT
Expression<2,NumberD>
operator+ (NumberD a,
const
Expression<2,NumberD>
& B);
55
MYRAMATH_EXPORT
Expression<2,NumberC>
operator+ (NumberC a,
const
Expression<2,NumberC>
& B);
56
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator+ (NumberZ a,
const
Expression<2,NumberZ>
& B);
58
59
// ---------------------------------- operator-
60
62
MYRAMATH_EXPORT
Expression<1,NumberS>
operator- (
const
Expression<1,NumberS>
& A,
const
Expression<1,NumberS>
& B);
64
MYRAMATH_EXPORT
Expression<1,NumberD>
operator- (
const
Expression<1,NumberD>
& A,
const
Expression<1,NumberD>
& B);
65
MYRAMATH_EXPORT
Expression<1,NumberC>
operator- (
const
Expression<1,NumberC>
& A,
const
Expression<1,NumberC>
& B);
66
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator- (
const
Expression<1,NumberZ>
& A,
const
Expression<1,NumberZ>
& B);
67
MYRAMATH_EXPORT
Expression<2,NumberS>
operator- (
const
Expression<2,NumberS>
& A,
const
Expression<2,NumberS>
& B);
68
MYRAMATH_EXPORT
Expression<2,NumberD>
operator- (
const
Expression<2,NumberD>
& A,
const
Expression<2,NumberD>
& B);
69
MYRAMATH_EXPORT
Expression<2,NumberC>
operator- (
const
Expression<2,NumberC>
& A,
const
Expression<2,NumberC>
& B);
70
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator- (
const
Expression<2,NumberZ>
& A,
const
Expression<2,NumberZ>
& B);
72
74
MYRAMATH_EXPORT
Expression<1,NumberS>
operator- (
const
Expression<1,NumberS>
& A,
NumberS
b);
76
MYRAMATH_EXPORT
Expression<1,NumberD>
operator- (
const
Expression<1,NumberD>
& A, NumberD b);
77
MYRAMATH_EXPORT
Expression<1,NumberC>
operator- (
const
Expression<1,NumberC>
& A, NumberC b);
78
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator- (
const
Expression<1,NumberZ>
& A, NumberZ b);
79
MYRAMATH_EXPORT
Expression<2,NumberS>
operator- (
const
Expression<2,NumberS>
& A,
NumberS
b);
80
MYRAMATH_EXPORT
Expression<2,NumberD>
operator- (
const
Expression<2,NumberD>
& A, NumberD b);
81
MYRAMATH_EXPORT
Expression<2,NumberC>
operator- (
const
Expression<2,NumberC>
& A, NumberC b);
82
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator- (
const
Expression<2,NumberZ>
& A, NumberZ b);
84
86
MYRAMATH_EXPORT
Expression<1,NumberS>
operator- (
NumberS
a,
const
Expression<1,NumberS>
& B);
88
MYRAMATH_EXPORT
Expression<1,NumberD>
operator- (NumberD a,
const
Expression<1,NumberD>
& B);
89
MYRAMATH_EXPORT
Expression<1,NumberC>
operator- (NumberC a,
const
Expression<1,NumberC>
& B);
90
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator- (NumberZ a,
const
Expression<1,NumberZ>
& B);
91
MYRAMATH_EXPORT
Expression<2,NumberS>
operator- (
NumberS
a,
const
Expression<2,NumberS>
& B);
92
MYRAMATH_EXPORT
Expression<2,NumberD>
operator- (NumberD a,
const
Expression<2,NumberD>
& B);
93
MYRAMATH_EXPORT
Expression<2,NumberC>
operator- (NumberC a,
const
Expression<2,NumberC>
& B);
94
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator- (NumberZ a,
const
Expression<2,NumberZ>
& B);
96
97
// ---------------------------------- operator*
98
100
MYRAMATH_EXPORT
Expression<1,NumberS>
operator* (
const
Expression<1,NumberS>
& A,
const
Expression<1,NumberS>
& B);
102
MYRAMATH_EXPORT
Expression<1,NumberD>
operator* (
const
Expression<1,NumberD>
& A,
const
Expression<1,NumberD>
& B);
103
MYRAMATH_EXPORT
Expression<1,NumberC>
operator* (
const
Expression<1,NumberC>
& A,
const
Expression<1,NumberC>
& B);
104
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator* (
const
Expression<1,NumberZ>
& A,
const
Expression<1,NumberZ>
& B);
105
MYRAMATH_EXPORT
Expression<2,NumberS>
operator* (
const
Expression<2,NumberS>
& A,
const
Expression<2,NumberS>
& B);
106
MYRAMATH_EXPORT
Expression<2,NumberD>
operator* (
const
Expression<2,NumberD>
& A,
const
Expression<2,NumberD>
& B);
107
MYRAMATH_EXPORT
Expression<2,NumberC>
operator* (
const
Expression<2,NumberC>
& A,
const
Expression<2,NumberC>
& B);
108
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator* (
const
Expression<2,NumberZ>
& A,
const
Expression<2,NumberZ>
& B);
110
112
MYRAMATH_EXPORT
Expression<1,NumberS>
operator* (
const
Expression<1,NumberS>
& A,
NumberS
b);
114
MYRAMATH_EXPORT
Expression<1,NumberD>
operator* (
const
Expression<1,NumberD>
& A, NumberD b);
115
MYRAMATH_EXPORT
Expression<1,NumberC>
operator* (
const
Expression<1,NumberC>
& A, NumberC b);
116
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator* (
const
Expression<1,NumberZ>
& A, NumberZ b);
117
MYRAMATH_EXPORT
Expression<2,NumberS>
operator* (
const
Expression<2,NumberS>
& A,
NumberS
b);
118
MYRAMATH_EXPORT
Expression<2,NumberD>
operator* (
const
Expression<2,NumberD>
& A, NumberD b);
119
MYRAMATH_EXPORT
Expression<2,NumberC>
operator* (
const
Expression<2,NumberC>
& A, NumberC b);
120
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator* (
const
Expression<2,NumberZ>
& A, NumberZ b);
122
124
MYRAMATH_EXPORT
Expression<1,NumberS>
operator* (
NumberS
a,
const
Expression<1,NumberS>
& B);
126
MYRAMATH_EXPORT
Expression<1,NumberD>
operator* (NumberD a,
const
Expression<1,NumberD>
& B);
127
MYRAMATH_EXPORT
Expression<1,NumberC>
operator* (NumberC a,
const
Expression<1,NumberC>
& B);
128
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator* (NumberZ a,
const
Expression<1,NumberZ>
& B);
129
MYRAMATH_EXPORT
Expression<2,NumberS>
operator* (
NumberS
a,
const
Expression<2,NumberS>
& B);
130
MYRAMATH_EXPORT
Expression<2,NumberD>
operator* (NumberD a,
const
Expression<2,NumberD>
& B);
131
MYRAMATH_EXPORT
Expression<2,NumberC>
operator* (NumberC a,
const
Expression<2,NumberC>
& B);
132
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator* (NumberZ a,
const
Expression<2,NumberZ>
& B);
134
135
// ---------------------------------- operator/
136
138
MYRAMATH_EXPORT
Expression<1,NumberS>
operator/ (
const
Expression<1,NumberS>
& A,
const
Expression<1,NumberS>
& B);
140
MYRAMATH_EXPORT
Expression<1,NumberD>
operator/ (
const
Expression<1,NumberD>
& A,
const
Expression<1,NumberD>
& B);
141
MYRAMATH_EXPORT
Expression<1,NumberC>
operator/ (
const
Expression<1,NumberC>
& A,
const
Expression<1,NumberC>
& B);
142
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator/ (
const
Expression<1,NumberZ>
& A,
const
Expression<1,NumberZ>
& B);
143
MYRAMATH_EXPORT
Expression<2,NumberS>
operator/ (
const
Expression<2,NumberS>
& A,
const
Expression<2,NumberS>
& B);
144
MYRAMATH_EXPORT
Expression<2,NumberD>
operator/ (
const
Expression<2,NumberD>
& A,
const
Expression<2,NumberD>
& B);
145
MYRAMATH_EXPORT
Expression<2,NumberC>
operator/ (
const
Expression<2,NumberC>
& A,
const
Expression<2,NumberC>
& B);
146
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator/ (
const
Expression<2,NumberZ>
& A,
const
Expression<2,NumberZ>
& B);
148
150
MYRAMATH_EXPORT
Expression<1,NumberS>
operator/ (
const
Expression<1,NumberS>
& A,
NumberS
b);
152
MYRAMATH_EXPORT
Expression<1,NumberD>
operator/ (
const
Expression<1,NumberD>
& A, NumberD b);
153
MYRAMATH_EXPORT
Expression<1,NumberC>
operator/ (
const
Expression<1,NumberC>
& A, NumberC b);
154
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator/ (
const
Expression<1,NumberZ>
& A, NumberZ b);
155
MYRAMATH_EXPORT
Expression<2,NumberS>
operator/ (
const
Expression<2,NumberS>
& A,
NumberS
b);
156
MYRAMATH_EXPORT
Expression<2,NumberD>
operator/ (
const
Expression<2,NumberD>
& A, NumberD b);
157
MYRAMATH_EXPORT
Expression<2,NumberC>
operator/ (
const
Expression<2,NumberC>
& A, NumberC b);
158
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator/ (
const
Expression<2,NumberZ>
& A, NumberZ b);
160
162
MYRAMATH_EXPORT
Expression<1,NumberS>
operator/ (
NumberS
a,
const
Expression<1,NumberS>
& B);
164
MYRAMATH_EXPORT
Expression<1,NumberD>
operator/ (NumberD a,
const
Expression<1,NumberD>
& B);
165
MYRAMATH_EXPORT
Expression<1,NumberC>
operator/ (NumberC a,
const
Expression<1,NumberC>
& B);
166
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator/ (NumberZ a,
const
Expression<1,NumberZ>
& B);
167
MYRAMATH_EXPORT
Expression<2,NumberS>
operator/ (
NumberS
a,
const
Expression<2,NumberS>
& B);
168
MYRAMATH_EXPORT
Expression<2,NumberD>
operator/ (NumberD a,
const
Expression<2,NumberD>
& B);
169
MYRAMATH_EXPORT
Expression<2,NumberC>
operator/ (NumberC a,
const
Expression<2,NumberC>
& B);
170
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator/ (NumberZ a,
const
Expression<2,NumberZ>
& B);
172
173
// ---------------------------------- unary operator-
174
176
MYRAMATH_EXPORT
Expression<1,NumberS>
operator- (
const
Expression<1,NumberS>
& A);
178
MYRAMATH_EXPORT
Expression<1,NumberD>
operator- (
const
Expression<1,NumberD>
& A);
179
MYRAMATH_EXPORT
Expression<1,NumberC>
operator- (
const
Expression<1,NumberC>
& A);
180
MYRAMATH_EXPORT
Expression<1,NumberZ>
operator- (
const
Expression<1,NumberZ>
& A);
181
MYRAMATH_EXPORT
Expression<2,NumberS>
operator- (
const
Expression<2,NumberS>
& A);
182
MYRAMATH_EXPORT
Expression<2,NumberD>
operator- (
const
Expression<2,NumberD>
& A);
183
MYRAMATH_EXPORT
Expression<2,NumberC>
operator- (
const
Expression<2,NumberC>
& A);
184
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator- (
const
Expression<2,NumberZ>
& A);
186
187
// ---------------------------------- operator^
188
190
MYRAMATH_EXPORT
Expression<2,NumberS>
operator^ (
const
Expression<1,NumberS>
& A,
const
Expression<1,NumberS>
& B);
192
MYRAMATH_EXPORT
Expression<2,NumberD>
operator^ (
const
Expression<1,NumberD>
& A,
const
Expression<1,NumberD>
& B);
193
MYRAMATH_EXPORT
Expression<2,NumberC>
operator^ (
const
Expression<1,NumberC>
& A,
const
Expression<1,NumberC>
& B);
194
MYRAMATH_EXPORT
Expression<2,NumberZ>
operator^ (
const
Expression<1,NumberZ>
& A,
const
Expression<1,NumberZ>
& B);
196
197
}
// namespace myra
198
199
#endif
myra
Definition:
syntax.dox:1
Number.h
Various utility functions/classes related to scalar Number types.
myra::Expression
Given an index (i,j,etc), returns a value.
Definition:
arithmetic.h:19
myra::NumberS
float NumberS
Useful typedefs.
Definition:
Number.h:21
Generated on Sun Aug 4 2024 12:26:04 for MyraMath by
1.8.13