Chris@49
|
1 // Copyright (C) 2011-2013 NICTA (www.nicta.com.au)
|
Chris@49
|
2 // Copyright (C) 2011-2013 Conrad Sanderson
|
Chris@49
|
3 //
|
Chris@49
|
4 // This Source Code Form is subject to the terms of the Mozilla Public
|
Chris@49
|
5 // License, v. 2.0. If a copy of the MPL was not distributed with this
|
Chris@49
|
6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
Chris@49
|
7
|
Chris@49
|
8
|
Chris@49
|
9 //! \addtogroup arrayops
|
Chris@49
|
10 //! @{
|
Chris@49
|
11
|
Chris@49
|
12
|
Chris@49
|
13 class arrayops
|
Chris@49
|
14 {
|
Chris@49
|
15 public:
|
Chris@49
|
16
|
Chris@49
|
17 template<typename eT>
|
Chris@49
|
18 arma_hot arma_inline static void
|
Chris@49
|
19 copy(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
20
|
Chris@49
|
21
|
Chris@49
|
22 template<typename eT>
|
Chris@49
|
23 static inline void
|
Chris@49
|
24 copy_big(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
25
|
Chris@49
|
26
|
Chris@49
|
27 template<typename eT>
|
Chris@49
|
28 arma_hot inline static void
|
Chris@49
|
29 copy_forwards(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
30
|
Chris@49
|
31
|
Chris@49
|
32 template<typename eT>
|
Chris@49
|
33 arma_hot inline static void
|
Chris@49
|
34 copy_backwards(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
35
|
Chris@49
|
36
|
Chris@49
|
37 //
|
Chris@49
|
38 // array = convert(array)
|
Chris@49
|
39
|
Chris@49
|
40 template<typename out_eT, typename in_eT>
|
Chris@49
|
41 arma_hot arma_inline static void
|
Chris@49
|
42 convert_cx_scalar(out_eT& out, const in_eT& in, const typename arma_not_cx<out_eT>::result* junk1 = 0, const typename arma_not_cx< in_eT>::result* junk2 = 0);
|
Chris@49
|
43
|
Chris@49
|
44 template<typename out_eT, typename in_T>
|
Chris@49
|
45 arma_hot arma_inline static void
|
Chris@49
|
46 convert_cx_scalar(out_eT& out, const std::complex<in_T>& in, const typename arma_not_cx<out_eT>::result* junk = 0);
|
Chris@49
|
47
|
Chris@49
|
48 template<typename out_T, typename in_T>
|
Chris@49
|
49 arma_hot arma_inline static void
|
Chris@49
|
50 convert_cx_scalar(std::complex<out_T>& out, const std::complex< in_T>& in);
|
Chris@49
|
51
|
Chris@49
|
52 template<typename out_eT, typename in_eT>
|
Chris@49
|
53 arma_hot inline static void
|
Chris@49
|
54 convert(out_eT* dest, const in_eT* src, const uword n_elem);
|
Chris@49
|
55
|
Chris@49
|
56 template<typename out_eT, typename in_eT>
|
Chris@49
|
57 arma_hot inline static void
|
Chris@49
|
58 convert_cx(out_eT* dest, const in_eT* src, const uword n_elem);
|
Chris@49
|
59
|
Chris@49
|
60
|
Chris@49
|
61 //
|
Chris@49
|
62 // array op= array
|
Chris@49
|
63
|
Chris@49
|
64 template<typename eT>
|
Chris@49
|
65 arma_hot inline static
|
Chris@49
|
66 void
|
Chris@49
|
67 inplace_plus(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
68
|
Chris@49
|
69 template<typename eT>
|
Chris@49
|
70 arma_hot inline static
|
Chris@49
|
71 void
|
Chris@49
|
72 inplace_minus(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
73
|
Chris@49
|
74 template<typename eT>
|
Chris@49
|
75 arma_hot inline static
|
Chris@49
|
76 void
|
Chris@49
|
77 inplace_mul(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
78
|
Chris@49
|
79 template<typename eT>
|
Chris@49
|
80 arma_hot inline static
|
Chris@49
|
81 void
|
Chris@49
|
82 inplace_div(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
83
|
Chris@49
|
84
|
Chris@49
|
85 template<typename eT>
|
Chris@49
|
86 arma_hot inline static
|
Chris@49
|
87 void
|
Chris@49
|
88 inplace_plus_base(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
89
|
Chris@49
|
90 template<typename eT>
|
Chris@49
|
91 arma_hot inline static
|
Chris@49
|
92 void
|
Chris@49
|
93 inplace_minus_base(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
94
|
Chris@49
|
95 template<typename eT>
|
Chris@49
|
96 arma_hot inline static
|
Chris@49
|
97 void
|
Chris@49
|
98 inplace_mul_base(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
99
|
Chris@49
|
100 template<typename eT>
|
Chris@49
|
101 arma_hot inline static
|
Chris@49
|
102 void
|
Chris@49
|
103 inplace_div_base(eT* dest, const eT* src, const uword n_elem);
|
Chris@49
|
104
|
Chris@49
|
105
|
Chris@49
|
106 //
|
Chris@49
|
107 // array op= scalar
|
Chris@49
|
108
|
Chris@49
|
109 template<typename eT>
|
Chris@49
|
110 arma_hot inline static
|
Chris@49
|
111 void
|
Chris@49
|
112 inplace_set(eT* dest, const eT val, const uword n_elem);
|
Chris@49
|
113
|
Chris@49
|
114 template<typename eT, const uword n_elem>
|
Chris@49
|
115 arma_hot inline static
|
Chris@49
|
116 void
|
Chris@49
|
117 inplace_set_fixed(eT* dest, const eT val);
|
Chris@49
|
118
|
Chris@49
|
119 template<typename eT>
|
Chris@49
|
120 arma_hot inline static
|
Chris@49
|
121 void
|
Chris@49
|
122 inplace_plus(eT* dest, const eT val, const uword n_elem);
|
Chris@49
|
123
|
Chris@49
|
124 template<typename eT>
|
Chris@49
|
125 arma_hot inline static
|
Chris@49
|
126 void
|
Chris@49
|
127 inplace_minus(eT* dest, const eT val, const uword n_elem);
|
Chris@49
|
128
|
Chris@49
|
129 template<typename eT>
|
Chris@49
|
130 arma_hot inline static void
|
Chris@49
|
131 inplace_mul(eT* dest, const eT val, const uword n_elem);
|
Chris@49
|
132
|
Chris@49
|
133 template<typename eT>
|
Chris@49
|
134 arma_hot inline static
|
Chris@49
|
135 void
|
Chris@49
|
136 inplace_div(eT* dest, const eT val, const uword n_elem);
|
Chris@49
|
137
|
Chris@49
|
138
|
Chris@49
|
139 //
|
Chris@49
|
140 // scalar = op(array)
|
Chris@49
|
141
|
Chris@49
|
142 template<typename eT>
|
Chris@49
|
143 arma_hot arma_pure inline static
|
Chris@49
|
144 eT
|
Chris@49
|
145 accumulate(const eT* src, const uword n_elem);
|
Chris@49
|
146
|
Chris@49
|
147 template<typename eT>
|
Chris@49
|
148 arma_hot arma_pure inline static
|
Chris@49
|
149 eT
|
Chris@49
|
150 product(const eT* src, const uword n_elem);
|
Chris@49
|
151
|
Chris@49
|
152 template<typename eT>
|
Chris@49
|
153 arma_hot arma_pure inline static
|
Chris@49
|
154 bool
|
Chris@49
|
155 is_finite(const eT* src, const uword n_elem);
|
Chris@49
|
156
|
Chris@49
|
157 template<typename eT>
|
Chris@49
|
158 arma_hot arma_pure inline static
|
Chris@49
|
159 typename get_pod_type<eT>::result
|
Chris@49
|
160 norm_1(const eT* src, const uword n_elem);
|
Chris@49
|
161
|
Chris@49
|
162 template<typename eT>
|
Chris@49
|
163 arma_hot arma_pure inline static
|
Chris@49
|
164 eT
|
Chris@49
|
165 norm_2(const eT* src, const uword n_elem, const typename arma_not_cx<eT>::result* junk = 0);
|
Chris@49
|
166
|
Chris@49
|
167 template<typename T>
|
Chris@49
|
168 arma_hot arma_pure inline static
|
Chris@49
|
169 T
|
Chris@49
|
170 norm_2(const std::complex<T>* src, const uword n_elem);
|
Chris@49
|
171
|
Chris@49
|
172 template<typename eT>
|
Chris@49
|
173 arma_hot arma_pure inline static
|
Chris@49
|
174 typename get_pod_type<eT>::result
|
Chris@49
|
175 norm_k(const eT* src, const uword n_elem, const int k);
|
Chris@49
|
176
|
Chris@49
|
177 template<typename eT>
|
Chris@49
|
178 arma_hot arma_pure inline static
|
Chris@49
|
179 typename get_pod_type<eT>::result
|
Chris@49
|
180 norm_max(const eT* src, const uword n_elem);
|
Chris@49
|
181
|
Chris@49
|
182 template<typename eT>
|
Chris@49
|
183 arma_hot arma_pure inline static
|
Chris@49
|
184 typename get_pod_type<eT>::result
|
Chris@49
|
185 norm_min(const eT* src, const uword n_elem);
|
Chris@49
|
186
|
Chris@49
|
187 };
|
Chris@49
|
188
|
Chris@49
|
189
|
Chris@49
|
190
|
Chris@49
|
191 //! @}
|