00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00016
00017
00018
00020 template<typename T1>
00021 arma_inline
00022 const eOp<T1, eop_neg>
00023 operator-
00024 (const Base<typename T1::elem_type,T1>& X)
00025 {
00026 arma_extra_debug_sigprint();
00027
00028 return eOp<T1,eop_neg>(X.get_ref());
00029 }
00030
00031
00032
00034 template<typename T1>
00035 arma_inline
00036 const T1&
00037 operator-
00038 (const eOp<T1, eop_neg>& X)
00039 {
00040 arma_extra_debug_sigprint();
00041
00042 return X.m;
00043 }
00044
00045
00046
00048 template<typename T1>
00049 arma_inline
00050 const eOp<T1, eop_scalar_minus_post>
00051 operator-
00052 (
00053 const Base<typename T1::elem_type,T1>& X,
00054 const typename T1::elem_type k
00055 )
00056 {
00057 arma_extra_debug_sigprint();
00058
00059 return eOp<T1, eop_scalar_minus_post>(X.get_ref(), k);
00060 }
00061
00062
00063
00065 template<typename T1>
00066 arma_inline
00067 const eOp<T1, eop_scalar_minus_pre>
00068 operator-
00069 (
00070 const typename T1::elem_type k,
00071 const Base<typename T1::elem_type,T1>& X
00072 )
00073 {
00074 arma_extra_debug_sigprint();
00075
00076 return eOp<T1, eop_scalar_minus_pre>(X.get_ref(), k);
00077 }
00078
00079
00080
00082 template<typename T1>
00083 arma_inline
00084 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_pre>
00085 operator-
00086 (
00087 const std::complex<typename T1::pod_type>& k,
00088 const Base<typename T1::pod_type, T1>& X
00089 )
00090 {
00091 arma_extra_debug_sigprint();
00092
00093 return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_pre>('j', X.get_ref(), k);
00094 }
00095
00096
00097
00099 template<typename T1>
00100 arma_inline
00101 const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_post>
00102 operator-
00103 (
00104 const Base<typename T1::pod_type, T1>& X,
00105 const std::complex<typename T1::pod_type>& k
00106 )
00107 {
00108 arma_extra_debug_sigprint();
00109
00110 return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar_minus_post>('j', X.get_ref(), k);
00111 }
00112
00113
00114
00116 template<typename T1, typename T2>
00117 arma_inline
00118 const eGlue<T1, T2, eglue_minus>
00119 operator-
00120 (
00121 const Base<typename T1::elem_type,T1>& X,
00122 const Base<typename T1::elem_type,T2>& Y
00123 )
00124 {
00125 arma_extra_debug_sigprint();
00126
00127 return eGlue<T1, T2, eglue_minus>(X.get_ref(), Y.get_ref());
00128 }
00129
00130
00131
00133 template<typename T1, typename T2>
00134 inline
00135 const mtGlue<typename promote_type<typename T1::elem_type, typename T2::elem_type>::result, T1, T2, glue_mixed_minus>
00136 operator-
00137 (
00138 const Base< typename force_different_type<typename T1::elem_type, typename T2::elem_type>::T1_result, T1>& X,
00139 const Base< typename force_different_type<typename T1::elem_type, typename T2::elem_type>::T2_result, T2>& Y
00140 )
00141 {
00142 arma_extra_debug_sigprint();
00143
00144 typedef typename T1::elem_type eT1;
00145 typedef typename T2::elem_type eT2;
00146
00147 typedef typename promote_type<eT1,eT2>::result out_eT;
00148
00149 promote_type<eT1,eT2>::check();
00150
00151 return mtGlue<out_eT, T1, T2, glue_mixed_minus>( X.get_ref(), Y.get_ref() );
00152 }
00153
00154
00155