On Tue, Apr 6, 2010 at 6:54 AM, Romain Francois
<[email protected]> wrote:
> Hello,
>
> I have added support for these primitive types in Rcpp, so that one can
> wrap containers such as :
>
> std::vector<short>, ...
>
> Is this something that should be protected in case there is no "short",
> "long", etc ?

You can check in R's .Machine object on the various sizes for which R
scans.  It can tell you if there is a difference between long and long
long or between double and long double.  It does not list anything
regarding short.  The sum of double.digits and double.exponent is the
number of bits in a double.  Generally log(.Machine$integer.max, 2) is
1 less than the number of bits in an int.


> str(.Machine)
List of 18
 $ double.eps           : num 2.22e-16
 $ double.neg.eps       : num 1.11e-16
 $ double.xmin          : num 2.23e-308
 $ double.xmax          : num 1.80e+308
 $ double.base          : int 2
 $ double.digits        : int 53
 $ double.rounding      : int 5
 $ double.guard         : int 0
 $ double.ulp.digits    : int -52
 $ double.neg.ulp.digits: int -53
 $ double.exponent      : int 11
 $ double.min.exp       : int -1022
 $ double.max.exp       : int 1024
 $ integer.max          : int 2147483647
 $ sizeof.long          : int 4
 $ sizeof.longlong      : int 8
 $ sizeof.longdouble    : int 12
 $ sizeof.pointer       : int 4
> log(.Machine$integer.max, 2)
[1] 31
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to