# Re: [R] How to get correct integration in C for step function?

From: Lynette <fuyaonv_at_hotmail.com>
Date: Mon 22 Jan 2007 - 19:03:20 GMT

I have figured out the problem. For the step function, something wrong with my C codes. I should use the expression ((x>=0.25)&&(x<=0.75)) ? 2:1 instead of ((x>=1/4)&&(x<=3/4)) ? 2:1 ). Have no idea why 0.25 makes difference from 1/4 in C. But now I can go ahead with the correct integration in C. Thank you all. And hope this helps to others.

Best wishes,
Lynette

• Original Message ----- From: "Lynette" <fuyaonv@hotmail.com> To: <r-help@stat.math.ethz.ch> Cc: "AJ Rossini" <blindglobe@gmail.com>; <ess-help@stat.math.ethz.ch> Sent: Sunday, January 21, 2007 6:24 PM Subject: [R] How to get correct integration in C for step function?

> Dear all,
>
> I am using Rdqags in C to realize the integration. It seems for the
> continous C function I can get correct results. However, for step
> functions,
> the results are not correct. For example, the following one, when
> integrated
> from 0 to 1 gives 1 instead of the correct 1.5
>
> void func( double *x, int n, void *ex )
> {
> int i;
>
> for(i=0;i<n;i++) { x[i]=( ((x>=1/4)&&(x<=3/4)) ? 2:1 ) ; }
> return;
> }
>
> while the following one when integrated from 0 to 1 gives the correct
> 0.7853983
>
> void func( double *x, int n, void *ex )
> {
> int i;
>
> for(i=0;i<n;i++) { x[i]= pow(1-x[i]*x[i],.5); }
> return;
> }
>
>
> Best,
> Lynette
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help