$search
00001 // Copyright (C) 2008-2010 NICTA (www.nicta.com.au) 00002 // Copyright (C) 2008-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 // operator %, which we define it to do a schur product (element-wise multiplication) 00019 00020 00022 template<typename T1, typename T2> 00023 arma_inline 00024 const eGlueCube<T1, T2, eglue_schur> 00025 operator% 00026 ( 00027 const BaseCube<typename T1::elem_type,T1>& X, 00028 const BaseCube<typename T1::elem_type,T2>& Y 00029 ) 00030 { 00031 arma_extra_debug_sigprint(); 00032 00033 return eGlueCube<T1, T2, eglue_schur>(X.get_ref(), Y.get_ref()); 00034 } 00035 00036 00037 00039 template<typename T1, typename T2> 00040 inline 00041 const mtGlueCube<typename promote_type<typename T1::elem_type, typename T2::elem_type>::result, T1, T2, glue_mixed_schur> 00042 operator% 00043 ( 00044 const BaseCube< typename force_different_type<typename T1::elem_type, typename T2::elem_type>::T1_result, T1>& X, 00045 const BaseCube< typename force_different_type<typename T1::elem_type, typename T2::elem_type>::T2_result, T2>& Y 00046 ) 00047 { 00048 arma_extra_debug_sigprint(); 00049 00050 typedef typename T1::elem_type eT1; 00051 typedef typename T2::elem_type eT2; 00052 00053 typedef typename promote_type<eT1,eT2>::result out_eT; 00054 00055 promote_type<eT1,eT2>::check(); 00056 00057 return mtGlueCube<out_eT, T1, T2, glue_mixed_schur>( X.get_ref(), Y.get_ref() ); 00058 } 00059 00060 00061