armadillo

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