/* Driver for routine qromo */ #include #include #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