@@ -28,6 +28,26 @@ TC interelem_div(TA a, TB b) {
2828 return static_cast <TC>(a / b);
2929}
3030
31+ template <typename TA, typename TB, typename TC>
32+ TC interelem_mod (TA a, TB b) {
33+ return static_cast <TC>(a % b);
34+ }
35+
36+ template <typename TA, typename TB, typename TC>
37+ TC interelem_and (TA a, TB b) {
38+ return static_cast <TC>(a & b);
39+ }
40+
41+ template <typename TA, typename TB, typename TC>
42+ TC interelem_or (TA a, TB b) {
43+ return static_cast <TC>(a | b);
44+ }
45+
46+ template <typename TA, typename TB, typename TC>
47+ TC interelem_xor (TA a, TB b) {
48+ return static_cast <TC>(a ^ b);
49+ }
50+
3151IMPL_NAIVE_DOUBLE_INPUT_INTERNAL (interelem) {
3252 nn_size idx_offset = loup.ndim - NN_MAX_NDIM;
3353 std::function<TC (TA, TB)> func;
@@ -44,6 +64,18 @@ IMPL_NAIVE_DOUBLE_INPUT_INTERNAL(interelem) {
4464 case Param::Div:
4565 func = interelem_div<TA, TB, TC>;
4666 break ;
67+ case Param::Mod:
68+ func = interelem_mod<TA, TB, TC>;
69+ break ;
70+ case Param::And:
71+ func = interelem_and<TA, TB, TC>;
72+ break ;
73+ case Param::Or:
74+ func = interelem_or<TA, TB, TC>;
75+ break ;
76+ case Param::Xor:
77+ func = interelem_xor<TA, TB, TC>;
78+ break ;
4779
4880 default :
4981 return Status (StatusCategory::NUMNET, StatusCode::FAIL,
0 commit comments