00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00016
00017
00018
00019
00020
00021
00022 template<typename eT, typename T1>
00023 inline
00024 const mtOp<uword, T1, op_find>
00025 find(const Base<eT,T1>& X, const uword k = 0, const char* direction = "first")
00026 {
00027 arma_extra_debug_sigprint();
00028
00029 const char sig = direction[0];
00030
00031 arma_debug_check
00032 (
00033 (sig != 'f' && sig != 'F' && sig != 'l' && sig != 'L'),
00034 "find(): 3rd input argument must be \"first\" or \"last\""
00035 );
00036
00037 const uword type = (sig == 'f' || sig == 'F') ? 0 : 1;
00038
00039 return mtOp<uword, T1, op_find>(X.get_ref(), k, type);
00040 }
00041
00042
00043
00044
00045
00046
00047 template<typename T1>
00048 arma_inline
00049 const T1&
00050 real(const Base<typename T1::pod_type, T1>& X)
00051 {
00052 arma_extra_debug_sigprint();
00053
00054 return X.get_ref();
00055 }
00056
00057
00058
00059 template<typename T1>
00060 arma_inline
00061 const T1&
00062 real(const BaseCube<typename T1::pod_type, T1>& X)
00063 {
00064 arma_extra_debug_sigprint();
00065
00066 return X.get_ref();
00067 }
00068
00069
00070
00071 template<typename T1>
00072 inline
00073 const mtOp<typename T1::pod_type, T1, op_real>
00074 real(const Base<std::complex<typename T1::pod_type>, T1>& X)
00075 {
00076 arma_extra_debug_sigprint();
00077
00078 return mtOp<typename T1::pod_type, T1, op_real>( X.get_ref() );
00079 }
00080
00081
00082
00083 template<typename T1>
00084 inline
00085 const mtOpCube<typename T1::pod_type, T1, op_real>
00086 real(const BaseCube<std::complex<typename T1::pod_type>, T1>& X)
00087 {
00088 arma_extra_debug_sigprint();
00089
00090 return mtOpCube<typename T1::pod_type, T1, op_real>( X.get_ref() );
00091 }
00092
00093
00094
00095
00096
00097
00098 template<typename T1>
00099 inline
00100 const Gen<typename T1::pod_type, gen_zeros>
00101 imag(const Base<typename T1::pod_type,T1>& X)
00102 {
00103 arma_extra_debug_sigprint();
00104
00105 const Proxy<T1> A(X.get_ref());
00106
00107 return Gen<typename T1::pod_type, gen_zeros>(A.get_n_rows(), A.get_n_cols());
00108 }
00109
00110
00111
00112 template<typename T1>
00113 inline
00114 const GenCube<typename T1::pod_type, gen_zeros>
00115 imag(const BaseCube<typename T1::pod_type,T1>& X)
00116 {
00117 arma_extra_debug_sigprint();
00118
00119 const ProxyCube<T1> A(X.get_ref());
00120
00121 return GenCube<typename T1::pod_type, gen_zeros>(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
00122 }
00123
00124
00125
00126 template<typename T1>
00127 inline
00128 const mtOp<typename T1::pod_type, T1, op_imag>
00129 imag(const Base<std::complex<typename T1::pod_type>, T1>& X)
00130 {
00131 arma_extra_debug_sigprint();
00132
00133 return mtOp<typename T1::pod_type, T1, op_imag>( X.get_ref() );
00134 }
00135
00136
00137
00138 template<typename T1>
00139 inline
00140 const mtOpCube<typename T1::pod_type, T1, op_imag>
00141 imag(const BaseCube<std::complex<typename T1::pod_type>,T1>& X)
00142 {
00143 arma_extra_debug_sigprint();
00144
00145 return mtOpCube<typename T1::pod_type, T1, op_imag>( X.get_ref() );
00146 }
00147
00148
00149
00150
00151
00152
00153 template<typename T1>
00154 arma_inline
00155 const eOp<T1, eop_log>
00156 log(const Base<typename T1::elem_type,T1>& A)
00157 {
00158 arma_extra_debug_sigprint();
00159
00160 return eOp<T1, eop_log>(A.get_ref());
00161 }
00162
00163
00164
00165 template<typename T1>
00166 arma_inline
00167 const eOpCube<T1, eop_log>
00168 log(const BaseCube<typename T1::elem_type,T1>& A)
00169 {
00170 arma_extra_debug_sigprint();
00171
00172 return eOpCube<T1, eop_log>(A.get_ref());
00173 }
00174
00175
00176
00177
00178
00179
00180 template<typename T1>
00181 arma_inline
00182 const eOp<T1, eop_log2>
00183 log2(const Base<typename T1::elem_type,T1>& A)
00184 {
00185 arma_extra_debug_sigprint();
00186
00187 return eOp<T1, eop_log2>(A.get_ref());
00188 }
00189
00190
00191
00192 template<typename T1>
00193 arma_inline
00194 const eOpCube<T1, eop_log2>
00195 log2(const BaseCube<typename T1::elem_type,T1>& A)
00196 {
00197 arma_extra_debug_sigprint();
00198
00199 return eOpCube<T1, eop_log2>(A.get_ref());
00200 }
00201
00202
00203
00204
00205
00206
00207 template<typename T1>
00208 arma_inline
00209 const eOp<T1, eop_log10>
00210 log10(const Base<typename T1::elem_type,T1>& A)
00211 {
00212 arma_extra_debug_sigprint();
00213
00214 return eOp<T1, eop_log10>(A.get_ref());
00215 }
00216
00217
00218
00219 template<typename T1>
00220 arma_inline
00221 const eOpCube<T1, eop_log10>
00222 log10(const BaseCube<typename T1::elem_type,T1>& A)
00223 {
00224 arma_extra_debug_sigprint();
00225
00226 return eOpCube<T1, eop_log10>(A.get_ref());
00227 }
00228
00229
00230
00231
00232
00233
00234 template<typename T1>
00235 arma_inline
00236 const eOp<T1, eop_exp>
00237 exp(const Base<typename T1::elem_type,T1>& A)
00238 {
00239 arma_extra_debug_sigprint();
00240
00241 return eOp<T1, eop_exp>(A.get_ref());
00242 }
00243
00244
00245
00246 template<typename T1>
00247 arma_inline
00248 const eOpCube<T1, eop_exp>
00249 exp(const BaseCube<typename T1::elem_type,T1>& A)
00250 {
00251 arma_extra_debug_sigprint();
00252
00253 return eOpCube<T1, eop_exp>(A.get_ref());
00254 }
00255
00256
00257
00258
00259
00260 template<typename T1>
00261 arma_inline
00262 const eOp<T1, eop_exp2>
00263 exp2(const Base<typename T1::elem_type,T1>& A)
00264 {
00265 arma_extra_debug_sigprint();
00266
00267 return eOp<T1, eop_exp2>(A.get_ref());
00268 }
00269
00270
00271
00272 template<typename T1>
00273 arma_inline
00274 const eOpCube<T1, eop_exp2>
00275 exp2(const BaseCube<typename T1::elem_type,T1>& A)
00276 {
00277 arma_extra_debug_sigprint();
00278
00279 return eOpCube<T1, eop_exp2>(A.get_ref());
00280 }
00281
00282
00283
00284
00285
00286 template<typename T1>
00287 arma_inline
00288 const eOp<T1, eop_exp10>
00289 exp10(const Base<typename T1::elem_type,T1>& A)
00290 {
00291 arma_extra_debug_sigprint();
00292
00293 return eOp<T1, eop_exp10>(A.get_ref());
00294 }
00295
00296
00297
00298 template<typename T1>
00299 arma_inline
00300 const eOpCube<T1, eop_exp10>
00301 exp10(const BaseCube<typename T1::elem_type,T1>& A)
00302 {
00303 arma_extra_debug_sigprint();
00304
00305 return eOpCube<T1, eop_exp10>(A.get_ref());
00306 }
00307
00308
00309
00310
00311
00312
00313
00314 template<typename T1>
00315 arma_inline
00316 const eOp<T1, eop_abs>
00317 abs(const Base<typename T1::elem_type,T1>& X, const typename arma_not_cx<typename T1::elem_type>::result* junk = 0)
00318 {
00319 arma_extra_debug_sigprint();
00320
00321 arma_ignore(junk);
00322
00323 return eOp<T1, eop_abs>(X.get_ref());
00324 }
00325
00326
00327
00328 template<typename T1>
00329 arma_inline
00330 const eOpCube<T1, eop_abs>
00331 abs(const BaseCube<typename T1::elem_type,T1>& X, const typename arma_not_cx<typename T1::elem_type>::result* junk = 0)
00332 {
00333 arma_extra_debug_sigprint();
00334
00335 arma_ignore(junk);
00336
00337 return eOpCube<T1, eop_abs>(X.get_ref());
00338 }
00339
00340
00341
00342 template<typename T1>
00343 inline
00344 const mtOp<typename T1::pod_type, T1, op_abs>
00345 abs(const Base<std::complex<typename T1::pod_type>, T1>& X, const typename arma_cx_only<typename T1::elem_type>::result* junk = 0)
00346 {
00347 arma_extra_debug_sigprint();
00348
00349 arma_ignore(junk);
00350
00351 return mtOp<typename T1::pod_type, T1, op_abs>( X.get_ref() );
00352 }
00353
00354
00355
00356 template<typename T1>
00357 inline
00358 const mtOpCube<typename T1::pod_type, T1, op_abs>
00359 abs(const BaseCube< std::complex<typename T1::pod_type>,T1>& X, const typename arma_cx_only<typename T1::elem_type>::result* junk = 0)
00360 {
00361 arma_extra_debug_sigprint();
00362
00363 arma_ignore(junk);
00364
00365 return mtOpCube<typename T1::pod_type, T1, op_abs>( X.get_ref() );
00366 }
00367
00368
00369
00370
00371
00372
00373 template<typename T1>
00374 arma_inline
00375 const eOp<T1, eop_square>
00376 square(const Base<typename T1::elem_type,T1>& A)
00377 {
00378 arma_extra_debug_sigprint();
00379
00380 return eOp<T1, eop_square>(A.get_ref());
00381 }
00382
00383
00384
00385 template<typename T1>
00386 arma_inline
00387 const eOpCube<T1, eop_square>
00388 square(const BaseCube<typename T1::elem_type,T1>& A)
00389 {
00390 arma_extra_debug_sigprint();
00391
00392 return eOpCube<T1, eop_square>(A.get_ref());
00393 }
00394
00395
00396
00397
00398
00399
00400 template<typename T1>
00401 arma_inline
00402 const eOp<T1, eop_sqrt>
00403 sqrt(const Base<typename T1::elem_type,T1>& A)
00404 {
00405 arma_extra_debug_sigprint();
00406
00407 return eOp<T1, eop_sqrt>(A.get_ref());
00408 }
00409
00410
00411
00412 template<typename T1>
00413 arma_inline
00414 const eOpCube<T1, eop_sqrt>
00415 sqrt(const BaseCube<typename T1::elem_type,T1>& A)
00416 {
00417 arma_extra_debug_sigprint();
00418
00419 return eOpCube<T1, eop_sqrt>(A.get_ref());
00420 }
00421
00422
00423
00424
00425
00426
00427 template<typename T1>
00428 arma_inline
00429 const T1&
00430 conj(const Base<typename T1::pod_type,T1>& A)
00431 {
00432 arma_extra_debug_sigprint();
00433
00434 return A.get_ref();
00435 }
00436
00437
00438
00439 template<typename T1>
00440 arma_inline
00441 const T1&
00442 conj(const BaseCube<typename T1::pod_type,T1>& A)
00443 {
00444 arma_extra_debug_sigprint();
00445
00446 return A.get_ref();
00447 }
00448
00449
00450
00451 template<typename T1>
00452 arma_inline
00453 const eOp<T1, eop_conj>
00454 conj(const Base<std::complex<typename T1::pod_type>,T1>& A)
00455 {
00456 arma_extra_debug_sigprint();
00457
00458 return eOp<T1, eop_conj>(A.get_ref());
00459 }
00460
00461
00462
00463 template<typename T1>
00464 arma_inline
00465 const eOpCube<T1, eop_conj>
00466 conj(const BaseCube<std::complex<typename T1::pod_type>,T1>& A)
00467 {
00468 arma_extra_debug_sigprint();
00469
00470 return eOpCube<T1, eop_conj>(A.get_ref());
00471 }
00472
00473
00474
00475 template<typename T1>
00476 arma_inline
00477 const T1&
00478 conj(const eOp<T1, eop_conj>& A)
00479 {
00480 arma_extra_debug_sigprint();
00481
00482 return A.m;
00483 }
00484
00485
00486
00487 template<typename T1>
00488 arma_inline
00489 const T1&
00490 conj(const eOpCube<T1, eop_conj>& A)
00491 {
00492 arma_extra_debug_sigprint();
00493
00494 return A.m;
00495 }
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517 template<typename T1>
00518 arma_inline
00519 const eOp<T1, eop_pow>
00520 pow(const Base<typename T1::elem_type,T1>& A, const typename T1::elem_type exponent)
00521 {
00522 arma_extra_debug_sigprint();
00523
00524 return eOp<T1, eop_pow>(A.get_ref(), exponent);
00525 }
00526
00527
00528
00529 template<typename T1>
00530 arma_inline
00531 const eOpCube<T1, eop_pow>
00532 pow(const BaseCube<typename T1::elem_type,T1>& A, const typename T1::elem_type exponent)
00533 {
00534 arma_extra_debug_sigprint();
00535
00536 return eOpCube<T1, eop_pow>(A.get_ref(), exponent);
00537 }
00538
00539
00540
00541
00542
00543 template<typename T1>
00544 arma_inline
00545 const eOp<T1, eop_pow>
00546 pow(const Base<typename T1::elem_type,T1>& A, const typename T1::elem_type::value_type exponent)
00547 {
00548 arma_extra_debug_sigprint();
00549
00550 typedef typename T1::elem_type eT;
00551
00552 return eOp<T1, eop_pow>(A.get_ref(), eT(exponent));
00553 }
00554
00555
00556
00557 template<typename T1>
00558 arma_inline
00559 const eOpCube<T1, eop_pow>
00560 pow(const BaseCube<typename T1::elem_type,T1>& A, const typename T1::elem_type::value_type exponent)
00561 {
00562 arma_extra_debug_sigprint();
00563
00564 typedef typename T1::elem_type eT;
00565
00566 return eOpCube<T1, eop_pow>(A.get_ref(), eT(exponent));
00567 }
00568
00569
00570
00571
00572
00573
00574 template<typename T1>
00575 arma_inline
00576 const eOp<T1, eop_floor>
00577 floor(const Base<typename T1::elem_type,T1>& A)
00578 {
00579 arma_extra_debug_sigprint();
00580
00581 return eOp<T1, eop_floor>(A.get_ref());
00582 }
00583
00584
00585
00586 template<typename T1>
00587 arma_inline
00588 const eOpCube<T1, eop_floor>
00589 floor(const BaseCube<typename T1::elem_type,T1>& A)
00590 {
00591 arma_extra_debug_sigprint();
00592
00593 return eOpCube<T1, eop_floor>(A.get_ref());
00594 }
00595
00596
00597
00598
00599
00600
00601 template<typename T1>
00602 arma_inline
00603 const eOp<T1, eop_ceil>
00604 ceil(const Base<typename T1::elem_type,T1>& A)
00605 {
00606 arma_extra_debug_sigprint();
00607
00608 return eOp<T1, eop_ceil>(A.get_ref());
00609 }
00610
00611
00612
00613 template<typename T1>
00614 arma_inline
00615 const eOpCube<T1, eop_ceil>
00616 ceil(const BaseCube<typename T1::elem_type,T1>& A)
00617 {
00618 arma_extra_debug_sigprint();
00619
00620 return eOpCube<T1, eop_ceil>(A.get_ref());
00621 }
00622
00623
00624