00001 // Copyright (C) 2010 NICTA and the authors listed below 00002 // http://nicta.com.au 00003 // 00004 // Authors: 00005 // - Conrad Sanderson (conradsand at ieee dot org) 00006 // 00007 // This file is part of the Armadillo C++ library. 00008 // It is provided without any warranty of fitness 00009 // for any purpose. You can redistribute this file 00010 // and/or modify it under the terms of the GNU 00011 // Lesser General Public License (LGPL) as published 00012 // by the Free Software Foundation, either version 3 00013 // of the License or (at your option) any later version. 00014 // (see http://www.opensource.org/licenses for more info) 00015 00016 00017 #ifndef ARMA_INCLUDES 00018 #define ARMA_INCLUDES 00019 00020 00021 #include "armadillo_bits/config.hpp" 00022 #include "armadillo_bits/compiler_setup.hpp" 00023 00024 #include <cstdlib> 00025 #include <cstring> 00026 #include <climits> 00027 #include <cmath> 00028 00029 #include <iostream> 00030 #include <fstream> 00031 #include <sstream> 00032 #include <stdexcept> 00033 #include <limits> 00034 #include <algorithm> 00035 #include <complex> 00036 #include <vector> 00037 00038 00039 #if defined(ARMA_HAVE_GETTIMEOFDAY) 00040 #include <sys/time.h> 00041 #undef ARMA_USE_BOOST_DATE 00042 #endif 00043 00044 00045 #if defined(ARMA_USE_BOOST_DATE) 00046 #include <boost/date_time/posix_time/posix_time.hpp> 00047 #endif 00048 00049 00050 #if defined(ARMA_HAVE_STD_TR1) 00051 #include <tr1/cmath> 00052 #include <tr1/complex> 00053 #elif defined(ARMA_USE_BOOST) 00054 #include <boost/math/complex.hpp> 00055 #include <boost/math/special_functions/acosh.hpp> 00056 #include <boost/math/special_functions/asinh.hpp> 00057 #include <boost/math/special_functions/atanh.hpp> 00058 #endif 00059 00060 00061 #if defined(ARMA_USE_BOOST) 00062 #if defined(ARMA_EXTRA_DEBUG) 00063 #include <boost/format.hpp> 00064 #include <boost/current_function.hpp> 00065 #define ARMA_USE_BOOST_FORMAT 00066 #endif 00067 #endif 00068 00069 00070 #if defined(ARMA_USE_ATLAS) 00071 00072 #if !defined(ARMA_ATLAS_INCLUDE_DIR) 00073 extern "C" 00074 { 00075 #include <cblas.h> 00076 #include <clapack.h> 00077 } 00078 #else 00079 00080 #define ARMA_STR1(x) x 00081 #define ARMA_STR2(x) ARMA_STR1(x) 00082 #define ARMA_STR3(x) <x> 00083 00084 #define ARMA_CBLAS ARMA_STR2(ARMA_ATLAS_INCLUDE_DIR)ARMA_STR2(cblas.h) 00085 #define ARMA_CLAPACK ARMA_STR2(ARMA_ATLAS_INCLUDE_DIR)ARMA_STR2(clapack.h) 00086 00087 extern "C" 00088 { 00089 #include ARMA_STR3(ARMA_CBLAS) 00090 #include ARMA_STR3(ARMA_CLAPACK) 00091 } 00092 00093 #undef ARMA_STR1 00094 #undef ARMA_STR2 00095 #undef ARMA_STR3 00096 #undef ARMA_CBLAS 00097 #undef ARMA_CLAPACK 00098 #endif 00099 #endif 00100 00101 00102 #include "armadillo_bits/itpp_wrap.hpp" 00103 00104 00105 //! \namespace arma namespace for Armadillo classes and functions 00106 namespace arma 00107 { 00108 00109 // preliminaries 00110 00111 #include "armadillo_bits/forward_proto.hpp" 00112 #include "armadillo_bits/arma_static_assert.hpp" 00113 #include "armadillo_bits/typedef.hpp" 00114 #include "armadillo_bits/format_wrap.hpp" 00115 #include "armadillo_bits/constants.hpp" 00116 #include "armadillo_bits/arma_version.hpp" 00117 #include "armadillo_bits/arma_config.hpp" 00118 #include "armadillo_bits/traits.hpp" 00119 #include "armadillo_bits/promote_type.hpp" 00120 #include "armadillo_bits/upgrade_val.hpp" 00121 #include "armadillo_bits/restrictors.hpp" 00122 #include "armadillo_bits/access.hpp" 00123 00124 00125 // 00126 // class prototypes 00127 00128 #include "armadillo_bits/syslib_proto.hpp" 00129 #include "armadillo_bits/podarray_proto.hpp" 00130 00131 #include "armadillo_bits/blas_proto.hpp" 00132 #include "armadillo_bits/lapack_proto.hpp" 00133 #include "armadillo_bits/atlas_proto.hpp" 00134 #include "armadillo_bits/auxlib_proto.hpp" 00135 00136 #include "armadillo_bits/Base.hpp" 00137 #include "armadillo_bits/BaseCube.hpp" 00138 00139 #include "armadillo_bits/Mat_proto.hpp" 00140 #include "armadillo_bits/Col_proto.hpp" 00141 #include "armadillo_bits/Row_proto.hpp" 00142 #include "armadillo_bits/Cube_proto.hpp" 00143 00144 #include "armadillo_bits/field_proto.hpp" 00145 #include "armadillo_bits/subview_proto.hpp" 00146 #include "armadillo_bits/subview_field_proto.hpp" 00147 #include "armadillo_bits/subview_cube_proto.hpp" 00148 #include "armadillo_bits/diagview_proto.hpp" 00149 00150 00151 #include "armadillo_bits/diskio_proto.hpp" 00152 #include "armadillo_bits/wall_clock_proto.hpp" 00153 #include "armadillo_bits/running_stat_proto.hpp" 00154 #include "armadillo_bits/running_stat_vec_proto.hpp" 00155 00156 #include "armadillo_bits/Op_proto.hpp" 00157 #include "armadillo_bits/OpCube_proto.hpp" 00158 00159 #include "armadillo_bits/eOp_proto.hpp" 00160 #include "armadillo_bits/eOpCube_proto.hpp" 00161 00162 #include "armadillo_bits/mtOp_proto.hpp" 00163 00164 #include "armadillo_bits/Glue_proto.hpp" 00165 #include "armadillo_bits/eGlue_proto.hpp" 00166 #include "armadillo_bits/mtGlue_proto.hpp" 00167 00168 #include "armadillo_bits/GlueCube_proto.hpp" 00169 #include "armadillo_bits/eGlueCube_proto.hpp" 00170 00171 #include "armadillo_bits/eop_core_proto.hpp" 00172 #include "armadillo_bits/eop_cube_core_proto.hpp" 00173 00174 #include "armadillo_bits/eglue_core_proto.hpp" 00175 #include "armadillo_bits/eglue_cube_core_proto.hpp" 00176 00177 #include "armadillo_bits/op_diagmat_proto.hpp" 00178 #include "armadillo_bits/op_diagvec_proto.hpp" 00179 #include "armadillo_bits/op_dot_proto.hpp" 00180 #include "armadillo_bits/op_inv_proto.hpp" 00181 #include "armadillo_bits/op_htrans_proto.hpp" 00182 #include "armadillo_bits/op_max_proto.hpp" 00183 #include "armadillo_bits/op_min_proto.hpp" 00184 #include "armadillo_bits/op_mean_proto.hpp" 00185 #include "armadillo_bits/op_median_proto.hpp" 00186 #include "armadillo_bits/op_sort_proto.hpp" 00187 #include "armadillo_bits/op_sum_proto.hpp" 00188 #include "armadillo_bits/op_stddev_proto.hpp" 00189 #include "armadillo_bits/op_trans_proto.hpp" 00190 #include "armadillo_bits/op_var_proto.hpp" 00191 #include "armadillo_bits/op_repmat_proto.hpp" 00192 #include "armadillo_bits/op_reshape_proto.hpp" 00193 #include "armadillo_bits/op_cov_proto.hpp" 00194 #include "armadillo_bits/op_cor_proto.hpp" 00195 #include "armadillo_bits/op_shuffle_proto.hpp" 00196 #include "armadillo_bits/op_prod_proto.hpp" 00197 #include "armadillo_bits/op_pinv_proto.hpp" 00198 #include "armadillo_bits/op_dotext_proto.hpp" 00199 #include "armadillo_bits/op_flip_proto.hpp" 00200 #include "armadillo_bits/op_princomp_proto.hpp" 00201 #include "armadillo_bits/op_princomp_cov_proto.hpp" 00202 #include "armadillo_bits/op_misc_proto.hpp" 00203 #include "armadillo_bits/op_relational_proto.hpp" 00204 #include "armadillo_bits/op_find_proto.hpp" 00205 #include "armadillo_bits/op_chol_proto.hpp" 00206 #include "armadillo_bits/op_cx_scalar_proto.hpp" 00207 00208 #include "armadillo_bits/glue_times_proto.hpp" 00209 #include "armadillo_bits/glue_mixed_proto.hpp" 00210 #include "armadillo_bits/glue_cov_proto.hpp" 00211 #include "armadillo_bits/glue_cor_proto.hpp" 00212 #include "armadillo_bits/glue_kron_proto.hpp" 00213 #include "armadillo_bits/glue_cross_proto.hpp" 00214 #include "armadillo_bits/glue_join_proto.hpp" 00215 #include "armadillo_bits/glue_relational_proto.hpp" 00216 #include "armadillo_bits/glue_solve_proto.hpp" 00217 #include "armadillo_bits/glue_conv_proto.hpp" 00218 #include "armadillo_bits/glue_toeplitz_proto.hpp" 00219 00220 // 00221 // debugging functions 00222 00223 #include "armadillo_bits/debug.hpp" 00224 00225 // 00226 // 00227 00228 #include "armadillo_bits/cmath_wrap.hpp" 00229 00230 // 00231 // classes that underlay metaprogramming 00232 00233 #include "armadillo_bits/Proxy.hpp" 00234 #include "armadillo_bits/ProxyCube.hpp" 00235 00236 #include "armadillo_bits/diagmat_proxy.hpp" 00237 00238 #include "armadillo_bits/unwrap.hpp" 00239 #include "armadillo_bits/unwrap_cube.hpp" 00240 00241 #include "armadillo_bits/strip.hpp" 00242 00243 #include "armadillo_bits/Op_meat.hpp" 00244 #include "armadillo_bits/OpCube_meat.hpp" 00245 00246 #include "armadillo_bits/mtOp_meat.hpp" 00247 00248 #include "armadillo_bits/Glue_meat.hpp" 00249 #include "armadillo_bits/GlueCube_meat.hpp" 00250 00251 #include "armadillo_bits/eop_aux.hpp" 00252 00253 #include "armadillo_bits/eOp_meat.hpp" 00254 #include "armadillo_bits/eOpCube_meat.hpp" 00255 00256 #include "armadillo_bits/eGlue_meat.hpp" 00257 #include "armadillo_bits/eGlueCube_meat.hpp" 00258 00259 #include "armadillo_bits/mtGlue_meat.hpp" 00260 00261 #include "armadillo_bits/eglue_misc.hpp" 00262 #include "armadillo_bits/eglue_cube_misc.hpp" 00263 00264 00265 // 00266 // ostream 00267 00268 #include "armadillo_bits/arma_ostream_proto.hpp" 00269 #include "armadillo_bits/arma_ostream_meat.hpp" 00270 00271 00272 // 00273 // operators 00274 00275 #include "armadillo_bits/operator_plus.hpp" 00276 #include "armadillo_bits/operator_minus.hpp" 00277 #include "armadillo_bits/operator_times.hpp" 00278 #include "armadillo_bits/operator_schur.hpp" 00279 #include "armadillo_bits/operator_div.hpp" 00280 #include "armadillo_bits/operator_relational.hpp" 00281 00282 #include "armadillo_bits/operator_cube_plus.hpp" 00283 #include "armadillo_bits/operator_cube_minus.hpp" 00284 #include "armadillo_bits/operator_cube_times.hpp" 00285 #include "armadillo_bits/operator_cube_schur.hpp" 00286 #include "armadillo_bits/operator_cube_div.hpp" 00287 #include "armadillo_bits/operator_cube_relational.hpp" 00288 00289 #include "armadillo_bits/operator_ostream.hpp" 00290 00291 00292 // 00293 // user accessible functions 00294 00295 // the order of the fn_*.hpp include files matters, 00296 // as some files require functionality given in preceding files 00297 00298 #include "armadillo_bits/fn_conv_to.hpp" 00299 #include "armadillo_bits/fn_min.hpp" 00300 #include "armadillo_bits/fn_max.hpp" 00301 #include "armadillo_bits/fn_accu.hpp" 00302 #include "armadillo_bits/fn_sum.hpp" 00303 #include "armadillo_bits/fn_diagmat.hpp" 00304 #include "armadillo_bits/fn_diagvec.hpp" 00305 #include "armadillo_bits/fn_inv.hpp" 00306 #include "armadillo_bits/fn_trace.hpp" 00307 #include "armadillo_bits/fn_trans.hpp" 00308 #include "armadillo_bits/fn_det.hpp" 00309 #include "armadillo_bits/fn_log_det.hpp" 00310 #include "armadillo_bits/fn_eig.hpp" 00311 #include "armadillo_bits/fn_lu.hpp" 00312 #include "armadillo_bits/fn_zeros.hpp" 00313 #include "armadillo_bits/fn_ones.hpp" 00314 #include "armadillo_bits/fn_misc.hpp" 00315 #include "armadillo_bits/fn_norm.hpp" 00316 #include "armadillo_bits/fn_dot.hpp" 00317 #include "armadillo_bits/fn_randu.hpp" 00318 #include "armadillo_bits/fn_randn.hpp" 00319 #include "armadillo_bits/fn_trig.hpp" 00320 #include "armadillo_bits/fn_mean.hpp" 00321 #include "armadillo_bits/fn_median.hpp" 00322 #include "armadillo_bits/fn_stddev.hpp" 00323 #include "armadillo_bits/fn_var.hpp" 00324 #include "armadillo_bits/fn_sort.hpp" 00325 #include "armadillo_bits/fn_sort_index.hpp" 00326 #include "armadillo_bits/fn_htrans.hpp" 00327 #include "armadillo_bits/fn_chol.hpp" 00328 #include "armadillo_bits/fn_qr.hpp" 00329 #include "armadillo_bits/fn_svd.hpp" 00330 #include "armadillo_bits/fn_solve.hpp" 00331 #include "armadillo_bits/fn_repmat.hpp" 00332 #include "armadillo_bits/fn_reshape.hpp" 00333 #include "armadillo_bits/fn_cov.hpp" 00334 #include "armadillo_bits/fn_cor.hpp" 00335 #include "armadillo_bits/fn_shuffle.hpp" 00336 #include "armadillo_bits/fn_prod.hpp" 00337 #include "armadillo_bits/fn_eps.hpp" 00338 #include "armadillo_bits/fn_pinv.hpp" 00339 #include "armadillo_bits/fn_rank.hpp" 00340 #include "armadillo_bits/fn_kron.hpp" 00341 #include "armadillo_bits/fn_flip.hpp" 00342 #include "armadillo_bits/fn_as_scalar.hpp" 00343 #include "armadillo_bits/fn_princomp.hpp" 00344 #include "armadillo_bits/fn_princomp_cov.hpp" 00345 #include "armadillo_bits/fn_cross.hpp" 00346 #include "armadillo_bits/fn_join.hpp" 00347 #include "armadillo_bits/fn_conv.hpp" 00348 #include "armadillo_bits/fn_trunc_exp.hpp" 00349 #include "armadillo_bits/fn_trunc_log.hpp" 00350 #include "armadillo_bits/fn_toeplitz.hpp" 00351 00352 // 00353 // class meat 00354 00355 #include "armadillo_bits/gemm.hpp" 00356 #include "armadillo_bits/gemv.hpp" 00357 #include "armadillo_bits/gemm_mixed.hpp" 00358 00359 #include "armadillo_bits/eop_core_meat.hpp" 00360 #include "armadillo_bits/eop_cube_core_meat.hpp" 00361 00362 #include "armadillo_bits/eglue_core_meat.hpp" 00363 #include "armadillo_bits/eglue_cube_core_meat.hpp" 00364 00365 #include "armadillo_bits/podarray_meat.hpp" 00366 #include "armadillo_bits/auxlib_meat.hpp" 00367 00368 #include "armadillo_bits/Mat_meat.hpp" 00369 #include "armadillo_bits/Col_meat.hpp" 00370 #include "armadillo_bits/Row_meat.hpp" 00371 #include "armadillo_bits/Cube_meat.hpp" 00372 #include "armadillo_bits/field_meat.hpp" 00373 #include "armadillo_bits/subview_meat.hpp" 00374 #include "armadillo_bits/subview_field_meat.hpp" 00375 #include "armadillo_bits/subview_cube_meat.hpp" 00376 #include "armadillo_bits/diagview_meat.hpp" 00377 00378 #include "armadillo_bits/diskio_meat.hpp" 00379 #include "armadillo_bits/wall_clock_meat.hpp" 00380 #include "armadillo_bits/running_stat_meat.hpp" 00381 #include "armadillo_bits/running_stat_vec_meat.hpp" 00382 00383 #include "armadillo_bits/op_diagmat_meat.hpp" 00384 #include "armadillo_bits/op_diagvec_meat.hpp" 00385 #include "armadillo_bits/op_dot_meat.hpp" 00386 #include "armadillo_bits/op_inv_meat.hpp" 00387 #include "armadillo_bits/op_htrans_meat.hpp" 00388 #include "armadillo_bits/op_max_meat.hpp" 00389 #include "armadillo_bits/op_min_meat.hpp" 00390 #include "armadillo_bits/op_mean_meat.hpp" 00391 #include "armadillo_bits/op_median_meat.hpp" 00392 #include "armadillo_bits/op_sort_meat.hpp" 00393 #include "armadillo_bits/op_sum_meat.hpp" 00394 #include "armadillo_bits/op_stddev_meat.hpp" 00395 #include "armadillo_bits/op_trans_meat.hpp" 00396 #include "armadillo_bits/op_var_meat.hpp" 00397 #include "armadillo_bits/op_repmat_meat.hpp" 00398 #include "armadillo_bits/op_reshape_meat.hpp" 00399 #include "armadillo_bits/op_cov_meat.hpp" 00400 #include "armadillo_bits/op_cor_meat.hpp" 00401 #include "armadillo_bits/op_shuffle_meat.hpp" 00402 #include "armadillo_bits/op_prod_meat.hpp" 00403 #include "armadillo_bits/op_pinv_meat.hpp" 00404 #include "armadillo_bits/op_dotext_meat.hpp" 00405 #include "armadillo_bits/op_flip_meat.hpp" 00406 #include "armadillo_bits/op_princomp_meat.hpp" 00407 #include "armadillo_bits/op_princomp_cov_meat.hpp" 00408 #include "armadillo_bits/op_misc_meat.hpp" 00409 #include "armadillo_bits/op_relational_meat.hpp" 00410 #include "armadillo_bits/op_find_meat.hpp" 00411 #include "armadillo_bits/op_chol_meat.hpp" 00412 #include "armadillo_bits/op_cx_scalar_meat.hpp" 00413 00414 #include "armadillo_bits/glue_times_meat.hpp" 00415 #include "armadillo_bits/glue_mixed_meat.hpp" 00416 #include "armadillo_bits/glue_cov_meat.hpp" 00417 #include "armadillo_bits/glue_cor_meat.hpp" 00418 #include "armadillo_bits/glue_kron_meat.hpp" 00419 #include "armadillo_bits/glue_cross_meat.hpp" 00420 #include "armadillo_bits/glue_join_meat.hpp" 00421 #include "armadillo_bits/glue_relational_meat.hpp" 00422 #include "armadillo_bits/glue_solve_meat.hpp" 00423 #include "armadillo_bits/glue_conv_meat.hpp" 00424 #include "armadillo_bits/glue_toeplitz_meat.hpp" 00425 } 00426 00427 #endif 00428