Mercurial > hg > segmenter-vamp-plugin
comparison armadillo-2.4.4/include/armadillo_bits/op_cx_scalar_meat.hpp @ 0:8b6102e2a9b0
Armadillo Library
author | maxzanoni76 <max.zanoni@eecs.qmul.ac.uk> |
---|---|
date | Wed, 11 Apr 2012 09:27:06 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:8b6102e2a9b0 |
---|---|
1 // Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | |
2 // Copyright (C) 2008-2010 Conrad Sanderson | |
3 // | |
4 // This file is part of the Armadillo C++ library. | |
5 // It is provided without any warranty of fitness | |
6 // for any purpose. You can redistribute this file | |
7 // and/or modify it under the terms of the GNU | |
8 // Lesser General Public License (LGPL) as published | |
9 // by the Free Software Foundation, either version 3 | |
10 // of the License or (at your option) any later version. | |
11 // (see http://www.opensource.org/licenses for more info) | |
12 | |
13 | |
14 //! \addtogroup op_cx_scalar | |
15 //! @{ | |
16 | |
17 | |
18 | |
19 template<typename T1> | |
20 inline | |
21 void | |
22 op_cx_scalar_times::apply | |
23 ( | |
24 Mat< typename std::complex<typename T1::pod_type> >& out, | |
25 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_times>& X | |
26 ) | |
27 { | |
28 arma_extra_debug_sigprint(); | |
29 | |
30 typedef typename std::complex<typename T1::pod_type> eT; | |
31 typedef typename T1::pod_type T; | |
32 | |
33 const Proxy<T1> A(X.m); | |
34 | |
35 out.set_size(A.get_n_rows(), A.get_n_cols()); | |
36 | |
37 const eT k = X.aux_out_eT; | |
38 const uword n_elem = out.n_elem; | |
39 eT* out_mem = out.memptr(); | |
40 | |
41 for(uword i=0; i<n_elem; ++i) | |
42 { | |
43 out_mem[i] = A[i] * k; | |
44 } | |
45 } | |
46 | |
47 | |
48 | |
49 template<typename T1> | |
50 inline | |
51 void | |
52 op_cx_scalar_plus::apply | |
53 ( | |
54 Mat< typename std::complex<typename T1::pod_type> >& out, | |
55 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_plus>& X | |
56 ) | |
57 { | |
58 arma_extra_debug_sigprint(); | |
59 | |
60 typedef typename std::complex<typename T1::pod_type> eT; | |
61 typedef typename T1::pod_type T; | |
62 | |
63 const Proxy<T1> A(X.m); | |
64 | |
65 out.set_size(A.get_n_rows(), A.get_n_cols()); | |
66 | |
67 const eT k = X.aux_out_eT; | |
68 const uword n_elem = out.n_elem; | |
69 eT* out_mem = out.memptr(); | |
70 | |
71 for(uword i=0; i<n_elem; ++i) | |
72 { | |
73 out_mem[i] = A[i] + k; | |
74 } | |
75 } | |
76 | |
77 | |
78 | |
79 template<typename T1> | |
80 inline | |
81 void | |
82 op_cx_scalar_minus_pre::apply | |
83 ( | |
84 Mat< typename std::complex<typename T1::pod_type> >& out, | |
85 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_pre>& X | |
86 ) | |
87 { | |
88 arma_extra_debug_sigprint(); | |
89 | |
90 typedef typename std::complex<typename T1::pod_type> eT; | |
91 typedef typename T1::pod_type T; | |
92 | |
93 const Proxy<T1> A(X.m); | |
94 | |
95 out.set_size(A.get_n_rows(), A.get_n_cols()); | |
96 | |
97 const eT k = X.aux_out_eT; | |
98 const uword n_elem = out.n_elem; | |
99 eT* out_mem = out.memptr(); | |
100 | |
101 for(uword i=0; i<n_elem; ++i) | |
102 { | |
103 out_mem[i] = k - A[i]; | |
104 } | |
105 } | |
106 | |
107 | |
108 | |
109 template<typename T1> | |
110 inline | |
111 void | |
112 op_cx_scalar_minus_post::apply | |
113 ( | |
114 Mat< typename std::complex<typename T1::pod_type> >& out, | |
115 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_post>& X | |
116 ) | |
117 { | |
118 arma_extra_debug_sigprint(); | |
119 | |
120 typedef typename std::complex<typename T1::pod_type> eT; | |
121 typedef typename T1::pod_type T; | |
122 | |
123 const Proxy<T1> A(X.m); | |
124 | |
125 out.set_size(A.get_n_rows(), A.get_n_cols()); | |
126 | |
127 const eT k = X.aux_out_eT; | |
128 const uword n_elem = out.n_elem; | |
129 eT* out_mem = out.memptr(); | |
130 | |
131 for(uword i=0; i<n_elem; ++i) | |
132 { | |
133 out_mem[i] = A[i] - k; | |
134 } | |
135 } | |
136 | |
137 | |
138 | |
139 template<typename T1> | |
140 inline | |
141 void | |
142 op_cx_scalar_div_pre::apply | |
143 ( | |
144 Mat< typename std::complex<typename T1::pod_type> >& out, | |
145 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_div_pre>& X | |
146 ) | |
147 { | |
148 arma_extra_debug_sigprint(); | |
149 | |
150 typedef typename std::complex<typename T1::pod_type> eT; | |
151 typedef typename T1::pod_type T; | |
152 | |
153 const Proxy<T1> A(X.m); | |
154 | |
155 out.set_size(A.get_n_rows(), A.get_n_cols()); | |
156 | |
157 const eT k = X.aux_out_eT; | |
158 const uword n_elem = out.n_elem; | |
159 eT* out_mem = out.memptr(); | |
160 | |
161 for(uword i=0; i<n_elem; ++i) | |
162 { | |
163 out_mem[i] = k / A[i]; | |
164 } | |
165 } | |
166 | |
167 | |
168 | |
169 template<typename T1> | |
170 inline | |
171 void | |
172 op_cx_scalar_div_post::apply | |
173 ( | |
174 Mat< typename std::complex<typename T1::pod_type> >& out, | |
175 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_div_post>& X | |
176 ) | |
177 { | |
178 arma_extra_debug_sigprint(); | |
179 | |
180 typedef typename std::complex<typename T1::pod_type> eT; | |
181 typedef typename T1::pod_type T; | |
182 | |
183 const Proxy<T1> A(X.m); | |
184 | |
185 out.set_size(A.get_n_rows(), A.get_n_cols()); | |
186 | |
187 const eT k = X.aux_out_eT; | |
188 const uword n_elem = out.n_elem; | |
189 eT* out_mem = out.memptr(); | |
190 | |
191 for(uword i=0; i<n_elem; ++i) | |
192 { | |
193 out_mem[i] = A[i] / k; | |
194 } | |
195 } | |
196 | |
197 | |
198 | |
199 // | |
200 // | |
201 // | |
202 | |
203 | |
204 | |
205 template<typename T1> | |
206 inline | |
207 void | |
208 op_cx_scalar_times::apply | |
209 ( | |
210 Cube< typename std::complex<typename T1::pod_type> >& out, | |
211 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_times>& X | |
212 ) | |
213 { | |
214 arma_extra_debug_sigprint(); | |
215 | |
216 typedef typename std::complex<typename T1::pod_type> eT; | |
217 typedef typename T1::pod_type T; | |
218 | |
219 const ProxyCube<T1> A(X.m); | |
220 | |
221 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices()); | |
222 | |
223 const eT k = X.aux_out_eT; | |
224 const uword n_elem = out.n_elem; | |
225 eT* out_mem = out.memptr(); | |
226 | |
227 for(uword i=0; i<n_elem; ++i) | |
228 { | |
229 out_mem[i] = A[i] * k; | |
230 } | |
231 } | |
232 | |
233 | |
234 | |
235 template<typename T1> | |
236 inline | |
237 void | |
238 op_cx_scalar_plus::apply | |
239 ( | |
240 Cube< typename std::complex<typename T1::pod_type> >& out, | |
241 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_plus>& X | |
242 ) | |
243 { | |
244 arma_extra_debug_sigprint(); | |
245 | |
246 typedef typename std::complex<typename T1::pod_type> eT; | |
247 typedef typename T1::pod_type T; | |
248 | |
249 const ProxyCube<T1> A(X.m); | |
250 | |
251 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices()); | |
252 | |
253 const eT k = X.aux_out_eT; | |
254 const uword n_elem = out.n_elem; | |
255 eT* out_mem = out.memptr(); | |
256 | |
257 for(uword i=0; i<n_elem; ++i) | |
258 { | |
259 out_mem[i] = A[i] + k; | |
260 } | |
261 } | |
262 | |
263 | |
264 | |
265 template<typename T1> | |
266 inline | |
267 void | |
268 op_cx_scalar_minus_pre::apply | |
269 ( | |
270 Cube< typename std::complex<typename T1::pod_type> >& out, | |
271 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_pre>& X | |
272 ) | |
273 { | |
274 arma_extra_debug_sigprint(); | |
275 | |
276 typedef typename std::complex<typename T1::pod_type> eT; | |
277 typedef typename T1::pod_type T; | |
278 | |
279 const ProxyCube<T1> A(X.m); | |
280 | |
281 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices()); | |
282 | |
283 const eT k = X.aux_out_eT; | |
284 const uword n_elem = out.n_elem; | |
285 eT* out_mem = out.memptr(); | |
286 | |
287 for(uword i=0; i<n_elem; ++i) | |
288 { | |
289 out_mem[i] = k - A[i]; | |
290 } | |
291 } | |
292 | |
293 | |
294 | |
295 template<typename T1> | |
296 inline | |
297 void | |
298 op_cx_scalar_minus_post::apply | |
299 ( | |
300 Cube< typename std::complex<typename T1::pod_type> >& out, | |
301 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_post>& X | |
302 ) | |
303 { | |
304 arma_extra_debug_sigprint(); | |
305 | |
306 typedef typename std::complex<typename T1::pod_type> eT; | |
307 typedef typename T1::pod_type T; | |
308 | |
309 const ProxyCube<T1> A(X.m); | |
310 | |
311 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices()); | |
312 | |
313 const eT k = X.aux_out_eT; | |
314 const uword n_elem = out.n_elem; | |
315 eT* out_mem = out.memptr(); | |
316 | |
317 for(uword i=0; i<n_elem; ++i) | |
318 { | |
319 out_mem[i] = A[i] - k; | |
320 } | |
321 } | |
322 | |
323 | |
324 | |
325 template<typename T1> | |
326 inline | |
327 void | |
328 op_cx_scalar_div_pre::apply | |
329 ( | |
330 Cube< typename std::complex<typename T1::pod_type> >& out, | |
331 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_div_pre>& X | |
332 ) | |
333 { | |
334 arma_extra_debug_sigprint(); | |
335 | |
336 typedef typename std::complex<typename T1::pod_type> eT; | |
337 typedef typename T1::pod_type T; | |
338 | |
339 const ProxyCube<T1> A(X.m); | |
340 | |
341 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices()); | |
342 | |
343 const eT k = X.aux_out_eT; | |
344 const uword n_elem = out.n_elem; | |
345 eT* out_mem = out.memptr(); | |
346 | |
347 for(uword i=0; i<n_elem; ++i) | |
348 { | |
349 out_mem[i] = k / A[i]; | |
350 } | |
351 } | |
352 | |
353 | |
354 | |
355 template<typename T1> | |
356 inline | |
357 void | |
358 op_cx_scalar_div_post::apply | |
359 ( | |
360 Cube< typename std::complex<typename T1::pod_type> >& out, | |
361 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_div_post>& X | |
362 ) | |
363 { | |
364 arma_extra_debug_sigprint(); | |
365 | |
366 typedef typename std::complex<typename T1::pod_type> eT; | |
367 typedef typename T1::pod_type T; | |
368 | |
369 const ProxyCube<T1> A(X.m); | |
370 | |
371 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices()); | |
372 | |
373 const eT k = X.aux_out_eT; | |
374 const uword n_elem = out.n_elem; | |
375 eT* out_mem = out.memptr(); | |
376 | |
377 for(uword i=0; i<n_elem; ++i) | |
378 { | |
379 out_mem[i] = A[i] / k; | |
380 } | |
381 } | |
382 | |
383 | |
384 | |
385 //! @} |