-
Notifications
You must be signed in to change notification settings - Fork 0
/
Type_Ops.h
38 lines (29 loc) · 1.19 KB
/
Type_Ops.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "armadillo/armadillo"
namespace netn {
template <typename L, typename R>
struct add_t {
typedef decltype((L)0 + (R)0) type;
};
template <> struct add_t<arma::mat, arma::mat> { typedef arma::mat type; };
template <typename T> struct add_t<arma::mat, T> { typedef arma::mat type; };
template <typename T> struct add_t<T, arma::mat> { typedef arma::mat type; };
template <typename L, typename R>
struct sub_t {
typedef decltype((L)0 - (R)0) type;
};
template <> struct sub_t<arma::mat, arma::mat> { typedef arma::mat type; };
template <typename T> struct sub_t<arma::mat, T> { typedef arma::mat type; };
template <typename T> struct sub_t<T, arma::mat> { typedef arma::mat type; };
template <typename L, typename R>
struct mul_t {
typedef decltype((L)0 * (R)0) type;
};
template <> struct mul_t<arma::mat, arma::mat> { typedef arma::mat type; };
template <typename T> struct mul_t<arma::mat, T> { typedef arma::mat type; };
template <typename T> struct mul_t<T, arma::mat> { typedef arma::mat type; };
template <typename L, typename R>
struct div_t {
typedef decltype((L)0 / (R)0) type;
};
template <typename T> struct div_t<arma::mat, T> { typedef arma::mat type; };
}