Example #1
0
/* [einirv] - change main return type from void to int */
int main()
{
	double a,b,epsabs,epsrel,abserr;
	double y;
    int irule,neval,ier,last;
	char buffer[40];
		
    a = 0.0;
    b = 1.0;
	epsabs = 0.0;
	epsrel = 1e-8;
	
	printf("G/K rule (1-6) ?");
	gets(buffer);
	sscanf(buffer,"%d",&irule);
    if ((irule < 1) || (irule > 6)) {
        printf("Invalid rule!\n");
        return 0;
    }
    y=dqage(efunc,a,b,epsabs,epsrel,irule,&abserr,&neval,&ier,&last);

    printf("dqage integral = %.17lg\n",y);
	printf("abserr = %.17lg, neval = %d, ier = %d\n",
		abserr,neval,ier);
    return 0;
}
Example #2
0
/* DQAG - Approximation to definite integral. (From QUADPACK)
 *
 *  Calls DQAGE with appropriate parameters assigned.
 *
 * PARAMETERS:
 *
 *    f() - double precision function to be integrated.
 *
 *    a - lower limit of integration.
 *
 *    b - upper limit of integration.
 *
 *    epsabs - absolute accuracy requested.
 *
 *    epsrel - relative accuracy requested.
 *
 *    irule - integration rule to be used as follows:
 *        irule = 1 -- G_K 7-15
 *        irule = 2 -- G_K 10-21
 *        irule = 3 -- G_K 15-31
 *        irule = 4 -- G_K 20-41
 *        irule = 5 -- G_K 25-51
 *        irule = 6 -- G_K 30-61
 */
double dqag(dq_function_type f,double a,double b,double epsabs,
    double epsrel,int irule,double *abserr,int *neval,int *ier, void* user_data)
{
    double result;
    int last;

    result = dqage(f,a,b,epsabs,epsrel,irule,abserr,neval,ier,&last, user_data);

    return result;
}
Example #3
0
int main()
{
	double a,b,epsabs,epsrel,abserr;
	double resabs,resasc;
	double y;
    int irule,neval,ier,last,i;
	char buffer[40];
		
    a = 0.0;
    b = 1.0;
	epsabs = 0.0;
	epsrel = 1e-8;
	
    for (irule = 1; irule <= 6; ++irule) {
        y=dqage(efunc,a,b,epsabs,epsrel,irule,&abserr,&neval,&ier,&last,0);

        printf("G/K rule = %i\n", irule);
        printf("dqage integral = %.17lg\n",y);
	    printf("abserr = %.17lg, neval = %d, ier = %d\n",
		    abserr,neval,ier);
        printf("\n");
    }
    return 0;
}