home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************
-
- COPYRIGHT (C) 1992 UNIVERSITY OF CALIFORNIA
-
- ***************************************************************/
-
- #include <math.h>
-
- b4_const(modx2sq, rx2, sqrt2, x1)
- double *modx2sq, *rx2, *sqrt2, *x1;
- {
- double a, b;
-
- *sqrt2 = sqrt(2.0);
- a = (-14.+(63./sqrt(15.)))/1080.;
- a = exp(log(a)/3.);
- b = (14.+(63./sqrt(15.)))/1080.;
- b = -exp(log(b)/3.);
- *x1 = a + b - (1./6.);
- *rx2 = -((a+b)/2.)-(1./6.);
- *modx2sq = (*rx2 * *rx2)+3.*(((a-b)*(a-b)/4.));
- }
-
-
- /* Family b4_4. # cos(z/2) factors with Pa, Pb: Na=4, Nb=4. */
-
- b4_4al7(h)
- double *h;
- {
- double modx2sq, rx2, sqrt2, x1;
-
- b4_const(&modx2sq, &rx2, &sqrt2, &x1);
- h[0] = sqrt2*(6.*x1-1.)/(16.*x1);
- h[1] = sqrt2*(16.*x1-1.)/(64.*x1);
- h[2] = sqrt2*(2.*x1+1.)/(32.*x1);
- h[3] = sqrt2/(64.*x1);
- }
-
- b4_4ah9(g)
- double *g;
- {
- int n, nn;
- double *h;
-
- h = (double*)malloc(5*sizeof(double));
- b4_4bl9(h);
- g -= 1;
- nn = -1;
- for(n = 1; n <= 5; n++) {
- g[n]=nn*h[n-1];
- nn *= -1;
- }
- }
-
- b4_4bl9(h)
- double *h;
- {
- double modx2sq, rx2, sqrt2, x1;
-
- b4_const(&modx2sq,&rx2,&sqrt2,&x1);
- h[0] = -5.*sqrt2*x1*(48.*modx2sq-16.*rx2+3.)/32.;
- h[1] = -5.*sqrt2*x1*(8.*modx2sq-rx2)/8.;
- h[2] = -5.*sqrt2*x1*(4.*modx2sq+4.*rx2-1.)/16.;
- h[3] = -5.*sqrt2*x1*rx2/8.;
- h[4] = -5.*sqrt2*x1/64.;
- }
-
-
- b4_4bh7(g)
- double *g;
- {
- int n, nn;
- double *h;
-
- g--;
- h = (double*)malloc(4*sizeof(double));
- b4_4al7(h);
- nn = -1;
- for(n = 1; n <= 4; n++) {
- g[n]=nn*h[n-1];
- nn *= -1;
- }
- }
-
- /****************************************************************/
-
- b5_const(a0,a1,b0,b1,c,sqrt2)
- double *a0, *a1, *b0, *b1, *c, *sqrt2;
- {
- double alpha, beta, xgamma, r, s, a;
-
- *sqrt2=sqrt(2.);
- a = cos(acos(-sqrt(15.)/8.)/3.);
- a = (a*8.*sqrt(0.6)/7.)-(9./28.);
- alpha = sqrt(a);
- beta = 27./56.;
- xgamma = -15./56.;
- r = (beta+a-(xgamma/alpha))/2.;
- s = (beta+a+(xgamma/alpha))/2.;
- *a0 = alpha-2.5;
- *a1 = -alpha-2.5;
- *b0 = (25./16.)-(1.25*alpha)+r;
- *b1 = (25./16.)+(1.25*alpha)+s;
- *c = *a0 + *b0 + 1.;
- }
-
- b5_6al11(h)
- double *h;
- {
- double a0, a1, b0, b1, c, sqrt2;
-
- b5_const(&a0,&a1,&b0,&b1,&c,&sqrt2);
- h[0] = sqrt2*35.*c*(15.*a1+20.*b1+13.)/512.;
- h[1] = sqrt2*35.*c*(26.*a1+30.*b1+23)/1024.;
- h[2] = sqrt2*35.*c*(4.*a1+3.*b1+4.)/256.;
- h[3] = sqrt2*35.*c*(12.*a1+4.*b1+17.)/2048.;
- h[4] = sqrt2*35.*c*(a1+3.)/1024.;
- h[5] = sqrt2*35.*c/2048.;
- }
-
- b5_6ah9(g)
- double *g;
- {
- int n, nn;
- double *h;
-
- h = (double*)malloc(5*sizeof(double));
- b5_6bl9(h);
- g--;
- nn = -1;
- for(n = 1; n <= 5; n++) {
- g[n]=nn*h[n-1];
- nn *= -1;
- }
- }
-
- b5_6bl9(h)
- double *h;
- {
- double a0, a1, b0, b1, c, sqrt2;
-
- b5_const(&a0,&a1,&b0,&b1,&c,&sqrt2);
- h[0] = sqrt2*(8.*a0+12.*b0+7.)/(32.*c);
- h[1] = sqrt2*(7.*a0+8.*b0+6.)/(32.*c);
- h[2] = sqrt2*(2.*a0+b0+2.)/(16.*c);
- h[3] = sqrt2*(a0+2.)/(32.*c);
- h[4] = sqrt2/(64.*c);
- }
-
- b5_6bh11(g)
- double *g;
- {
- int n, nn;
- double *h;
-
- h = (double*)malloc(6*sizeof(double));
- b5_6al11(h);
- g--;
- nn = -1;
- for(n = 1; n <= 6; n++) {
- g[n]=nn*h[n-1];
- nn *= -1;
- }
- }
-
- /****************************************************************/
-
- b5_4al9(h)
- double *h;
- {
- double a0, a1, b0, b1, c, sqrt2;
-
- b5_const(&a0,&a1,&b0,&b1,&c,&sqrt2);
- h[0] = sqrt2*35.*c*(8.*a1+12.*b1+7.)/256.;
- h[1] = sqrt2*35.*c*(7.*a1+8.*b1+6.)/256.;
- h[2] = sqrt2*35.*c*(2.*a1+b1+2.)/128.;
- h[3] = sqrt2*35.*c*(a1+2.)/256.;
- h[4] = sqrt2*35.*c/512.;
- }
-
- b5_4ah11(g)
- double *g;
- {
- int n, nn;
- double *h;
-
- h = (double*)malloc(6*sizeof(double));
- b5_4bl11(h);
- g--;
- nn = -1;
- for(n = 1; n <= 6; n++) {
- g[n]=nn*h[n-1];
- nn *= -1;
- }
- }
-
- b5_4bl11(h)
- double *h;
- {
- double a0, a1, b0, b1, c, sqrt2;
-
- b5_const(&a0,&a1,&b0,&b1,&c,&sqrt2);
- h[0] = sqrt2*(15.*a0+20.*b0+13.)/(64.*c);
- h[1] = sqrt2*(26.*a0+30.*b0+23)/(128.*c);
- h[2] = sqrt2*(4.*a0+3.*b0+4.)/(32.*c);
- h[3] = sqrt2*(12.*a0+4.*b0+17.)/(256.*c);
- h[4] = sqrt2*(a0+3.)/(128.*c);
- h[5] = sqrt2/(256.*c);
- }
-
- b5_4bh9(g)
- double *g;
- {
- int n, nn;
- double *h;
-
- h = (double*)malloc(5*sizeof(double));
- b5_4al9(h);
- nn = -1;
- g--;
- for(n = 1; n <= 5; n++) {
- g[n]=nn*h[n-1];
- nn *= -1;
- }
- }
-
- /****************************************************************/
-
- b5_5al10(h)
- double *h;
- {
- double a0, a1, b0, b1, c, sqrt2;
-
- b5_const(&a0, &a1, &b0, &b1, &c, &sqrt2);
- h--;
-
- h[1] = sqrt2*35.*c*(15.*a1+20.*b1+13.)/512.;
- h[2] = sqrt2*35.*c*(11.*a1+10.*b1+10.)/512.;
- h[3] = sqrt2*35.*c*(5.*a1+2.*b1+6.)/512.;
- h[4] = sqrt2*35.*c*(2.*a1+5.)/1024.;
- h[5] = sqrt2*35.*c/1024.;
- }
-
- b5_5ah10(g)
- double *g;
- {
- int n, nn;
- double *h;
-
- h = (double*)malloc(5*sizeof(double));
- b5_5bl10(h);
- h--;
-
- nn = -1;
- g--;
- for(n = 1; n <= 5; n++) {
- g[n]=nn*h[n];
- nn *= -1;
- }
- }
-
- b5_5bl10(h)
- double *h;
- {
- double a0, a1, b0, b1, c, sqrt2;
-
- b5_const(&a0, &a1, &b0, &b1, &c, &sqrt2);
- h--;
- h[1] = sqrt2*(15.*a0+20.*b0+13.)/(64.*c);
- h[2] = sqrt2*(11.*a0+10.*b0+10.)/(64.*c);
- h[3] = sqrt2*(5.*a0+2.*b0+6.)/(64.*c);
- h[4] = sqrt2*(2.*a0+5.)/(128.*c);
- h[5] = sqrt2/(128.*c);
- }
-
- b5_5bh10(g)
- double *g;
- {
- int n, nn;
- double *h;
-
- h = (double*)malloc(5*sizeof(double));
- b5_5al10(h);
-
- h--;
- g--;
- nn = -1;
- for(n = 1; n <= 5; n++) {
- g[n]=nn*h[n];
- nn *= -1;
- }
- }
-