op_trig_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_trig
00018 //! @{
00019 
00020 
00021 //
00022 // trigonometric functions:
00023 // cos family: cos, acos, cosh, acosh
00024 // sin family: sin, asin, sinh, asinh
00025 // tan family: tan, atan, tanh, atanh
00026 
00027 // cos family
00028 
00029 class op_cos
00030   {
00031   public:
00032   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_cos>& in);
00033   };
00034 
00035 
00036 
00037 class op_acos
00038   {
00039   public:
00040   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_acos>& in);
00041   template<typename T, typename T1> inline static void apply(Mat< std::complex<T> >& out, const Op<T1,op_acos>& in);
00042   };
00043 
00044 
00045 
00046 class op_cosh
00047   {
00048   public:
00049   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_cosh>& in);
00050   };
00051   
00052 
00053 
00054 class op_acosh
00055   {
00056   public:
00057   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_acosh>& in);
00058   template<typename T, typename T1> inline static void apply(Mat< std::complex<T> >& out, const Op<T1,op_acosh>& in);
00059   };
00060   
00061 
00062 
00063 // sin family
00064 
00065 class op_sin
00066   {
00067   public:
00068   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_sin>& in);
00069   };
00070 
00071 
00072 
00073 class op_asin
00074   {
00075   public:
00076   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_asin>& in);
00077   template<typename T, typename T1> inline static void apply(Mat< std::complex<T> >& out, const Op<T1,op_asin>& in);
00078   };
00079 
00080 
00081 
00082 class op_sinh
00083   {
00084   public:
00085   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_sinh>& in);
00086   };
00087   
00088 
00089 
00090 class op_asinh
00091   {
00092   public:
00093   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_asinh>& in);
00094   };
00095 
00096 
00097 
00098 // tan family
00099 
00100 class op_tan
00101   {
00102   public:
00103   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_tan>& in);
00104   };
00105 
00106 
00107 
00108 class op_atan
00109   {
00110   public:
00111   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_atan>& in);
00112   template<typename T, typename T1> inline static void apply(Mat< std::complex<T> >& out, const Op<T1,op_atan>& in);
00113   };
00114 
00115 
00116 
00117 class op_tanh
00118   {
00119   public:
00120   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_tanh>& in);
00121   };
00122   
00123 
00124 
00125 class op_atanh
00126   {
00127   public:
00128   template<typename T1> inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_atanh>& in);
00129   };
00130 
00131 
00132 //! @}