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

Lynette fuyaonv at hotmail.com
Mon Jan 22 20:03:20 CET 2007

```Dear all, especially to Thomas,

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 at hotmail.com>
To: <r-help at stat.math.ethz.ch>
Cc: "AJ Rossini" <blindglobe at gmail.com>; <ess-help at 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 at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help