op_median_bones.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2009-2010 NICTA (www.nicta.com.au)
00002 // Copyright (C) 2009-2010 Conrad Sanderson
00003 // 
00004 // This file is part of the Armadillo C++ library.
00005 // It is provided without any warranty of fitness
00006 // for any purpose. You can redistribute this file
00007 // and/or modify it under the terms of the GNU
00008 // Lesser General Public License (LGPL) as published
00009 // by the Free Software Foundation, either version 3
00010 // of the License or (at your option) any later version.
00011 // (see http://www.opensource.org/licenses for more info)
00012 
00013 
00016 
00017 
00018 template<typename T>
00019 struct arma_cx_median_packet
00020   {
00021   T   val;
00022   uword index;
00023   };
00024 
00025 
00026 
00027 template<typename T>
00028 inline
00029 bool
00030 operator< (const arma_cx_median_packet<T>& A, const arma_cx_median_packet<T>& B)
00031   {
00032   return A.val < B.val;
00033   }
00034 
00035 
00036 
00038 class op_median
00039   {
00040   public:
00041   
00042   template<typename eT>
00043   arma_inline static eT robust_mean(const eT A, const eT B);
00044   
00045   template<typename eT>
00046   inline static eT direct_median(std::vector<eT>& X);
00047   
00048   template<typename eT>
00049   inline static eT direct_median(const eT* X, const uword n_elem);
00050   
00051   template<typename eT>
00052   inline static eT direct_median(const subview<eT>& X);
00053   
00054   template<typename eT>
00055   inline static eT direct_median(const diagview<eT>& X);
00056   
00057   template<typename T1>
00058   inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_median>& in);
00059   
00060   
00061   //
00062   // for complex numbers
00063   
00064   template<typename T>
00065   arma_inline static std::complex<T> robust_mean(const std::complex<T>& A, const std::complex<T>& B);
00066   
00067   template<typename T>
00068   inline static void direct_cx_median_index(uword& out_index1, uword& out_index2, std::vector< arma_cx_median_packet<T> >& X);
00069   
00070   template<typename T>
00071   inline static void direct_cx_median_index(uword& out_index1, uword& out_index2, const std::complex<T>* X, const uword n_elem);
00072   
00073   template<typename T>
00074   inline static void direct_cx_median_index(uword& out_index1, uword& out_index2, const subview< std::complex<T> >& X);
00075   
00076   template<typename T>
00077   inline static void direct_cx_median_index(uword& out_index1, uword& out_index2, const diagview< std::complex<T> >& X);
00078   
00079   template<typename T, typename T1>
00080   inline static void apply(Mat< std::complex<T> >& out, const Op<T1,op_median>& in);
00081   
00082   
00083   };
00084 


armadillo_matrix
Author(s): Conrad Sanderson - NICTA (www.nicta.com.au), (Wrapper by Sjoerd van den Dries)
autogenerated on Tue Jan 7 2014 11:42:05