max@0
|
1 // Copyright (C) 2008-2011 NICTA (www.nicta.com.au)
|
max@0
|
2 // Copyright (C) 2008-2011 Conrad Sanderson
|
max@0
|
3 //
|
max@0
|
4 // This file is part of the Armadillo C++ library.
|
max@0
|
5 // It is provided without any warranty of fitness
|
max@0
|
6 // for any purpose. You can redistribute this file
|
max@0
|
7 // and/or modify it under the terms of the GNU
|
max@0
|
8 // Lesser General Public License (LGPL) as published
|
max@0
|
9 // by the Free Software Foundation, either version 3
|
max@0
|
10 // of the License or (at your option) any later version.
|
max@0
|
11 // (see http://www.opensource.org/licenses for more info)
|
max@0
|
12
|
max@0
|
13
|
max@0
|
14 //! \addtogroup op_misc
|
max@0
|
15 //! @{
|
max@0
|
16
|
max@0
|
17
|
max@0
|
18
|
max@0
|
19 template<typename T1>
|
max@0
|
20 inline
|
max@0
|
21 void
|
max@0
|
22 op_real::apply( Mat<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_real>& X )
|
max@0
|
23 {
|
max@0
|
24 arma_extra_debug_sigprint();
|
max@0
|
25
|
max@0
|
26 typedef typename T1::pod_type T;
|
max@0
|
27
|
max@0
|
28 const Proxy<T1> A(X.m);
|
max@0
|
29
|
max@0
|
30 out.set_size(A.get_n_rows(), A.get_n_cols());
|
max@0
|
31
|
max@0
|
32 const uword n_elem = out.n_elem;
|
max@0
|
33 T* out_mem = out.memptr();
|
max@0
|
34
|
max@0
|
35 for(uword i=0; i<n_elem; ++i)
|
max@0
|
36 {
|
max@0
|
37 out_mem[i] = std::real(A[i]);
|
max@0
|
38 }
|
max@0
|
39 }
|
max@0
|
40
|
max@0
|
41
|
max@0
|
42
|
max@0
|
43 template<typename T1>
|
max@0
|
44 inline
|
max@0
|
45 void
|
max@0
|
46 op_real::apply( Cube<typename T1::pod_type>& out, const mtOpCube<typename T1::pod_type, T1, op_real>& X )
|
max@0
|
47 {
|
max@0
|
48 arma_extra_debug_sigprint();
|
max@0
|
49
|
max@0
|
50 typedef typename T1::pod_type T;
|
max@0
|
51
|
max@0
|
52 const ProxyCube<T1> A(X.m);
|
max@0
|
53
|
max@0
|
54 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
|
max@0
|
55
|
max@0
|
56 const uword n_elem = out.n_elem;
|
max@0
|
57 T* out_mem = out.memptr();
|
max@0
|
58
|
max@0
|
59 for(uword i=0; i<n_elem; ++i)
|
max@0
|
60 {
|
max@0
|
61 out_mem[i] = std::real(A[i]);
|
max@0
|
62 }
|
max@0
|
63 }
|
max@0
|
64
|
max@0
|
65
|
max@0
|
66
|
max@0
|
67 template<typename T1>
|
max@0
|
68 inline
|
max@0
|
69 void
|
max@0
|
70 op_imag::apply( Mat<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_imag>& X )
|
max@0
|
71 {
|
max@0
|
72 arma_extra_debug_sigprint();
|
max@0
|
73
|
max@0
|
74 typedef typename T1::pod_type T;
|
max@0
|
75
|
max@0
|
76 const Proxy<T1> A(X.m);
|
max@0
|
77
|
max@0
|
78 out.set_size(A.get_n_rows(), A.get_n_cols());
|
max@0
|
79
|
max@0
|
80 const uword n_elem = out.n_elem;
|
max@0
|
81 T* out_mem = out.memptr();
|
max@0
|
82
|
max@0
|
83 for(uword i=0; i<n_elem; ++i)
|
max@0
|
84 {
|
max@0
|
85 out_mem[i] = std::imag(A[i]);
|
max@0
|
86 }
|
max@0
|
87 }
|
max@0
|
88
|
max@0
|
89
|
max@0
|
90
|
max@0
|
91 template<typename T1>
|
max@0
|
92 inline
|
max@0
|
93 void
|
max@0
|
94 op_imag::apply( Cube<typename T1::pod_type>& out, const mtOpCube<typename T1::pod_type, T1, op_imag>& X )
|
max@0
|
95 {
|
max@0
|
96 arma_extra_debug_sigprint();
|
max@0
|
97
|
max@0
|
98 typedef typename T1::pod_type T;
|
max@0
|
99
|
max@0
|
100 const ProxyCube<T1> A(X.m);
|
max@0
|
101
|
max@0
|
102 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
|
max@0
|
103
|
max@0
|
104 const uword n_elem = out.n_elem;
|
max@0
|
105 T* out_mem = out.memptr();
|
max@0
|
106
|
max@0
|
107 for(uword i=0; i<n_elem; ++i)
|
max@0
|
108 {
|
max@0
|
109 out_mem[i] = std::imag(A[i]);
|
max@0
|
110 }
|
max@0
|
111 }
|
max@0
|
112
|
max@0
|
113
|
max@0
|
114
|
max@0
|
115 template<typename T1>
|
max@0
|
116 inline
|
max@0
|
117 void
|
max@0
|
118 op_abs::apply( Mat<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_abs>& X )
|
max@0
|
119 {
|
max@0
|
120 arma_extra_debug_sigprint();
|
max@0
|
121
|
max@0
|
122 typedef typename T1::pod_type T;
|
max@0
|
123
|
max@0
|
124 const Proxy<T1> A(X.m);
|
max@0
|
125
|
max@0
|
126 out.set_size(A.get_n_rows(), A.get_n_cols());
|
max@0
|
127
|
max@0
|
128 const uword n_elem = out.n_elem;
|
max@0
|
129 T* out_mem = out.memptr();
|
max@0
|
130
|
max@0
|
131 for(uword i=0; i<n_elem; ++i)
|
max@0
|
132 {
|
max@0
|
133 out_mem[i] = std::abs(A[i]);
|
max@0
|
134 }
|
max@0
|
135 }
|
max@0
|
136
|
max@0
|
137
|
max@0
|
138
|
max@0
|
139 template<typename T1>
|
max@0
|
140 inline
|
max@0
|
141 void
|
max@0
|
142 op_abs::apply( Cube<typename T1::pod_type>& out, const mtOpCube<typename T1::pod_type, T1, op_abs>& X )
|
max@0
|
143 {
|
max@0
|
144 arma_extra_debug_sigprint();
|
max@0
|
145
|
max@0
|
146 typedef typename T1::pod_type T;
|
max@0
|
147
|
max@0
|
148 const ProxyCube<T1> A(X.m);
|
max@0
|
149
|
max@0
|
150 out.set_size(A.get_n_rows(), A.get_n_cols(), A.get_n_slices());
|
max@0
|
151
|
max@0
|
152 const uword n_elem = out.n_elem;
|
max@0
|
153 T* out_mem = out.memptr();
|
max@0
|
154
|
max@0
|
155 for(uword i=0; i<n_elem; ++i)
|
max@0
|
156 {
|
max@0
|
157 out_mem[i] = std::abs(A[i]);
|
max@0
|
158 }
|
max@0
|
159 }
|
max@0
|
160
|
max@0
|
161
|
max@0
|
162
|
max@0
|
163 template<typename T1>
|
max@0
|
164 inline
|
max@0
|
165 void
|
max@0
|
166 op_sympd::apply( Mat<typename T1::elem_type>& out, const Op<T1, op_sympd>& X )
|
max@0
|
167 {
|
max@0
|
168 arma_extra_debug_sigprint();
|
max@0
|
169
|
max@0
|
170 out = X.m;
|
max@0
|
171 }
|
max@0
|
172
|
max@0
|
173
|
max@0
|
174
|
max@0
|
175 //! @}
|