Re : Re : float and double precision with C code
ok, sorry, my mistake was the C printf. Thank you for your good answer Regards ----- Message d'origine ---- De : JS Ubei <jsubei at yahoo.fr> ? : jim holtman <jholtman at gmail.com> Cc : r-help at r-project.org Envoy? le : Jeudi, 17 Juillet 2008, 15h25mn 07s Objet : [R] Re : float and double precision with C code thank you for your quick answer, I'm far of the digits capacity and my values are not the result of a computation. I'm developping a R package to acces a specific data source. And I need precision a few better. How can I do ? When I try this In R console, this is correct and what I need :
my_value <- 29.958334 my_value == 29.958334
[1] TRUE But I need to do the first operation (my_value <- 29.958334) in C Regards, ----- Message d'origine ---- De : jim holtman <jholtman at gmail.com> ? : JS Ubei <jsubei at yahoo.fr> Cc : r-help at r-project.org Envoy? le : Jeudi, 17 Juillet 2008, 14h56mn 01s Objet : Re: [R] float and double precision with C code FAQ 7.31 Also read "What Every Computer Scientist Should Know About Floating-Point Arithmetic", ACM Computing Surveys, 23/1, 5?48, also available via http://docs.sun.com/source/806-3568/ncg_goldberg.html.
On Thu, Jul 17, 2008 at 8:47 AM, JS Ubei <jsubei at yahoo.fr> wrote:
Hi all,
There is a mistake for wich I need your ligths :
///////////////////////////////////////
I have a small C code :
SEXP testData()
{
SEXP result;
void * rans;
float * my_data;
int my_data_length;
my_data_length = 2;
my_data = new float[my_data_length];
my_data[0] = 29.958334;
my_data[1] = 29.875;
PROTECT(result = allocVector(REALSXP, my_data_length));
rans = (void *)REAL(result);
for(int i=0; i < my_data_length; i++) ((double *)rans)[i] = (double)(my_data[i]);
Rprintf("C value #1 : %f\n", ((double *)rans)[0]);
Rprintf("C value #2 : %f\n", ((double *)rans)[1]);
delete(my_data);
UNPROTECT(1);
return(result);
}
///////////////////////////////////////
And the R corresponding function :
testData <- function()
{
result <- .Call("testData", PACKAGE="my_package")
print(paste("R value #1 :", result[1]))
print(paste("R value #2 :", result[2]))
return(result)
}
///////////////////////////////////////
And in R console, after compilation :
my_result <- testData()
C value #1 : 29.958334 C value #2 : 29.875000 [1] "R value #1 : 29.9583339691162" [1] "R value #2 : 29.875"
my_result[1] == 29.958334
[1] FALSE ??? How can I do to conserve my values ? Regards,
_______________________________________________________________ e http://mail.yahoo.fr ______________________________________________ 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.
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
_____________________________________________________________________________
Envo
______________________________________________
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.
_________________________________
ne boite mail plus intelligente http://mail.yahoo.fr