Chris@49
|
1 // Copyright (C) 2008-2012 NICTA (www.nicta.com.au)
|
Chris@49
|
2 // Copyright (C) 2008-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 using std::cout;
|
Chris@49
|
10 using std::cerr;
|
Chris@49
|
11 using std::endl;
|
Chris@49
|
12 using std::ios;
|
Chris@49
|
13
|
Chris@49
|
14 template<typename elem_type, typename derived> struct Base;
|
Chris@49
|
15 template<typename elem_type, typename derived> struct BaseCube;
|
Chris@49
|
16
|
Chris@49
|
17 template<typename eT> class Mat;
|
Chris@49
|
18 template<typename eT> class Col;
|
Chris@49
|
19 template<typename eT> class Row;
|
Chris@49
|
20 template<typename eT> class Cube;
|
Chris@49
|
21 template<typename eT> class xvec_htrans;
|
Chris@49
|
22 template<typename oT> class field;
|
Chris@49
|
23
|
Chris@49
|
24 template<typename eT> class subview;
|
Chris@49
|
25 template<typename eT> class subview_col;
|
Chris@49
|
26 template<typename eT> class subview_row;
|
Chris@49
|
27 template<typename eT> class subview_row_strans;
|
Chris@49
|
28 template<typename eT> class subview_row_htrans;
|
Chris@49
|
29 template<typename eT> class subview_cube;
|
Chris@49
|
30 template<typename oT> class subview_field;
|
Chris@49
|
31
|
Chris@49
|
32 template<typename eT> class SpValProxy;
|
Chris@49
|
33 template<typename eT> class SpMat;
|
Chris@49
|
34 template<typename eT> class SpCol;
|
Chris@49
|
35 template<typename eT> class SpRow;
|
Chris@49
|
36 template<typename eT> class SpSubview;
|
Chris@49
|
37
|
Chris@49
|
38 template<typename eT> class diagview;
|
Chris@49
|
39
|
Chris@49
|
40 template<typename eT, typename T1> class subview_elem1;
|
Chris@49
|
41 template<typename eT, typename T1, typename T2> class subview_elem2;
|
Chris@49
|
42
|
Chris@49
|
43 template<typename parent, unsigned int mode> class subview_each1;
|
Chris@49
|
44 template<typename parent, unsigned int mode, typename TB> class subview_each2;
|
Chris@49
|
45
|
Chris@49
|
46
|
Chris@49
|
47 class arma_empty_class {};
|
Chris@49
|
48
|
Chris@49
|
49 class diskio;
|
Chris@49
|
50
|
Chris@49
|
51 class op_min;
|
Chris@49
|
52 class op_max;
|
Chris@49
|
53
|
Chris@49
|
54 class op_strans;
|
Chris@49
|
55 class op_htrans;
|
Chris@49
|
56 class op_htrans2;
|
Chris@49
|
57 class op_inv;
|
Chris@49
|
58 class op_sum;
|
Chris@49
|
59 class op_abs;
|
Chris@49
|
60 class op_diagmat;
|
Chris@49
|
61 class op_trimat;
|
Chris@49
|
62 class op_diagvec;
|
Chris@49
|
63
|
Chris@49
|
64 class eop_conj;
|
Chris@49
|
65
|
Chris@49
|
66 class glue_times;
|
Chris@49
|
67 class glue_times_diag;
|
Chris@49
|
68
|
Chris@49
|
69 class glue_rel_lt;
|
Chris@49
|
70 class glue_rel_gt;
|
Chris@49
|
71 class glue_rel_lteq;
|
Chris@49
|
72 class glue_rel_gteq;
|
Chris@49
|
73 class glue_rel_eq;
|
Chris@49
|
74 class glue_rel_noteq;
|
Chris@49
|
75
|
Chris@49
|
76 class op_rel_lt_pre;
|
Chris@49
|
77 class op_rel_lt_post;
|
Chris@49
|
78 class op_rel_gt_pre;
|
Chris@49
|
79 class op_rel_gt_post;
|
Chris@49
|
80 class op_rel_lteq_pre;
|
Chris@49
|
81 class op_rel_lteq_post;
|
Chris@49
|
82 class op_rel_gteq_pre;
|
Chris@49
|
83 class op_rel_gteq_post;
|
Chris@49
|
84 class op_rel_eq;
|
Chris@49
|
85 class op_rel_noteq;
|
Chris@49
|
86
|
Chris@49
|
87 class gen_ones_diag;
|
Chris@49
|
88 class gen_ones_full;
|
Chris@49
|
89 class gen_zeros;
|
Chris@49
|
90 class gen_randu;
|
Chris@49
|
91 class gen_randn;
|
Chris@49
|
92
|
Chris@49
|
93 class glue_mixed_plus;
|
Chris@49
|
94 class glue_mixed_minus;
|
Chris@49
|
95 class glue_mixed_div;
|
Chris@49
|
96 class glue_mixed_schur;
|
Chris@49
|
97 class glue_mixed_times;
|
Chris@49
|
98
|
Chris@49
|
99 class op_cx_scalar_times;
|
Chris@49
|
100 class op_cx_scalar_plus;
|
Chris@49
|
101 class op_cx_scalar_minus_pre;
|
Chris@49
|
102 class op_cx_scalar_minus_post;
|
Chris@49
|
103 class op_cx_scalar_div_pre;
|
Chris@49
|
104 class op_cx_scalar_div_post;
|
Chris@49
|
105
|
Chris@49
|
106
|
Chris@49
|
107
|
Chris@49
|
108 class op_subview_elem_equ;
|
Chris@49
|
109 class op_subview_elem_inplace_plus;
|
Chris@49
|
110 class op_subview_elem_inplace_minus;
|
Chris@49
|
111 class op_subview_elem_inplace_schur;
|
Chris@49
|
112 class op_subview_elem_inplace_div;
|
Chris@49
|
113
|
Chris@49
|
114
|
Chris@49
|
115
|
Chris@49
|
116 template<const bool, const bool, const bool, const bool> class gemm;
|
Chris@49
|
117 template<const bool, const bool, const bool> class gemv;
|
Chris@49
|
118
|
Chris@49
|
119
|
Chris@49
|
120 template< typename eT, typename gen_type> class Gen;
|
Chris@49
|
121
|
Chris@49
|
122 template< typename T1, typename op_type> class Op;
|
Chris@49
|
123 template< typename T1, typename eop_type> class eOp;
|
Chris@49
|
124 template<typename out_eT, typename T1, typename op_type> class mtOp;
|
Chris@49
|
125
|
Chris@49
|
126 template< typename T1, typename T2, typename glue_type> class Glue;
|
Chris@49
|
127 template< typename T1, typename T2, typename eglue_type> class eGlue;
|
Chris@49
|
128 template<typename out_eT, typename T1, typename T2, typename glue_type> class mtGlue;
|
Chris@49
|
129
|
Chris@49
|
130
|
Chris@49
|
131
|
Chris@49
|
132 template< typename eT, typename gen_type> class GenCube;
|
Chris@49
|
133
|
Chris@49
|
134 template< typename T1, typename op_type> class OpCube;
|
Chris@49
|
135 template< typename T1, typename eop_type> class eOpCube;
|
Chris@49
|
136 template<typename out_eT, typename T1, typename op_type> class mtOpCube;
|
Chris@49
|
137
|
Chris@49
|
138 template< typename T1, typename T2, typename glue_type> class GlueCube;
|
Chris@49
|
139 template< typename T1, typename T2, typename eglue_type> class eGlueCube;
|
Chris@49
|
140 template<typename out_eT, typename T1, typename T2, typename glue_type> class mtGlueCube;
|
Chris@49
|
141
|
Chris@49
|
142
|
Chris@49
|
143 template<typename T1> class Proxy;
|
Chris@49
|
144 template<typename T1> class ProxyCube;
|
Chris@49
|
145
|
Chris@49
|
146
|
Chris@49
|
147
|
Chris@49
|
148 class spop_strans;
|
Chris@49
|
149 class spop_htrans;
|
Chris@49
|
150 class spop_scalar_times;
|
Chris@49
|
151
|
Chris@49
|
152 class spglue_plus;
|
Chris@49
|
153 class spglue_plus2;
|
Chris@49
|
154
|
Chris@49
|
155 class spglue_minus;
|
Chris@49
|
156 class spglue_minus2;
|
Chris@49
|
157
|
Chris@49
|
158 class spglue_times;
|
Chris@49
|
159 class spglue_times2;
|
Chris@49
|
160
|
Chris@49
|
161
|
Chris@49
|
162 template< typename T1, typename spop_type> class SpOp;
|
Chris@49
|
163 template<typename out_eT, typename T1, typename spop_type> class mtSpOp;
|
Chris@49
|
164
|
Chris@49
|
165 template<typename T1, typename T2, typename spglue_type> class SpGlue;
|
Chris@49
|
166
|
Chris@49
|
167
|
Chris@49
|
168 template<typename T1> class SpProxy;
|
Chris@49
|
169
|
Chris@49
|
170
|
Chris@49
|
171
|
Chris@49
|
172 struct arma_vec_indicator {};
|
Chris@49
|
173 struct arma_fixed_indicator {};
|
Chris@49
|
174
|
Chris@49
|
175
|
Chris@49
|
176 //! \addtogroup injector
|
Chris@49
|
177 //! @{
|
Chris@49
|
178
|
Chris@49
|
179 template<typename Dummy = int> struct injector_end_of_row {};
|
Chris@49
|
180
|
Chris@49
|
181 static const injector_end_of_row<> endr = injector_end_of_row<>();
|
Chris@49
|
182 //!< endr indicates "end of row" when using the << operator;
|
Chris@49
|
183 //!< similar conceptual meaning to std::endl
|
Chris@49
|
184
|
Chris@49
|
185 //! @}
|
Chris@49
|
186
|
Chris@49
|
187
|
Chris@49
|
188
|
Chris@49
|
189 //! \addtogroup diskio
|
Chris@49
|
190 //! @{
|
Chris@49
|
191
|
Chris@49
|
192
|
Chris@49
|
193 enum file_type
|
Chris@49
|
194 {
|
Chris@49
|
195 file_type_unknown,
|
Chris@49
|
196 auto_detect, //!< Automatically detect the file type
|
Chris@49
|
197 raw_ascii, //!< ASCII format (text), without any other information.
|
Chris@49
|
198 arma_ascii, //!< Armadillo ASCII format (text), with information about matrix type and size
|
Chris@49
|
199 csv_ascii, //!< comma separated values (CSV), without any other information
|
Chris@49
|
200 raw_binary, //!< raw binary format, without any other information.
|
Chris@49
|
201 arma_binary, //!< Armadillo binary format, with information about matrix type and size
|
Chris@49
|
202 pgm_binary, //!< Portable Grey Map (greyscale image)
|
Chris@49
|
203 ppm_binary, //!< Portable Pixel Map (colour image), used by the field and cube classes
|
Chris@49
|
204 hdf5_binary, //!< Open binary format, not specific to Armadillo, which can store arbitrary data
|
Chris@49
|
205 coord_ascii //!< simple co-ordinate format for sparse matrices
|
Chris@49
|
206 };
|
Chris@49
|
207
|
Chris@49
|
208
|
Chris@49
|
209 //! @}
|
Chris@49
|
210
|
Chris@49
|
211
|