Re: [R] Displaying numerics to full double precision

From: Jeff Delmerico <jeffdelmerico_at_yahoo.com>
Date: Wed, 5 Dec 2007 12:16:25 -0800 (PST)

Thanks Ben, that fixed the display within R. However, even after changing the display settings, the matrix elements still appear to be exported in single precision. The matrix object is being passed into my C routines as an SEXP Numeric type, and somewhere along the way, some of the digits are getting lost.
Here's the relevant bit of my C code:

SEXP
divideMatrix(SEXP matrix_in, SEXP sub_height, SEXP sub_width, SEXP fileS) ...
if ( isMatrix(matrix_in) && isNumeric(matrix_in) ) {

	/* Use R macros to convert from SEXP to C types */
	matrix = REAL(matrix_in);
	height = INTEGER(GET_DIM(matrix_in))[0];
	width = INTEGER(GET_DIM(matrix_in))[1];
	subW = INTEGER_VALUE(sub_width);
	subH = INTEGER_VALUE(sub_height);
        ...

}

Am I using the wrong macro to convert into a double in C? Any ideas?

Thanks,
Jeff Delmerico

Ben Bolker wrote:

> 
> 
> 
> Jeff Delmerico wrote:

>>
>> I'm working on a shared library of C functions for use with R, and I want
>> to create a matrix in R and pass it to the C routines. I know R computes
>> and supposedly stores numerics in double precision, but when I create a
>> matrix of random numerics using rnorm(), the values are displayed in
>> single precision, and also exported in single precision when I pass them
>> out to my C routines. An example is below:
>>
>>> a <- matrix(rnorm(16, mean=10, sd=4), nrow=4)
>>> a

>> [,1] [,2] [,3] [,4]
>> [1,] 14.907606 17.572872 19.708977 9.809943
>> [2,] 9.322041 13.624452 7.745254 7.596176
>> [3,] 10.642408 6.151546 9.937434 6.913875
>> [4,] 14.617647 5.577073 8.217559 12.115465
>>> storage.mode(a)

>> [1] "double"
>>
>> Does anyone know if there is a way to change the display or storage
>> settings so that the values will be displayed to their full precision?
>> Or does rnorm only produce values to single precision?
>>
>> Any assistance would be greatly appreciated.
>>
>> Thanks,
>> Jeff Delmerico
>>
> 
> options("digits") # 7
> options(digits=x)
> 
>   I may be mistaken, but I think the values are indeed exported
> as double precision -- the issue here is just a display setting.
> 
>   Ben Bolker
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Displaying-numerics-to-full-double-precision-tf4950807.html#a14179534
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Received on Thu 06 Dec 2007 - 18:54:48 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 06 Dec 2007 - 19:30:18 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.