00001 // Copyright (C) 2009 NICTA 00002 // 00003 // Authors: 00004 // - Conrad Sanderson (conradsand at ieee dot org) 00005 // 00006 // This file is part of the Armadillo C++ library. 00007 // It is provided without any warranty of fitness 00008 // for any purpose. You can redistribute this file 00009 // and/or modify it under the terms of the GNU 00010 // Lesser General Public License (LGPL) as published 00011 // by the Free Software Foundation, either version 3 00012 // of the License or (at your option) any later version. 00013 // (see http://www.opensource.org/licenses for more info) 00014 00015 00016 #ifndef ARMA_INCLUDES 00017 #define ARMA_INCLUDES 00018 00019 00020 #define arma_hot 00021 #define arma_pure 00022 #define arma_const 00023 #define arma_inline inline 00024 #define arma_aligned 00025 00026 00027 #if defined(__GNUG__) 00028 #if(__GNUC__ < 4) 00029 #error "*** Need a newer compiler ***" 00030 #endif 00031 #if(__GNUC_MINOR__ >= 3) 00032 #undef arma_hot 00033 #define arma_hot __attribute__((hot)) 00034 #endif 00035 00036 #undef arma_pure 00037 #undef arma_const 00038 #undef arma_inline 00039 #undef arma_aligned 00040 00041 #define arma_pure __attribute__((pure)) 00042 #define arma_const __attribute__((const)) 00043 #define arma_inline inline __attribute__((always_inline)) 00044 #define arma_aligned __attribute__((aligned)) 00045 #elif defined(__INTEL_COMPILER) 00046 #if(__INTEL_COMPILER < 1000) 00047 #error "*** Need a newer compiler ***" 00048 #endif 00049 #elif defined(_MSC_VER) 00050 #if(_MSC_VER <= 1500) 00051 #error "*** This compiler is not supported due to its incomplete implementation of the C++ standard -- please try the gcc, mingw-gcc or intel compilers instead ***" 00052 #else 00053 #pragma message ("*** WARNING: This compiler may have an incomplete implementation of the C++ standard ***") 00054 #endif 00055 #endif 00056 00057 00058 #include "armadillo_bits/config.hpp" 00059 00060 #include <cstdlib> 00061 #include <cstring> 00062 #include <climits> 00063 #include <cmath> 00064 00065 #include <iostream> 00066 #include <fstream> 00067 #include <sstream> 00068 #include <stdexcept> 00069 #include <limits> 00070 #include <algorithm> 00071 #include <complex> 00072 #include <vector> 00073 00074 00075 #if defined(ARMA_HAVE_GETTIMEOFDAY) 00076 #include <sys/time.h> 00077 #endif 00078 00079 00080 #if defined(ARMA_USE_BOOST) 00081 #include <boost/format.hpp> 00082 #include <boost/current_function.hpp> 00083 #include <boost/math/complex.hpp> 00084 #include <boost/math/special_functions/acosh.hpp> 00085 #include <boost/math/special_functions/asinh.hpp> 00086 #include <boost/math/special_functions/atanh.hpp> 00087 #endif 00088 00089 00090 #if defined(ARMA_USE_BOOST_DATE) 00091 #include <boost/date_time/posix_time/posix_time.hpp> 00092 #endif 00093 00094 00095 #if defined(ARMA_USE_ATLAS) 00096 #define ARMA_TMP_STRING(x) x 00097 00098 #define ARMA_ATLAS_INCLUDE_1 <ARMA_TMP_STRING(ARMA_ATLAS_INCLUDE_DIR)/ARMA_TMP_STRING(cblas.h)> 00099 #define ARMA_ATLAS_INCLUDE_2 <ARMA_TMP_STRING(ARMA_ATLAS_INCLUDE_DIR)/ARMA_TMP_STRING(clapack.h)> 00100 00101 extern "C" 00102 { 00103 #include ARMA_ATLAS_INCLUDE_1 00104 #include ARMA_ATLAS_INCLUDE_2 00105 } 00106 00107 #undef ARMA_TMP_STRING 00108 #undef ARMA_ATLAS_INCLUDE_1 00109 #undef ARMA_ATLAS_INCLUDE_2 00110 #endif 00111 00112 00113 #include "armadillo_bits/itpp_wrap.hpp" 00114 00115 00116 //! \namespace arma namespace for Armadillo classes and functions 00117 namespace arma 00118 { 00119 00120 // preliminaries 00121 00122 #include "armadillo_bits/forward_proto.hpp" 00123 #include "armadillo_bits/static_assert.hpp" 00124 #include "armadillo_bits/typedef.hpp" 00125 #include "armadillo_bits/format_wrap.hpp" 00126 #include "armadillo_bits/cmath_wrap.hpp" 00127 #include "armadillo_bits/constants.hpp" 00128 #include "armadillo_bits/traits.hpp" 00129 #include "armadillo_bits/access.hpp" 00130 00131 // 00132 // class prototypes 00133 00134 #include "armadillo_bits/syslib_proto.hpp" 00135 #include "armadillo_bits/podarray_proto.hpp" 00136 00137 #include "armadillo_bits/blas_proto.hpp" 00138 #include "armadillo_bits/lapack_proto.hpp" 00139 #include "armadillo_bits/atlas_proto.hpp" 00140 #include "armadillo_bits/auxlib_proto.hpp" 00141 00142 #include "armadillo_bits/Base.hpp" 00143 #include "armadillo_bits/Mat_proto.hpp" 00144 #include "armadillo_bits/Col_proto.hpp" 00145 #include "armadillo_bits/Row_proto.hpp" 00146 #include "armadillo_bits/field_proto.hpp" 00147 #include "armadillo_bits/subview_proto.hpp" 00148 #include "armadillo_bits/subview_field_proto.hpp" 00149 #include "armadillo_bits/diagview_proto.hpp" 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 00155 #include "armadillo_bits/Op_proto.hpp" 00156 #include "armadillo_bits/Glue_proto.hpp" 00157 00158 #include "armadillo_bits/op_diagmat_proto.hpp" 00159 #include "armadillo_bits/op_dot_proto.hpp" 00160 #include "armadillo_bits/op_inv_proto.hpp" 00161 #include "armadillo_bits/op_htrans_proto.hpp" 00162 #include "armadillo_bits/op_misc_proto.hpp" 00163 #include "armadillo_bits/op_max_proto.hpp" 00164 #include "armadillo_bits/op_min_proto.hpp" 00165 #include "armadillo_bits/op_mean_proto.hpp" 00166 #include "armadillo_bits/op_median_proto.hpp" 00167 #include "armadillo_bits/op_neg_proto.hpp" 00168 #include "armadillo_bits/op_ones_proto.hpp" 00169 #include "armadillo_bits/op_rand_proto.hpp" 00170 #include "armadillo_bits/op_randn_proto.hpp" 00171 #include "armadillo_bits/op_scalar_misc_proto.hpp" 00172 #include "armadillo_bits/op_sort_proto.hpp" 00173 #include "armadillo_bits/op_sum_proto.hpp" 00174 #include "armadillo_bits/op_stddev_proto.hpp" 00175 #include "armadillo_bits/op_trig_proto.hpp" 00176 #include "armadillo_bits/op_trans_proto.hpp" 00177 #include "armadillo_bits/op_var_proto.hpp" 00178 #include "armadillo_bits/op_zeros_proto.hpp" 00179 00180 #include "armadillo_bits/glue_plus_proto.hpp" 00181 #include "armadillo_bits/glue_minus_proto.hpp" 00182 #include "armadillo_bits/glue_times_proto.hpp" 00183 #include "armadillo_bits/glue_schur_proto.hpp" 00184 #include "armadillo_bits/glue_div_proto.hpp" 00185 00186 // 00187 // debugging functions 00188 00189 #include "armadillo_bits/debug.hpp" 00190 00191 00192 #include "armadillo_bits/unwrap.hpp" 00193 #include "armadillo_bits/Op_meat.hpp" 00194 #include "armadillo_bits/Glue_meat.hpp" 00195 #include "armadillo_bits/glue_metaprog.hpp" 00196 00197 // 00198 // operators 00199 00200 #include "armadillo_bits/operator_plus.hpp" 00201 #include "armadillo_bits/operator_minus.hpp" 00202 #include "armadillo_bits/operator_times.hpp" 00203 #include "armadillo_bits/operator_times_dot.hpp" 00204 #include "armadillo_bits/operator_schur.hpp" 00205 #include "armadillo_bits/operator_div.hpp" 00206 #include "armadillo_bits/operator_relational.hpp" 00207 00208 // 00209 // ostream 00210 00211 #include "armadillo_bits/ostream_mat.hpp" 00212 #include "armadillo_bits/ostream_diagmat.hpp" 00213 #include "armadillo_bits/ostream_field.hpp" 00214 #include "armadillo_bits/ostream_misc.hpp" 00215 00216 // 00217 // user accessible functions 00218 00219 #include "armadillo_bits/fn_conv_to.hpp" 00220 #include "armadillo_bits/fn_min.hpp" 00221 #include "armadillo_bits/fn_max.hpp" 00222 #include "armadillo_bits/fn_accu.hpp" 00223 #include "armadillo_bits/fn_sum.hpp" 00224 #include "armadillo_bits/fn_diagmat.hpp" 00225 #include "armadillo_bits/fn_inv.hpp" 00226 #include "armadillo_bits/fn_trace.hpp" 00227 #include "armadillo_bits/fn_trans.hpp" 00228 #include "armadillo_bits/fn_det.hpp" 00229 #include "armadillo_bits/fn_eig.hpp" 00230 #include "armadillo_bits/fn_lu.hpp" 00231 #include "armadillo_bits/fn_zeros.hpp" 00232 #include "armadillo_bits/fn_ones.hpp" 00233 #include "armadillo_bits/fn_misc.hpp" 00234 #include "armadillo_bits/fn_norm.hpp" 00235 #include "armadillo_bits/fn_dot.hpp" 00236 #include "armadillo_bits/fn_rand.hpp" 00237 #include "armadillo_bits/fn_randn.hpp" 00238 #include "armadillo_bits/fn_trig.hpp" 00239 #include "armadillo_bits/fn_mean.hpp" 00240 #include "armadillo_bits/fn_median.hpp" 00241 #include "armadillo_bits/fn_stddev.hpp" 00242 #include "armadillo_bits/fn_var.hpp" 00243 #include "armadillo_bits/fn_sort.hpp" 00244 #include "armadillo_bits/fn_sort_index.hpp" 00245 #include "armadillo_bits/fn_htrans.hpp" 00246 #include "armadillo_bits/fn_chol.hpp" 00247 #include "armadillo_bits/fn_qr.hpp" 00248 #include "armadillo_bits/fn_svd.hpp" 00249 #include "armadillo_bits/fn_solve.hpp" 00250 00251 // 00252 // class meat 00253 00254 #include "armadillo_bits/gemm.hpp" 00255 #include "armadillo_bits/gemv.hpp" 00256 #include "armadillo_bits/gemm_mixed.hpp" 00257 00258 #include "armadillo_bits/podarray_meat.hpp" 00259 #include "armadillo_bits/auxlib_meat.hpp" 00260 00261 #include "armadillo_bits/Mat_meat.hpp" 00262 #include "armadillo_bits/Col_meat.hpp" 00263 #include "armadillo_bits/Row_meat.hpp" 00264 #include "armadillo_bits/field_meat.hpp" 00265 #include "armadillo_bits/subview_meat.hpp" 00266 #include "armadillo_bits/subview_field_meat.hpp" 00267 #include "armadillo_bits/diagview_meat.hpp" 00268 00269 #include "armadillo_bits/diskio_meat.hpp" 00270 #include "armadillo_bits/wall_clock_meat.hpp" 00271 #include "armadillo_bits/running_stat_meat.hpp" 00272 00273 #include "armadillo_bits/op_diagmat_meat.hpp" 00274 #include "armadillo_bits/op_dot_meat.hpp" 00275 #include "armadillo_bits/op_inv_meat.hpp" 00276 #include "armadillo_bits/op_htrans_meat.hpp" 00277 #include "armadillo_bits/op_misc_meat.hpp" 00278 #include "armadillo_bits/op_max_meat.hpp" 00279 #include "armadillo_bits/op_min_meat.hpp" 00280 #include "armadillo_bits/op_mean_meat.hpp" 00281 #include "armadillo_bits/op_median_meat.hpp" 00282 #include "armadillo_bits/op_neg_meat.hpp" 00283 #include "armadillo_bits/op_ones_meat.hpp" 00284 #include "armadillo_bits/op_rand_meat.hpp" 00285 #include "armadillo_bits/op_randn_meat.hpp" 00286 #include "armadillo_bits/op_scalar_misc_meat.hpp" 00287 #include "armadillo_bits/op_sort_meat.hpp" 00288 #include "armadillo_bits/op_sum_meat.hpp" 00289 #include "armadillo_bits/op_stddev_meat.hpp" 00290 #include "armadillo_bits/op_trans_meat.hpp" 00291 #include "armadillo_bits/op_trig_meat.hpp" 00292 #include "armadillo_bits/op_var_meat.hpp" 00293 #include "armadillo_bits/op_zeros_meat.hpp" 00294 00295 #include "armadillo_bits/glue_plus_meat.hpp" 00296 #include "armadillo_bits/glue_minus_meat.hpp" 00297 #include "armadillo_bits/glue_times_meat.hpp" 00298 #include "armadillo_bits/glue_schur_meat.hpp" 00299 #include "armadillo_bits/glue_div_meat.hpp" 00300 00301 #include "armadillo_bits/deprecated.hpp" 00302 00303 } 00304 00305 #endif 00306