$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 template<typename T1, typename T2> 00019 arma_inline 00020 arma_warn_unused 00021 typename T1::elem_type 00022 dot 00023 ( 00024 const Base<typename T1::elem_type,T1>& A, 00025 const Base<typename T1::elem_type,T2>& B 00026 ) 00027 { 00028 arma_extra_debug_sigprint(); 00029 00030 return op_dot::apply(A,B); 00031 } 00032 00033 00034 00035 template<typename T1, typename T2> 00036 arma_inline 00037 arma_warn_unused 00038 typename T1::elem_type 00039 norm_dot 00040 ( 00041 const Base<typename T1::elem_type,T1>& A, 00042 const Base<typename T1::elem_type,T2>& B, 00043 const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 00044 ) 00045 { 00046 arma_extra_debug_sigprint(); 00047 00048 return op_norm_dot::apply(A,B); 00049 } 00050 00051 00052 00053 // 00054 // cdot 00055 00056 00057 00058 template<typename T1, typename T2> 00059 arma_inline 00060 arma_warn_unused 00061 typename T1::elem_type 00062 cdot 00063 ( 00064 const Base<typename T1::elem_type,T1>& A, 00065 const Base<typename T1::elem_type,T2>& B, 00066 const typename arma_cx_only<typename T1::elem_type>::result* junk = 0 00067 ) 00068 { 00069 arma_extra_debug_sigprint(); 00070 arma_ignore(junk); 00071 00072 return op_cdot::apply(A,B); 00073 } 00074 00075 00076 00077 template<typename T1, typename T2> 00078 arma_inline 00079 arma_warn_unused 00080 typename T1::elem_type 00081 cdot 00082 ( 00083 const Base<typename T1::elem_type,T1>& A, 00084 const Base<typename T1::elem_type,T2>& B, 00085 const typename arma_not_cx<typename T1::elem_type>::result* junk = 0 00086 ) 00087 { 00088 arma_extra_debug_sigprint(); 00089 arma_ignore(junk); 00090 00091 return op_dot::apply(A,B); 00092 } 00093 00094 00095 00096 00097 // convert dot(htrans(x), y) to cdot(x,y) 00098 00099 template<typename T1, typename T2> 00100 arma_inline 00101 arma_warn_unused 00102 typename T1::elem_type 00103 dot 00104 ( 00105 const Op<T1, op_htrans>& A, 00106 const Base<typename T1::elem_type,T2>& B, 00107 const typename arma_cx_only<typename T1::elem_type>::result* junk = 0 00108 ) 00109 { 00110 arma_extra_debug_sigprint(); 00111 arma_ignore(junk); 00112 00113 return cdot(A.m, B); 00114 } 00115 00116 00117