00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00016
00017
00018
00019 template<typename T1>
00020 inline
00021 void
00022 op_cx_scalar_times::apply
00023 (
00024 Mat< typename std::complex<typename T1::pod_type> >& out,
00025 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_times>& X
00026 )
00027 {
00028 arma_extra_debug_sigprint();
00029
00030 typedef typename std::complex<typename T1::pod_type> eT;
00031 typedef typename T1::pod_type T;
00032
00033 const Proxy<T1> A(X.m);
00034
00035 out.set_size(A.get_n_rows(), A.get_n_cols());
00036
00037 const eT k = X.aux_out_eT;
00038 const uword n_elem = out.n_elem;
00039 eT* out_mem = out.memptr();
00040
00041 for(uword i=0; i<n_elem; ++i)
00042 {
00043 out_mem[i] = A[i] * k;
00044 }
00045 }
00046
00047
00048
00049 template<typename T1>
00050 inline
00051 void
00052 op_cx_scalar_plus::apply
00053 (
00054 Mat< typename std::complex<typename T1::pod_type> >& out,
00055 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_plus>& X
00056 )
00057 {
00058 arma_extra_debug_sigprint();
00059
00060 typedef typename std::complex<typename T1::pod_type> eT;
00061 typedef typename T1::pod_type T;
00062
00063 const Proxy<T1> A(X.m);
00064
00065 out.set_size(A.get_n_rows(), A.get_n_cols());
00066
00067 const eT k = X.aux_out_eT;
00068 const uword n_elem = out.n_elem;
00069 eT* out_mem = out.memptr();
00070
00071 for(uword i=0; i<n_elem; ++i)
00072 {
00073 out_mem[i] = A[i] + k;
00074 }
00075 }
00076
00077
00078
00079 template<typename T1>
00080 inline
00081 void
00082 op_cx_scalar_minus_pre::apply
00083 (
00084 Mat< typename std::complex<typename T1::pod_type> >& out,
00085 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_pre>& X
00086 )
00087 {
00088 arma_extra_debug_sigprint();
00089
00090 typedef typename std::complex<typename T1::pod_type> eT;
00091 typedef typename T1::pod_type T;
00092
00093 const Proxy<T1> A(X.m);
00094
00095 out.set_size(A.get_n_rows(), A.get_n_cols());
00096
00097 const eT k = X.aux_out_eT;
00098 const uword n_elem = out.n_elem;
00099 eT* out_mem = out.memptr();
00100
00101 for(uword i=0; i<n_elem; ++i)
00102 {
00103 out_mem[i] = k - A[i];
00104 }
00105 }
00106
00107
00108
00109 template<typename T1>
00110 inline
00111 void
00112 op_cx_scalar_minus_post::apply
00113 (
00114 Mat< typename std::complex<typename T1::pod_type> >& out,
00115 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_post>& X
00116 )
00117 {
00118 arma_extra_debug_sigprint();
00119
00120 typedef typename std::complex<typename T1::pod_type> eT;
00121 typedef typename T1::pod_type T;
00122
00123 const Proxy<T1> A(X.m);
00124
00125 out.set_size(A.get_n_rows(), A.get_n_cols());
00126
00127 const eT k = X.aux_out_eT;
00128 const uword n_elem = out.n_elem;
00129 eT* out_mem = out.memptr();
00130
00131 for(uword i=0; i<n_elem; ++i)
00132 {
00133 out_mem[i] = A[i] - k;
00134 }
00135 }
00136
00137
00138
00139 template<typename T1>
00140 inline
00141 void
00142 op_cx_scalar_div_pre::apply
00143 (
00144 Mat< typename std::complex<typename T1::pod_type> >& out,
00145 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_div_pre>& X
00146 )
00147 {
00148 arma_extra_debug_sigprint();
00149
00150 typedef typename std::complex<typename T1::pod_type> eT;
00151 typedef typename T1::pod_type T;
00152
00153 const Proxy<T1> A(X.m);
00154
00155 out.set_size(A.get_n_rows(), A.get_n_cols());
00156
00157 const eT k = X.aux_out_eT;
00158 const uword n_elem = out.n_elem;
00159 eT* out_mem = out.memptr();
00160
00161 for(uword i=0; i<n_elem; ++i)
00162 {
00163 out_mem[i] = k / A[i];
00164 }
00165 }
00166
00167
00168
00169 template<typename T1>
00170 inline
00171 void
00172 op_cx_scalar_div_post::apply
00173 (
00174 Mat< typename std::complex<typename T1::pod_type> >& out,
00175 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_div_post>& X
00176 )
00177 {
00178 arma_extra_debug_sigprint();
00179
00180 typedef typename std::complex<typename T1::pod_type> eT;
00181 typedef typename T1::pod_type T;
00182
00183 const Proxy<T1> A(X.m);
00184
00185 out.set_size(A.get_n_rows(), A.get_n_cols());
00186
00187 const eT k = X.aux_out_eT;
00188 const uword n_elem = out.n_elem;
00189 eT* out_mem = out.memptr();
00190
00191 for(uword i=0; i<n_elem; ++i)
00192 {
00193 out_mem[i] = A[i] / k;
00194 }
00195 }
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205 template<typename T1>
00206 inline
00207 void
00208 op_cx_scalar_times::apply
00209 (
00210 Cube< typename std::complex<typename T1::pod_type> >& out,
00211 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_times>& X
00212 )
00213 {
00214 arma_extra_debug_sigprint();
00215
00216 typedef typename std::complex<typename T1::pod_type> eT;
00217 typedef typename T1::pod_type T;
00218
00219 const ProxyCube<T1> A(X.m);
00220
00221 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
00222
00223 const eT k = X.aux_out_eT;
00224 const uword n_elem = out.n_elem;
00225 eT* out_mem = out.memptr();
00226
00227 for(uword i=0; i<n_elem; ++i)
00228 {
00229 out_mem[i] = A[i] * k;
00230 }
00231 }
00232
00233
00234
00235 template<typename T1>
00236 inline
00237 void
00238 op_cx_scalar_plus::apply
00239 (
00240 Cube< typename std::complex<typename T1::pod_type> >& out,
00241 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_plus>& X
00242 )
00243 {
00244 arma_extra_debug_sigprint();
00245
00246 typedef typename std::complex<typename T1::pod_type> eT;
00247 typedef typename T1::pod_type T;
00248
00249 const ProxyCube<T1> A(X.m);
00250
00251 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
00252
00253 const eT k = X.aux_out_eT;
00254 const uword n_elem = out.n_elem;
00255 eT* out_mem = out.memptr();
00256
00257 for(uword i=0; i<n_elem; ++i)
00258 {
00259 out_mem[i] = A[i] + k;
00260 }
00261 }
00262
00263
00264
00265 template<typename T1>
00266 inline
00267 void
00268 op_cx_scalar_minus_pre::apply
00269 (
00270 Cube< typename std::complex<typename T1::pod_type> >& out,
00271 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_pre>& X
00272 )
00273 {
00274 arma_extra_debug_sigprint();
00275
00276 typedef typename std::complex<typename T1::pod_type> eT;
00277 typedef typename T1::pod_type T;
00278
00279 const ProxyCube<T1> A(X.m);
00280
00281 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
00282
00283 const eT k = X.aux_out_eT;
00284 const uword n_elem = out.n_elem;
00285 eT* out_mem = out.memptr();
00286
00287 for(uword i=0; i<n_elem; ++i)
00288 {
00289 out_mem[i] = k - A[i];
00290 }
00291 }
00292
00293
00294
00295 template<typename T1>
00296 inline
00297 void
00298 op_cx_scalar_minus_post::apply
00299 (
00300 Cube< typename std::complex<typename T1::pod_type> >& out,
00301 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_post>& X
00302 )
00303 {
00304 arma_extra_debug_sigprint();
00305
00306 typedef typename std::complex<typename T1::pod_type> eT;
00307 typedef typename T1::pod_type T;
00308
00309 const ProxyCube<T1> A(X.m);
00310
00311 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
00312
00313 const eT k = X.aux_out_eT;
00314 const uword n_elem = out.n_elem;
00315 eT* out_mem = out.memptr();
00316
00317 for(uword i=0; i<n_elem; ++i)
00318 {
00319 out_mem[i] = A[i] - k;
00320 }
00321 }
00322
00323
00324
00325 template<typename T1>
00326 inline
00327 void
00328 op_cx_scalar_div_pre::apply
00329 (
00330 Cube< typename std::complex<typename T1::pod_type> >& out,
00331 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_div_pre>& X
00332 )
00333 {
00334 arma_extra_debug_sigprint();
00335
00336 typedef typename std::complex<typename T1::pod_type> eT;
00337 typedef typename T1::pod_type T;
00338
00339 const ProxyCube<T1> A(X.m);
00340
00341 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
00342
00343 const eT k = X.aux_out_eT;
00344 const uword n_elem = out.n_elem;
00345 eT* out_mem = out.memptr();
00346
00347 for(uword i=0; i<n_elem; ++i)
00348 {
00349 out_mem[i] = k / A[i];
00350 }
00351 }
00352
00353
00354
00355 template<typename T1>
00356 inline
00357 void
00358 op_cx_scalar_div_post::apply
00359 (
00360 Cube< typename std::complex<typename T1::pod_type> >& out,
00361 const mtOpCube<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_div_post>& X
00362 )
00363 {
00364 arma_extra_debug_sigprint();
00365
00366 typedef typename std::complex<typename T1::pod_type> eT;
00367 typedef typename T1::pod_type T;
00368
00369 const ProxyCube<T1> A(X.m);
00370
00371 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
00372
00373 const eT k = X.aux_out_eT;
00374 const uword n_elem = out.n_elem;
00375 eT* out_mem = out.memptr();
00376
00377 for(uword i=0; i<n_elem; ++i)
00378 {
00379 out_mem[i] = A[i] / k;
00380 }
00381 }
00382
00383
00384