예제 #1
0
파일: dq4tst.c 프로젝트: ESSS/cquadpack
int main()
{
	double a,b,omega,result,abserr,epsabs,epsrel;
    double **chebmo,res3a[52],rlist2[52];
    int i,ier,icall,n,neval,momcom;
	n = 21;
	chebmo = (double **)calloc(n,sizeof(double *));
	for (i = 0;i < n; i++)
		chebmo[i] = (double *)calloc(25,sizeof(double));

	a = 0.0;
	b = 11.0;
	omega = 20.0;
	icall = 1;	
	momcom = 0;
	epsabs = 1e-8;
	epsrel = 1e-12;
    result = dqfour(fx,a,b,omega,COSINE,epsabs,epsrel,
        icall,MAXP1,&abserr,&neval,&ier,&momcom,chebmo,0);
	printf("\nresult = %.17lg\n",result);
	printf("abserr = %.17lg\n",abserr);
	printf("neval = %d\n",neval);
	printf("momcom = %d\n",momcom);
	for (i = 0; i < n; i++)
		free(chebmo[i]);
	free(chebmo);
    return 0;
}
예제 #2
0
double dqawo(double f(double),double a,double b,double omega, int sincos,
	double epsabs,double epsrel,double *abserr,int *neval,
	int *ier)
{
    double **chebmo,result;
    int i,momcom;

	if ((chebmo = (double **)calloc(MAXP1,sizeof(double *))) == NULL) {
		fprintf(stderr,"Out of memory in DQAWO!\n");
		exit(1);
	}
	for (i = 0;i < MAXP1; i++) {
		if ((chebmo[i] = (double *)calloc(25,sizeof(double))) == NULL) {
			fprintf(stderr,"Out of memory in DQAWO!\n");
			exit(1);
		}
	}

	momcom = 0;
	result = dqfour(f,a,b,omega,sincos,epsabs,epsrel,
        1,MAXP1,abserr,neval,ier,&momcom,chebmo);
	for (i = 0;i < MAXP1; i++)
		free(chebmo[i]);
	free(chebmo);
	return result;
}