max@0
|
1 // Copyright (C) 2011 NICTA (www.nicta.com.au)
|
max@0
|
2 // Copyright (C) 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 arrayops
|
max@0
|
15 //! @{
|
max@0
|
16
|
max@0
|
17
|
max@0
|
18 class arrayops
|
max@0
|
19 {
|
max@0
|
20 public:
|
max@0
|
21
|
max@0
|
22 template<typename eT>
|
max@0
|
23 arma_hot arma_inline static void
|
max@0
|
24 copy(eT* dest, const eT* src, const uword n_elem);
|
max@0
|
25
|
max@0
|
26
|
max@0
|
27 template<typename eT>
|
max@0
|
28 static inline void
|
max@0
|
29 copy_big(eT* dest, const eT* src, const uword n_elem);
|
max@0
|
30
|
max@0
|
31
|
max@0
|
32 //
|
max@0
|
33 // array = convert(array)
|
max@0
|
34
|
max@0
|
35 template<typename out_eT, typename in_eT>
|
max@0
|
36 arma_hot arma_inline static void
|
max@0
|
37 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);
|
max@0
|
38
|
max@0
|
39 template<typename out_eT, typename in_T>
|
max@0
|
40 arma_hot arma_inline static void
|
max@0
|
41 convert_cx_scalar(out_eT& out, const std::complex<in_T>& in, const typename arma_not_cx<out_eT>::result* junk = 0);
|
max@0
|
42
|
max@0
|
43 template<typename out_T, typename in_T>
|
max@0
|
44 arma_hot arma_inline static void
|
max@0
|
45 convert_cx_scalar(std::complex<out_T>& out, const std::complex< in_T>& in);
|
max@0
|
46
|
max@0
|
47 template<typename out_eT, typename in_eT>
|
max@0
|
48 arma_hot inline static void
|
max@0
|
49 convert(out_eT* dest, const in_eT* src, const uword n_elem);
|
max@0
|
50
|
max@0
|
51 template<typename out_eT, typename in_eT>
|
max@0
|
52 arma_hot inline static void
|
max@0
|
53 convert_cx(out_eT* dest, const in_eT* src, const uword n_elem);
|
max@0
|
54
|
max@0
|
55
|
max@0
|
56 //
|
max@0
|
57 // array op= array
|
max@0
|
58
|
max@0
|
59 template<typename eT>
|
max@0
|
60 arma_hot inline static
|
max@0
|
61 void
|
max@0
|
62 inplace_plus(eT* dest, const eT* src, const uword n_elem);
|
max@0
|
63
|
max@0
|
64 template<typename eT>
|
max@0
|
65 arma_hot inline static
|
max@0
|
66 void
|
max@0
|
67 inplace_minus(eT* dest, const eT* src, const uword n_elem);
|
max@0
|
68
|
max@0
|
69 template<typename eT>
|
max@0
|
70 arma_hot inline static
|
max@0
|
71 void
|
max@0
|
72 inplace_mul(eT* dest, const eT* src, const uword n_elem);
|
max@0
|
73
|
max@0
|
74 template<typename eT>
|
max@0
|
75 arma_hot inline static
|
max@0
|
76 void
|
max@0
|
77 inplace_div(eT* dest, const eT* src, const uword n_elem);
|
max@0
|
78
|
max@0
|
79
|
max@0
|
80 //
|
max@0
|
81 // array op= scalar
|
max@0
|
82
|
max@0
|
83 template<typename eT>
|
max@0
|
84 arma_hot inline static
|
max@0
|
85 void
|
max@0
|
86 inplace_set(eT* dest, const eT val, const uword n_elem);
|
max@0
|
87
|
max@0
|
88 template<typename eT>
|
max@0
|
89 arma_hot inline static
|
max@0
|
90 void
|
max@0
|
91 inplace_plus(eT* dest, const eT val, const uword n_elem);
|
max@0
|
92
|
max@0
|
93 template<typename eT>
|
max@0
|
94 arma_hot inline static
|
max@0
|
95 void
|
max@0
|
96 inplace_minus(eT* dest, const eT val, const uword n_elem);
|
max@0
|
97
|
max@0
|
98 template<typename eT>
|
max@0
|
99 arma_hot inline static void
|
max@0
|
100 inplace_mul(eT* dest, const eT val, const uword n_elem);
|
max@0
|
101
|
max@0
|
102 template<typename eT>
|
max@0
|
103 arma_hot inline static
|
max@0
|
104 void
|
max@0
|
105 inplace_div(eT* dest, const eT val, const uword n_elem);
|
max@0
|
106
|
max@0
|
107
|
max@0
|
108 //
|
max@0
|
109 // scalar = op(array)
|
max@0
|
110
|
max@0
|
111 template<typename eT>
|
max@0
|
112 arma_hot arma_pure inline static
|
max@0
|
113 eT
|
max@0
|
114 accumulate(const eT* src, const uword n_elem);
|
max@0
|
115
|
max@0
|
116 template<typename eT>
|
max@0
|
117 arma_hot arma_pure inline static
|
max@0
|
118 eT
|
max@0
|
119 product(const eT* src, const uword n_elem);
|
max@0
|
120
|
max@0
|
121 template<typename eT>
|
max@0
|
122 arma_hot arma_pure inline static
|
max@0
|
123 bool
|
max@0
|
124 is_finite(const eT* src, const uword n_elem);
|
max@0
|
125
|
max@0
|
126 template<typename eT>
|
max@0
|
127 arma_hot arma_pure inline static
|
max@0
|
128 typename get_pod_type<eT>::result
|
max@0
|
129 norm_1(const eT* src, const uword n_elem);
|
max@0
|
130
|
max@0
|
131 template<typename eT>
|
max@0
|
132 arma_hot arma_pure inline static
|
max@0
|
133 eT
|
max@0
|
134 norm_2(const eT* src, const uword n_elem, const typename arma_not_cx<eT>::result* junk = 0);
|
max@0
|
135
|
max@0
|
136 template<typename T>
|
max@0
|
137 arma_hot arma_pure inline static
|
max@0
|
138 T
|
max@0
|
139 norm_2(const std::complex<T>* src, const uword n_elem);
|
max@0
|
140
|
max@0
|
141 template<typename eT>
|
max@0
|
142 arma_hot arma_pure inline static
|
max@0
|
143 typename get_pod_type<eT>::result
|
max@0
|
144 norm_k(const eT* src, const uword n_elem, const int k);
|
max@0
|
145
|
max@0
|
146 template<typename eT>
|
max@0
|
147 arma_hot arma_pure inline static
|
max@0
|
148 typename get_pod_type<eT>::result
|
max@0
|
149 norm_max(const eT* src, const uword n_elem);
|
max@0
|
150
|
max@0
|
151 template<typename eT>
|
max@0
|
152 arma_hot arma_pure inline static
|
max@0
|
153 typename get_pod_type<eT>::result
|
max@0
|
154 norm_min(const eT* src, const uword n_elem);
|
max@0
|
155
|
max@0
|
156 };
|
max@0
|
157
|
max@0
|
158
|
max@0
|
159
|
max@0
|
160 //! @}
|