Dear Rcpp developers,
I wrote seq(from, to, by) function for Rcpp::sugar.
It worked for me to generate numerical sequence in ascending/descending order
and absolute value of the common difference is smaller than 1
It is great pleasure if you consider the function is correct and it could be
integrated into Rcpp package.
Best regards,
Masaki Tsuda
========
namespace Rcpp{
namespace sugar{
class Seq : public VectorBase< REALSXP,false,Seq > {
public:
Seq( double from_, double to_ , double by_ = 1.0) : from(from_), by(by_),
len(((to_-from_)/by_)+1) {
if(from_ <= to_){
if(by_ < 0.0) stop("'by' shuld be positive when 'to' is greater
than 'from'.");
} else {
if(by_ == 1.0) by = -1.0;
else if(by_ > 0.0) stop("'by' shuld be negative when 'from' is
greater than 'to'.");
len = (((to_-from_)/by_)+1);
}
}
inline double operator[]( R_xlen_t i ) const {
return from + i*by ;
}
inline R_xlen_t size() const { return len ; }
private:
double from ;
double by ;
R_xlen_t len ;
} ;
} // sugar
inline sugar::Seq seq( const double from, const double to , const double by){
return sugar::Seq( from, to, by ) ;
}
} // Rcpp
========
\
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel