Skip to content

Commit 8a15672

Browse files
authored
Operators completeness (again) (#1848)
1 parent a7b8948 commit 8a15672

29 files changed

+764
-663
lines changed

src/basic_op.cpp

Lines changed: 82 additions & 143 deletions
Large diffs are not rendered by default.

src/basic_op_div.cpp

Lines changed: 24 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -54,55 +54,21 @@ Data_<Sp>* Data_<Sp>::Div(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__,__FILE__,__LI
5454
}
5555

5656
template<> // Float
57-
Data_<SpDFloat>* Data_<SpDFloat>::Div(BaseGDL* r) {
58-
TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
59-
Data_* right = static_cast<Data_*> (r);
60-
ULong nEl = N_Elements();
61-
assert(nEl);
62-
SizeT i = 0;
63-
GDLStartRegisteringFPExceptions();
64-
if (nEl == 1) {
65-
(*this)[0] /= (*right)[0];
66-
GDLStopRegisteringFPExceptions();
67-
return this;
68-
}
69-
if ((GDL_NTHREADS = parallelize(nEl)) == 1) {
70-
for (OMPInt ix = i; ix < nEl; ++ix) (*this)[ix] /= (*right)[ix];
71-
} else {
72-
TRACEOMP(__FILE__, __LINE__)
73-
#pragma omp parallel for num_threads(GDL_NTHREADS)
74-
for (OMPInt ix = i; ix < nEl; ++ix) (*this)[ix] /= (*right)[ix];
75-
}
76-
77-
GDLStopRegisteringFPExceptions();
78-
79-
return this;
57+
Data_<SpDFloat>* Data_<SpDFloat>::Div(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
58+
#include "snippets/basic_op_Div.incpp"
8059
}
8160

8261
template<> // Double
83-
Data_<SpDDouble>* Data_<SpDDouble>::Div(BaseGDL* r) {
84-
TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
85-
Data_* right = static_cast<Data_*> (r);
86-
ULong nEl = N_Elements();
87-
assert(nEl);
88-
SizeT i = 0;
89-
GDLStartRegisteringFPExceptions();
90-
if (nEl == 1) {
91-
(*this)[0] /= (*right)[0];
92-
GDLStopRegisteringFPExceptions();
93-
return this;
94-
}
95-
if ((GDL_NTHREADS = parallelize(nEl)) == 1) {
96-
for (OMPInt ix = i; ix < nEl; ++ix) (*this)[ix] /= (*right)[ix];
97-
} else {
98-
TRACEOMP(__FILE__, __LINE__)
99-
#pragma omp parallel for num_threads(GDL_NTHREADS)
100-
for (OMPInt ix = i; ix < nEl; ++ix) (*this)[ix] /= (*right)[ix];
101-
}
102-
103-
GDLStopRegisteringFPExceptions();
104-
105-
return this;
62+
Data_<SpDDouble>* Data_<SpDDouble>::Div(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
63+
#include "snippets/basic_op_Div.incpp"
64+
}
65+
template<> // Double
66+
Data_<SpDComplex>* Data_<SpDComplex>::Div(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
67+
#include "snippets/basic_op_Div.incpp"
68+
}
69+
template<> // Double
70+
Data_<SpDComplexDbl>* Data_<SpDComplexDbl>::Div(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
71+
#include "snippets/basic_op_Div.incpp"
10672
}
10773

10874

@@ -141,55 +107,21 @@ Data_<Sp>* Data_<Sp>::DivInv(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__,__FILE__,_
141107
}
142108

143109
template<>
144-
Data_<SpDFloat>* Data_<SpDFloat>::DivInv(BaseGDL* r) {
145-
TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
146-
Data_* right = static_cast<Data_*> (r);
147-
ULong nEl = N_Elements();
148-
assert(nEl);
149-
150-
GDLStartRegisteringFPExceptions();
151-
if (nEl == 1) {
152-
(*this)[0] = (*right)[0] / (*this)[0];
153-
GDLStopRegisteringFPExceptions();
154-
return this;
155-
}
156-
if ((GDL_NTHREADS = parallelize(nEl)) == 1) {
157-
for (OMPInt ix = 0; ix < nEl; ++ix) (*this)[ix] = (*right)[ix] / (*this)[ix];
158-
} else {
159-
TRACEOMP(__FILE__, __LINE__)
160-
#pragma omp parallel for num_threads(GDL_NTHREADS)
161-
for (OMPInt ix = 0; ix < nEl; ++ix) (*this)[ix] = (*right)[ix] / (*this)[ix];
162-
}
163-
164-
GDLStopRegisteringFPExceptions();
165-
166-
return this;
110+
Data_<SpDFloat>* Data_<SpDFloat>::DivInv(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
111+
#include "snippets/basic_op_DivInv.incpp"
167112
}
168113

169114
template<>
170-
Data_<SpDDouble>* Data_<SpDDouble>::DivInv(BaseGDL* r) {
171-
TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
172-
Data_* right = static_cast<Data_*> (r);
173-
ULong nEl = N_Elements();
174-
assert(nEl);
175-
176-
GDLStartRegisteringFPExceptions();
177-
if (nEl == 1) {
178-
(*this)[0] = (*right)[0] / (*this)[0];
179-
GDLStopRegisteringFPExceptions();
180-
return this;
181-
}
182-
if ((GDL_NTHREADS = parallelize(nEl)) == 1) {
183-
for (OMPInt ix = 0; ix < nEl; ++ix) (*this)[ix] = (*right)[ix] / (*this)[ix];
184-
} else {
185-
TRACEOMP(__FILE__, __LINE__)
186-
#pragma omp parallel for num_threads(GDL_NTHREADS)
187-
for (OMPInt ix = 0; ix < nEl; ++ix) (*this)[ix] = (*right)[ix] / (*this)[ix];
188-
}
189-
190-
GDLStopRegisteringFPExceptions();
191-
192-
return this;
115+
Data_<SpDDouble>* Data_<SpDDouble>::DivInv(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
116+
#include "snippets/basic_op_DivInv.incpp"
117+
}
118+
template<>
119+
Data_<SpDComplex>* Data_<SpDComplex>::DivInv(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
120+
#include "snippets/basic_op_DivInvCplx.incpp"
121+
}
122+
template<>
123+
Data_<SpDComplexDbl>* Data_<SpDComplexDbl>::DivInv(BaseGDL* r) { TRACE_ROUTINE(__FUNCTION__, __FILE__, __LINE__)
124+
#include "snippets/basic_op_DivInvCplx.incpp"
193125
}
194126
// invalid types
195127

0 commit comments

Comments
 (0)