armadillo

Go to the documentation of this file.
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