avoid unnecessary alias checks
This commit is contained in:
@@ -27,6 +27,9 @@ struct op_stddev
|
||||
template<typename T1>
|
||||
inline static void apply(Mat<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_stddev>& in);
|
||||
|
||||
template<typename T1>
|
||||
inline static void apply(Mat_noalias<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_stddev>& in);
|
||||
|
||||
template<typename in_eT>
|
||||
inline static void apply_noalias(Mat<typename get_pod_type<in_eT>::result>& out, const Mat<in_eT>& X, const uword norm_type, const uword dim);
|
||||
|
||||
|
||||
@@ -54,6 +54,26 @@ op_stddev::apply(Mat<typename T1::pod_type>& out, const mtOp<typename T1::pod_ty
|
||||
|
||||
|
||||
|
||||
template<typename T1>
|
||||
inline
|
||||
void
|
||||
op_stddev::apply(Mat_noalias<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_stddev>& in)
|
||||
{
|
||||
arma_debug_sigprint();
|
||||
|
||||
const uword norm_type = in.aux_uword_a;
|
||||
const uword dim = in.aux_uword_b;
|
||||
|
||||
arma_conform_check( (norm_type > 1), "stddev(): parameter 'norm_type' must be 0 or 1" );
|
||||
arma_conform_check( (dim > 1), "stddev(): parameter 'dim' must be 0 or 1" );
|
||||
|
||||
const quasi_unwrap<T1> U(in.m);
|
||||
|
||||
op_stddev::apply_noalias(out, U.M, norm_type, dim);
|
||||
}
|
||||
|
||||
|
||||
|
||||
template<typename in_eT>
|
||||
inline
|
||||
void
|
||||
|
||||
@@ -27,6 +27,9 @@ struct op_var
|
||||
template<typename T1>
|
||||
inline static void apply(Mat<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_var>& in);
|
||||
|
||||
template<typename T1>
|
||||
inline static void apply(Mat_noalias<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_var>& in);
|
||||
|
||||
template<typename in_eT>
|
||||
inline static void apply_noalias(Mat<typename get_pod_type<in_eT>::result>& out, const Mat<in_eT>& X, const uword norm_type, const uword dim);
|
||||
|
||||
|
||||
@@ -54,6 +54,26 @@ op_var::apply(Mat<typename T1::pod_type>& out, const mtOp<typename T1::pod_type,
|
||||
|
||||
|
||||
|
||||
template<typename T1>
|
||||
inline
|
||||
void
|
||||
op_var::apply(Mat_noalias<typename T1::pod_type>& out, const mtOp<typename T1::pod_type, T1, op_var>& in)
|
||||
{
|
||||
arma_debug_sigprint();
|
||||
|
||||
const uword norm_type = in.aux_uword_a;
|
||||
const uword dim = in.aux_uword_b;
|
||||
|
||||
arma_conform_check( (norm_type > 1), "var(): parameter 'norm_type' must be 0 or 1" );
|
||||
arma_conform_check( (dim > 1), "var(): parameter 'dim' must be 0 or 1" );
|
||||
|
||||
const quasi_unwrap<T1> U(in.m);
|
||||
|
||||
op_var::apply_noalias(out, U.M, norm_type, dim);
|
||||
}
|
||||
|
||||
|
||||
|
||||
template<typename in_eT>
|
||||
inline
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user