op_misc_proto.hpp

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 
00017 //! \addtogroup op_misc
00018 //! @{
00019 
00020 
00021 class op_log
00022   {
00023   public:
00024   
00025   template<typename T1>
00026   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_log>& in);
00027   };
00028   
00029 
00030 
00031 class op_trunc_log
00032   {
00033   public:
00034   
00035   template<typename T1>
00036   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_trunc_log>& in);  
00037   };
00038   
00039 
00040 
00041 class op_log10
00042   {
00043   public:
00044   
00045   template<typename T1>
00046   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_log10>& in);  
00047   };
00048   
00049 
00050 
00051 class op_exp
00052   {
00053   public:
00054   
00055   template<typename T1>
00056   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_exp>& in);  
00057   };
00058   
00059 
00060 
00061 class op_trunc_exp
00062   {
00063   public:
00064   
00065   template<typename T1>
00066   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_trunc_exp>& in);  
00067   };
00068   
00069 
00070 
00071 class op_sqrt
00072   {
00073   public:
00074   
00075   template<typename T1>
00076   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_sqrt>& in);  
00077   };
00078   
00079 
00080 
00081 class op_square
00082   {
00083   public:
00084   
00085   template<typename T1>
00086   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_square>& in);
00087   };
00088 
00089 
00090 
00091 class op_pow
00092   {
00093   public:
00094   
00095   template<typename T1>
00096   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_pow>& in);  
00097   
00098   template<typename T, typename T1>
00099   inline static void apply(Mat< std::complex<T> >& out, const Op<T1,op_pow>& in);  
00100   };
00101 
00102 
00103 
00104 class op_pow_s32
00105   {
00106   public:
00107   
00108   template<typename T1>
00109   static inline T1 internal_pow(const T1 base, const int exponent);
00110   
00111   static inline          char internal_pow(const          char base, const int exponent);
00112   static inline unsigned char internal_pow(const unsigned char base, const int exponent);
00113   
00114   static inline          int  internal_pow(const          int  base, const int exponent);
00115   static inline unsigned int  internal_pow(const unsigned int  base, const int exponent);
00116 
00117   template<typename T1>
00118   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_pow_s32>& in);
00119   };
00120 
00121 
00122 
00123 class op_conj
00124   {
00125   public:
00126   
00127   template<typename T1>
00128   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_conj>& in);
00129   };
00130 
00131 
00132 //! @}