49 #define M_PIl (3.14159265358979323846264338327950288) 88 a = (
long double *)calloc( 2 * n,
sizeof(
long double ) );
89 if( a == NULL )
return( NULL );
91 for( i = 0; i < n; ++i )
93 for( j = i; j > 0; --j )
95 a[2*j] += p[2*i] * a[2*(j-1)] - p[2*i+1] * a[2*(j-1)+1];
96 a[2*j+1] += p[2*i] * a[2*(j-1)+1] + p[2*i+1] * a[2*(j-1)];
141 a = (
long double *)calloc( 4 * n,
sizeof(
long double ) );
142 if( a == NULL )
return( NULL );
149 for( i = 1; i < n; ++i )
151 a[2*(2*i+1)] += c[2*i]*a[2*(2*i-1)] - c[2*i+1]*a[2*(2*i-1)+1];
152 a[2*(2*i+1)+1] += c[2*i]*a[2*(2*i-1)+1] + c[2*i+1]*a[2*(2*i-1)];
154 for( j = 2*i; j > 1; --j )
156 a[2*j] += b[2*i] * a[2*(j-1)] - b[2*i+1] * a[2*(j-1)+1] +
157 c[2*i] * a[2*(j-2)] - c[2*i+1] * a[2*(j-2)+1];
158 a[2*j+1] += b[2*i] * a[2*(j-1)+1] + b[2*i+1] * a[2*(j-1)] +
159 c[2*i] * a[2*(j-2)+1] + c[2*i+1] * a[2*(j-2)];
162 a[2] += b[2*i] * a[0] - b[2*i+1] * a[1] + c[2*i];
163 a[3] += b[2*i] * a[1] + b[2*i+1] * a[0] + c[2*i+1];
191 rcof = (
long double *)calloc( 2 * n,
sizeof(
long double ) );
192 if( rcof == NULL )
return( NULL );
198 for( k = 0; k < n; ++k )
200 parg =
M_PIl * (
long double )(2*k+1)/(
long double )(2*n);
205 rcof[2*k+1] = -st*cparg/a;
213 for( k = 3; k <= n; ++k )
214 dcof[k] = dcof[2*k-2];
236 long double *
dcof_bwbp(
int n,
long double f1f,
long double f2f )
253 cp = cosl(
M_PIl * (f2f + f1f) / 2.0);
254 theta =
M_PIl * (f2f - f1f) / 2.0;
258 c2t = 2.0*ct*ct - 1.0;
260 rcof = (
long double *)calloc( 2 * n,
sizeof(
long double ) );
261 tcof = (
long double *)calloc( 2 * n,
sizeof(
long double ) );
263 for( k = 0; k < n; ++k )
265 parg =
M_PIl * (
long double )(2*k+1)/(
long double )(2*n);
270 rcof[2*k+1] = s2t*cparg/a;
271 tcof[2*k] = -2.0*cp*(ct+st*sparg)/a;
272 tcof[2*k+1] = -2.0*cp*st*cparg/a;
281 for( k = 3; k <= 2*n; ++k )
282 dcof[k] = dcof[2*k-2];
292 long double *
dcof_bwbs(
int n,
long double f1f,
long double f2f )
309 cp = cosl(
M_PIl * (f2f + f1f) / 2.0);
310 theta =
M_PIl * (f2f - f1f) / 2.0;
314 c2t = 2.0*ct*ct - 1.0;
316 rcof = (
long double *)calloc( 2 * n,
sizeof(
long double ) );
317 tcof = (
long double *)calloc( 2 * n,
sizeof(
long double ) );
319 for( k = 0; k < n; ++k )
321 parg =
M_PIl * (
long double )(2*k+1)/(
long double )(2*n);
326 rcof[2*k+1] = -s2t*cparg/a;
327 tcof[2*k] = -2.0*cp*(ct+st*sparg)/a;
328 tcof[2*k+1] = 2.0*cp*st*cparg/a;
337 for( k = 3; k <= 2*n; ++k )
338 dcof[k] = dcof[2*k-2];
354 ccof = (
int *)calloc( n+1,
sizeof(
int) );
355 if( ccof == NULL )
return( NULL );
360 for( i=2; i <= m; ++i)
362 ccof[i] = (n-i+1)*ccof[i-1]/i;
383 if( ccof == NULL )
return( NULL );
385 for( i = 0; i <= n; ++i)
386 if( i % 2 ) ccof[i] = -ccof[i];
403 ccof = (
int *)calloc( 2*n+1,
sizeof(
int) );
404 if( ccof == NULL )
return( NULL );
407 if( tcof == NULL )
return( NULL );
409 for( i = 0; i < n; ++i)
426 long double *
ccof_bwbs(
int n,
long double f1f,
long double f2f )
432 alpha = -2.0 * cosl(
M_PIl * (f2f + f1f) / 2.0) / cos(
M_PIl * (f2f - f1f) / 2.0);
434 ccof = (
long double *)calloc( 2*n+1,
sizeof(
long double ) );
441 for( i = 1; i < n; ++i )
443 ccof[2*i+2] += ccof[2*i];
444 for( j = 2*i; j > 1; --j )
445 ccof[j+1] += alpha * ccof[j] + ccof[j-1];
447 ccof[2] += alpha * ccof[1] + 1.0;
470 fomega = sinl(omega);
471 parg0 =
M_PIl / (
long double )(2*n);
475 for( k = 0; k < n/2; ++k )
476 sf *= 1.0 + fomega * sinl((
long double )(2*k+1)*parg0);
478 fomega = sinl(omega / 2.0);
480 if( n % 2 ) sf *= fomega + cosl(omega / 2.0);
481 sf = pow( fomega, n ) / sf;
502 fomega = sinl(omega);
503 parg0 =
M_PIl / (
long double )(2*n);
507 for( k = 0; k < n/2; ++k )
508 sf *= 1.0 + fomega * sinl((
long double )(2*k+1)*parg0);
510 fomega = cosl(omega / 2.0);
512 if( n % 2 ) sf *= fomega + sinl(omega / 2.0);
513 sf = pow( fomega, n ) / sf;
525 long double sf_bwbp(
int n,
long double f1f,
long double f2f )
529 long double sfr, sfi;
535 ctt = 1.0 / tanl(
M_PIl * (f2f - f1f) / 2.0);
539 for( k = 0; k < n; ++k )
541 parg =
M_PIl * (
long double )(2*k+1)/(
long double )(2*n);
542 sparg = ctt + sinl(parg);
544 a = (sfr + sfi)*(sparg - cparg);
561 long double sf_bwbs(
int n,
long double f1f,
long double f2f )
565 long double sfr, sfi;
571 tt = tanl(
M_PIl * (f2f - f1f) / 2.0);
575 for( k = 0; k < n; ++k )
577 parg =
M_PIl * (
long double )(2*k+1)/(
long double )(2*n);
578 sparg = tt + sinl(parg);
580 a = (sfr + sfi)*(sparg - cparg);
long double * trinomial_mult(int n, long double *b, long double *c)
long double sf_bwhp(int n, long double fcf)
long double * dcof_bwbp(int n, long double f1f, long double f2f)
long double * binomial_mult(int n, long double *p)
long double * dcof_bwbs(int n, long double f1f, long double f2f)
long double sf_bwbs(int n, long double f1f, long double f2f)
long double sf_bwbp(int n, long double f1f, long double f2f)
long double * dcof_bwlp(int n, long double fcf)
long double * ccof_bwbs(int n, long double f1f, long double f2f)
long double sf_bwlp(int n, long double fcf)
long double * dcof_bwhp(int n, long double fcf)