Sorry for not including enough information everyone.

I have quite a bit of code, so I will just enter relevant pieces...

This is how I call C from R:

The tstats are tstatistics (difference of mean, divided by sqrt of S1+S2)
from an unpermuted matrix. The c code is below...

dyn.load("testp.so")
obj<-.C("testp",ptests=as.array(permuted_ttests),as.integer(B),permuted1=as.array(permuted),matrix=as.array(Imatrix),
as.integer(ncols), as.integer(nrows),as.integer(g)*,as.array(abs(tstats)*
),pvalues=as.array(ps))

to test, I decided not to permute my matrix and just send it the original
matrix, Imatrix. Everything in C is a double, or if I use an integer, I cast
it to a double (to divide and get mean, etc). I then compare the values of
the tstats that I sent into C and the tsats I calculate within C...

The following is my C code:

void testp(double *permuted_ttests,int *B,double *permuted,double
*Imatrix,int *nc,int *nr,int *g,*double *Tinitial*,double *ps) {

after which, using the variable above I take the mean of certain elements
(currently the unpermuted matrix to test) via other functions using the same
double and pointers and I store them in C1 and C2 and solve for an absolute
T statistic - and print it (I erased the Ts earlier).


    for (i=0; i<*nr; i++){
      xbardiff = C1[i][0]-C2[i][0];
      denom = sqrt(C1[i][2]+C2[i][2]);
    *  Ts[i]=fabs(xbardiff/denom);*
*      Rprintf("%f Ts\n",Ts[i]);*
*
      if (fabs(Ts[i])>fabs(Tinitial[i])){ //summing of permueted_ttests
counter[i]++;
 Rprintf("ts %f and tinitial %f \n", Ts[i],Tinitial[i]);
      }
*
etc...
The issue here - is that I get a few that when printed it appears that they
were rounded up - causing my counter[i] to ++ in some cases.

Should I send more code?

Sorry and thank you very much,




On Fri, Jul 9, 2010 at 6:18 AM, Duncan Murdoch <murdoch.dun...@gmail.com>wrote:

> Joseph N. Paulson wrote:
>
>> Hi all!
>>
>> I am currently writing a C-module for a for loop in which I permute
>> columns
>> in a matrix (bootstrapping) and I send a couple of variables into C
>> initially. All of it is working, except the initial values I send to R are
>> rounded/truncated (I believe rounded).
>>
>> I am using a 32 bit machine to compile, I am using (I believe) 32 bit
>> R....
>>
>> While debugging I print the values I am sending to C, and then I print the
>> same values using Rprintf and the number gets rounded to 10^-6, which is
>> actually causing some errors for me. Is there any way to correct/prevent
>> the
>> error?
>>
>>
>> sample output from R
>>
>>  [1,]  1.0000000
>>  [2,]  1.0256242
>>  [3,]  1.1826277
>>  [4,] -0.6937246
>>  [5,]  1.3633604
>>
>> sample output from C
>> 1.000000
>> 1.025624
>> 1.182628
>> 0.693725
>> 1.363360
>>
>>
>
> It looks as though you are confusing the display of numbers with their
> internal values.  R is printing 7 decimal places, C is printing 6.  As far
> as we can tell, that's the only difference.
>
> Duncan Murdoch
>
>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help@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.
>>
>>
> ______________________________________________
> R-help@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.
>



-- 
 -  Joseph N. Paulson

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to