63 lines
1.6 KiB
C
63 lines
1.6 KiB
C
|
|
/* Driver for routine qromo */
|
|
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
#define NRANSI
|
|
#include "nr.h"
|
|
|
|
#define X1 0.0
|
|
#define X2 1.5707963
|
|
#define X3 3.1415926
|
|
#define AINF 1.0E20
|
|
#define PI 3.1415926
|
|
|
|
static float funcl(float x)
|
|
{
|
|
return (float) (sqrt(x)/sin(x));
|
|
}
|
|
|
|
static float funcu(float x)
|
|
{
|
|
return (float) (sqrt(PI-x)/sin(x));
|
|
}
|
|
|
|
static float fncinf(float x)
|
|
{
|
|
|
|
return (float) (sin(x)/(x*x));
|
|
}
|
|
|
|
static float fncend(float x)
|
|
{
|
|
return (float) (exp(-x)/sqrt(x));
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
float res1,res2,result;
|
|
|
|
printf("\nImproper integrals:\n\n");
|
|
result=qromo(funcl,X1,X2,midsql);
|
|
printf("Function: sqrt(x)/sin(x) Interval: (0,pi/2)\n");
|
|
printf("Using: MIDSQL Result: %8.4f\n\n",result);
|
|
result=qromo(funcu,X2,X3,midsqu);
|
|
printf("Function: sqrt(pi-x)/sin(x) Interval: (pi/2,pi)\n");
|
|
printf("Using: MIDSQU Result: %8.4f\n\n",result);
|
|
result=qromo(fncinf,X2,AINF,midinf);
|
|
printf("Function: sin(x)/x**2 Interval: (pi/2,infty)\n");
|
|
printf("Using: MIDINF Result: %8.4f\n\n",result);
|
|
result=qromo(fncinf,-AINF,-X2,midinf);
|
|
printf("Function: sin(x)/x**2 Interval: (-infty,-pi/2)\n");
|
|
printf("Using: MIDINF Result: %8.4f\n\n",result);
|
|
res1=qromo(fncend,X1,X2,midsql);
|
|
res2=qromo(fncend,X2,AINF,midinf);
|
|
printf("Function: exp(-x)/sqrt(x) Interval: (0.0,infty)\n");
|
|
printf("Using: MIDSQL,MIDINF Result: %8.4f\n\n",res1+res2);
|
|
res2=qromo(fncend,X2,AINF,midexp);
|
|
printf("Function: exp(-x)/sqrt(x) Interval: (0.0,infty)\n");
|
|
printf("Using: MIDSQL,MIDEXP Result: %8.4f\n\n",res1+res2);
|
|
return 0;
|
|
}
|
|
#undef NRANSI
|