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