22#ifndef Rcpp__sugar__divides_h
23#define Rcpp__sugar__divides_h
28 template <
int RTYPE,
bool LHS_NA,
typename LHS_T,
bool RHS_NA,
typename RHS_T >
42 if( Rcpp::traits::is_na<RTYPE>( x ) )
return x ;
44 return Rcpp::traits::is_na<RTYPE>( y ) ? y : ( x / y ) ;
54 template <
bool LHS_NA,
typename LHS_T,
bool RHS_NA,
typename RHS_T >
56 public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
78 template <
int RTYPE,
typename LHS_T,
bool RHS_NA,
typename RHS_T >
79 class Divides_Vector_Vector<RTYPE,
false,
LHS_T,
RHS_NA,
RHS_T> :
public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> > {
92 if( Rcpp::traits::is_na<RTYPE>( y ) )
return y ;
103 template <
typename LHS_T,
bool RHS_NA,
typename RHS_T >
105 public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> > {
127 template <
int RTYPE,
bool LHS_NA,
typename LHS_T,
typename RHS_T >
129 public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> > {
142 if( Rcpp::traits::is_na<RTYPE>( x ) )
return x ;
152 template <
bool LHS_NA,
typename LHS_T,
typename RHS_T >
154 public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> > {
175 template <
int RTYPE,
typename LHS_T,
typename RHS_T >
177 public Rcpp::VectorBase<RTYPE,false, Divides_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> > {
199 template <
typename LHS_T,
typename RHS_T >
201 public Rcpp::VectorBase<REALSXP,false, Divides_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> > {
225 template <
int RTYPE,
bool NA,
typename T>
227 public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Primitive<RTYPE,NA,T> > {
240 return Rcpp::traits::is_na<RTYPE>(x) ? x : (x /
rhs) ;
251 template <
bool NA,
typename T>
253 public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Primitive<REALSXP,NA,T> > {
275 template <
int RTYPE,
typename T>
277 public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Primitive<RTYPE,false,T> > {
289 return Rcpp::traits::is_na<RTYPE>(x) ? x : (x /
rhs) ;
299 template <
typename T>
301 public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Primitive<REALSXP,false,T> > {
321 template <
int RTYPE,
bool NA,
typename T>
323 public Rcpp::VectorBase<RTYPE,true, Divides_Primitive_Vector<RTYPE,NA,T> > {
335 return Rcpp::traits::is_na<RTYPE>(x) ? x : (
lhs / x) ;
344 template <
bool NA,
typename T>
346 public Rcpp::VectorBase<REALSXP,true, Divides_Primitive_Vector<REALSXP,NA,T> > {
365 template <
int RTYPE,
typename T>
367 public Rcpp::VectorBase<RTYPE,true, Divides_Primitive_Vector<RTYPE,false,T> > {
388 template <
typename T>
390 public Rcpp::VectorBase<REALSXP,true, Divides_Primitive_Vector<REALSXP,false,T> > {
411template <
int RTYPE,
bool NA,
typename T,
typename U>
421template <
int RTYPE,
bool NA,
typename T,
typename U>
422inline typename traits::enable_if< traits::is_convertible< typename traits::remove_const_and_reference<U>::type,
typename traits::storage_type<RTYPE>::type>::value, sugar::Divides_Primitive_Vector< RTYPE , NA,T> >::type
430template <
int RTYPE,
bool LHS_NA,
typename LHS_T,
bool RHS_NA,
typename RHS_T>
431inline sugar::Divides_Vector_Vector<
Divides_Vector_Vector< RTYPE, LHS_NA, LHS_T, RHS_NA, RHS_T > & get_ref()
Divides_Primitive_Vector(double lhs_, const VEC_TYPE &rhs_)
double operator[](R_xlen_t i) const
Rcpp::traits::Extractor< REALSXP, NA, T >::type VEC_EXT
Rcpp::VectorBase< REALSXP, NA, T > VEC_TYPE
Divides_Primitive_Vector(double lhs_, const VEC_TYPE &rhs_)
Rcpp::traits::Extractor< REALSXP, false, T >::type VEC_EXT
Rcpp::VectorBase< REALSXP, false, T > VEC_TYPE
double operator[](R_xlen_t i) const
Rcpp::traits::Extractor< RTYPE, false, T >::type VEC_EXT
Divides_Primitive_Vector(STORAGE lhs_, const VEC_TYPE &rhs_)
STORAGE operator[](R_xlen_t i) const
traits::storage_type< RTYPE >::type STORAGE
Rcpp::VectorBase< RTYPE, false, T > VEC_TYPE
Rcpp::traits::Extractor< RTYPE, NA, T >::type VEC_EXT
STORAGE operator[](R_xlen_t i) const
Rcpp::VectorBase< RTYPE, NA, T > VEC_TYPE
Divides_Primitive_Vector(STORAGE lhs_, const VEC_TYPE &rhs_)
traits::storage_type< RTYPE >::type STORAGE
Rcpp::VectorBase< REALSXP, NA, T > VEC_TYPE
Divides_Vector_Primitive(const VEC_TYPE &lhs_, double rhs_)
Rcpp::traits::Extractor< REALSXP, NA, T >::type VEC_EXT
double operator[](R_xlen_t i) const
double operator[](R_xlen_t i) const
Divides_Vector_Primitive(const VEC_TYPE &lhs_, double rhs_)
Rcpp::traits::Extractor< REALSXP, false, T >::type VEC_EXT
Rcpp::VectorBase< REALSXP, false, T > VEC_TYPE
Divides_Vector_Primitive(const VEC_TYPE &lhs_, STORAGE rhs_)
Rcpp::VectorBase< RTYPE, false, T > VEC_TYPE
Rcpp::traits::Extractor< RTYPE, false, T >::type VEC_EXT
traits::storage_type< RTYPE >::type STORAGE
STORAGE operator[](R_xlen_t i) const
STORAGE operator[](R_xlen_t i) const
Divides_Vector_Primitive(const VEC_TYPE &lhs_, STORAGE rhs_)
traits::storage_type< RTYPE >::type STORAGE
Rcpp::traits::Extractor< RTYPE, NA, T >::type VEC_EXT
Rcpp::VectorBase< RTYPE, NA, T > VEC_TYPE
Rcpp::traits::Extractor< REALSXP, LHS_NA, LHS_T >::type LHS_EXT
Rcpp::VectorBase< REALSXP, RHS_NA, RHS_T > RHS_TYPE
double operator[](R_xlen_t i) const
Rcpp::VectorBase< REALSXP, LHS_NA, LHS_T > LHS_TYPE
Rcpp::traits::Extractor< REALSXP, RHS_NA, RHS_T >::type RHS_EXT
Divides_Vector_Vector(const LHS_TYPE &lhs_, const RHS_TYPE &rhs_)
Rcpp::traits::Extractor< REALSXP, LHS_NA, LHS_T >::type LHS_EXT
Rcpp::traits::Extractor< REALSXP, false, RHS_T >::type RHS_EXT
Divides_Vector_Vector(const LHS_TYPE &lhs_, const RHS_TYPE &rhs_)
Rcpp::VectorBase< REALSXP, LHS_NA, LHS_T > LHS_TYPE
double operator[](R_xlen_t i) const
Rcpp::VectorBase< REALSXP, false, RHS_T > RHS_TYPE
Rcpp::traits::Extractor< REALSXP, false, LHS_T >::type LHS_EXT
double operator[](R_xlen_t i) const
Divides_Vector_Vector(const LHS_TYPE &lhs_, const RHS_TYPE &rhs_)
Rcpp::VectorBase< REALSXP, false, LHS_T > LHS_TYPE
Rcpp::traits::Extractor< REALSXP, RHS_NA, RHS_T >::type RHS_EXT
Rcpp::VectorBase< REALSXP, RHS_NA, RHS_T > RHS_TYPE
Rcpp::traits::Extractor< REALSXP, false, LHS_T >::type LHS_EXT
Rcpp::traits::Extractor< REALSXP, false, RHS_T >::type RHS_EXT
Divides_Vector_Vector(const LHS_TYPE &lhs_, const RHS_TYPE &rhs_)
Rcpp::VectorBase< REALSXP, false, LHS_T > LHS_TYPE
double operator[](R_xlen_t i) const
Rcpp::VectorBase< REALSXP, false, RHS_T > RHS_TYPE
Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T >::type LHS_EXT
STORAGE operator[](R_xlen_t i) const
Divides_Vector_Vector(const LHS_TYPE &lhs_, const RHS_TYPE &rhs_)
Rcpp::traits::Extractor< RTYPE, false, RHS_T >::type RHS_EXT
Rcpp::VectorBase< RTYPE, LHS_NA, LHS_T > LHS_TYPE
traits::storage_type< RTYPE >::type STORAGE
Rcpp::VectorBase< RTYPE, false, RHS_T > RHS_TYPE
Rcpp::VectorBase< RTYPE, false, LHS_T > LHS_TYPE
Divides_Vector_Vector(const LHS_TYPE &lhs_, const RHS_TYPE &rhs_)
STORAGE operator[](R_xlen_t i) const
Rcpp::VectorBase< RTYPE, RHS_NA, RHS_T > RHS_TYPE
traits::storage_type< RTYPE >::type STORAGE
Rcpp::traits::Extractor< RTYPE, false, LHS_T >::type LHS_EXT
Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T >::type RHS_EXT
Rcpp::traits::Extractor< RTYPE, false, RHS_T >::type RHS_EXT
traits::storage_type< RTYPE >::type STORAGE
Rcpp::VectorBase< RTYPE, false, LHS_T > LHS_TYPE
Rcpp::VectorBase< RTYPE, false, RHS_T > RHS_TYPE
Divides_Vector_Vector(const LHS_TYPE &lhs_, const RHS_TYPE &rhs_)
STORAGE operator[](R_xlen_t i) const
Rcpp::traits::Extractor< RTYPE, false, LHS_T >::type LHS_EXT
Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T >::type RHS_EXT
Rcpp::VectorBase< RTYPE, LHS_NA, LHS_T > LHS_TYPE
Divides_Vector_Vector(const LHS_TYPE &lhs_, const RHS_TYPE &rhs_)
Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T >::type LHS_EXT
Rcpp::VectorBase< RTYPE, RHS_NA, RHS_T > RHS_TYPE
STORAGE operator[](R_xlen_t i) const
traits::storage_type< RTYPE >::type STORAGE
sugar::IsNa< RTYPE, NA, T > is_na(const Rcpp::VectorBase< RTYPE, NA, T > &t)
traits::enable_if< traits::is_convertible< typenametraits::remove_const_and_reference< U >::type, typenametraits::storage_type< RTYPE >::type >::value, sugar::Divides_Vector_Primitive< RTYPE, NA, T > >::type operator/(const VectorBase< RTYPE, NA, T > &lhs, const U &rhs)