00001
00002
00003
00004
00005
00006
00007 #include "tfilters.h"
00008
00009 namespace SpecFVRNS
00010 {
00011
00012 #define OVER_3 0.33333333
00013 #define OVER_6 0.16666666
00014 #define OVER_12 0.0833333333
00015 #define OVER_2_3 0.6666666666
00016
00017 float wm3h, wm3g, wm3f, wm3e, wm3d, wm3c, wm3b, wm3a;
00018 float wm2h, wm2g, wm2f, wm2e, wm2d, wm2c, wm2b, wm2a;
00019 float wm1h, wm1g, wm1f, wm1e, wm1d, wm1c, wm1b, wm1a;
00020 float wm0h, wm0g, wm0f, wm0e, wm0d, wm0c, wm0b, wm0a;
00021 float wp1h, wp1g, wp1f, wp1e, wp1d, wp1c, wp1b, wp1a;
00022 float wp2h, wp2g, wp2f, wp2e, wp2d, wp2c, wp2b, wp2a;
00023
00024
00025 int d0_c0_1ef(float a, float t, float *coeff) {
00026
00027 coeff[0] = t;
00028 coeff[1] = 1-t;
00029
00030 return 2;
00031 }
00032
00033 int d0_c0_2ef(float a, float t, float *coeff) {
00034
00035 coeff[0] = t;
00036 coeff[1] = 1-t;
00037
00038 return 2;
00039 }
00040
00041 int d0_c0_3ef(float a, float t, float *coeff) {
00042
00043 coeff[0] = ( t -1)*t/4;
00044 coeff[1] = (-t +5)*t/4;
00045 coeff[2] = (-t -3)*t/4 +1;
00046 coeff[3] = ( t -1)*t/4;
00047
00048 return 4;
00049 }
00050
00051 int d0_c0_4ef(float a, float t, float *coeff) {
00052
00053 wm2d = OVER_6; wm2c = 0; wm2b = -OVER_6; wm2a = 0;
00054 wm1d = -0.5; wm1c = 0.5; wm1b = 1; wm1a = 0;
00055 wm0d = 0.5; wm0c = - 1; wm0b = -0.5; wm0a = 1;
00056 wp1d = -OVER_6; wp1c = 0.5; wp1b = -OVER_3; wp1a = 0;
00057
00058 coeff[0] = ((wm2d*t +wm2c)*t +wm2b)*t;
00059 coeff[1] = ((wm1d*t +wm1c)*t +wm1b)*t;
00060 coeff[2] = ((wm0d*t +wm0c)*t +wm0b)*t +1;
00061 coeff[3] = ((wp1d*t +wp1c)*t +wp1b)*t;
00062
00063 return 4;
00064 }
00065
00066 int d0_c1_1ef(float a, float t, float *coeff) {
00067
00068 wm1d = -2; wm1c = 3;
00069 wm0d = 2; wm0c = -3;
00070
00071 coeff[0] = (wm1d*t +wm1c)*t*t;
00072 coeff[1] = (wm0d*t +wm0c)*t*t +1;
00073
00074 return 2;
00075 }
00076
00077 int d0_c1_2ef(float a, float t, float *coeff) {
00078
00079 wm1a = 0.25;
00080 wm0a = 0.5;
00081 wp1a = 0.25;
00082
00083 coeff[0] = ( t )*t/4;
00084 coeff[1] = (-t +2)*t/4 +wm1a;
00085 coeff[2] = (-t )*t/4 +wm0a;
00086 coeff[3] = ( t -2)*t/4 +wp1a;
00087
00088 return 4;
00089 }
00090
00091 int d0_c1_3ef(float a, float t, float *coeff) {
00092
00093 wm2d = 0.5; wm2c = -0.5; wm2b = 0; wm2a = 0;
00094 wm1d = -1.5; wm1c = 2; wm1b = 0.5; wm1a = 0;
00095 wm0d = 1.5; wm0c = -2.5; wm0b = 0; wm0a = 1;
00096 wp1d = -0.5; wp1c = 1; wp1b = -0.5; wp1a = 0;
00097
00098 coeff[0] = ((wm2d*t +wm2c)*t +wm2b)*t;
00099 coeff[1] = ((wm1d*t +wm1c)*t +wm1b)*t;
00100 coeff[2] = ((wm0d*t +wm0c)*t +wm0b)*t +1;
00101 coeff[3] = ((wp1d*t +wp1c)*t +wp1b)*t;
00102
00103 return 4;
00104 }
00105
00106 int d0_c1_4ef(float a, float t, float *coeff) {
00107
00108 wm3d = -( a ); wm3c = (1.5*a- 1./24); wm3b = 0; wm3a = 0;
00109 wm2d = ( 5*a+OVER_6); wm2c = -(7.5*a- 1./8 ); wm2b = -(OVER_12); wm2a = (0.5*a-1./24);
00110 wm1d = -(10*a+ 0.5); wm1c = ( 15*a+ 5./12); wm1b = (OVER_2_3); wm1a = -( 2*a-OVER_6 );
00111 wm0d = (10*a+ 0.5); wm0c = -( 15*a+13./12); wm0b = 0; wm0a = ( 3*a+0.75 );
00112 wp1d = -( 5*a+OVER_6); wp1c = (7.5*a+ 5./8 ); wp1b = -(OVER_2_3); wp1a = -( 2*a-OVER_6 );
00113 wp2d = ( a ); wp2c = -(1.5*a+ 1./24); wp2b = (OVER_12); wp2a = (0.5*a-1./24);
00114
00115 coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00116 coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00117 coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00118 coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00119 coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00120 coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00121
00122 return 6;
00123 }
00124
00125 int d0_c2_1ef(float a, float t, float *coeff) {
00126
00127 wm1f = 6; wm1e = -15; wm1d = 10; wm1c = 0; wm1b = 0; wm1a = 0;
00128 wm0f = -6; wm0e = 15; wm0d = -10; wm0c = 0; wm0b = 0; wm0a = 1;
00129
00130 coeff[0] = ((wm1f*t +wm1e)*t +wm1d)*t*t*t;
00131 coeff[1] = ((wm0f*t +wm0e)*t +wm0d)*t*t*t +1;
00132
00133 return 2;
00134 }
00135
00136 int d0_c2_2ef(float a, float t, float *coeff) {
00137
00138 wm2d = OVER_6; wm2c = 0; wm2b = 0; wm2a = 0;
00139 wm1d = -0.5; wm1c = 0.5; wm1b = 0.5; wm1a = OVER_6;
00140 wm0d = 0.5; wm0c = - 1; wm0b = 0; wm0a = OVER_2_3;
00141 wp1d = -OVER_6; wp1c = 0.5; wp1b = -0.5; wp1a = OVER_6;
00142
00143 coeff[0] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00144 coeff[1] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00145 coeff[2] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00146 coeff[3] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00147
00148 return 4;
00149 }
00150
00151 int d0_c2_3ef(float a, float t, float *coeff) {
00152
00153 wm2f = -1; wm2e = 2.5; wm2d = -1.5; wm2c = 0; wm2b = 0; wm2a = 0;
00154 wm1f = 3; wm1e = - 7.5; wm1d = 4.5; wm1c = 0.5; wm1b = 0.5; wm1a = 0;
00155 wm0f = -3; wm0e = 7.5; wm0d = -4.5; wm0c = - 1; wm0b = 0; wm0a = 1;
00156 wp1f = 1; wp1e = - 2.5; wp1d = 1.5; wp1c = 0.5; wp1b = -0.5; wp1a = 0;
00157
00158 coeff[0] = ((((wm2f*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00159 coeff[1] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00160 coeff[2] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00161 coeff[3] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00162
00163 return 4;
00164 }
00165
00166 int d0_c2_4ef(float a, float t, float *coeff) {
00167
00168 wm3d = - 1./36; wm3c = 0; wm3b = 0; wm3a = 0;
00169 wm2d = 11./36; wm2c = -OVER_12; wm2b = -OVER_12; wm2a = -1./36;
00170 wm1d = - 7./9 ; wm1c = 5./6 ; wm1b = OVER_2_3; wm1a = 1./9 ;
00171 wm0d = 7./9 ; wm0c = -1.5 ; wm0b = 0; wm0a = 5./6 ;
00172 wp1d = -11./36; wp1c = 5./6 ; wp1b = -OVER_2_3; wp1a = 1./9 ;
00173 wp2d = 1./36; wp2c = -OVER_12; wp2b = OVER_12; wp2a = -1./36;
00174
00175 coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00176 coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00177 coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00178 coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00179 coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00180 coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00181
00182 return 6;
00183 }
00184
00185 int d0_c3_1ef(float a, float t, float *coeff) {
00186
00187 wm1h = -20; wm1g = 70; wm1f = -84; wm1e = 35; wm1d = 0; wm1c = 0; wm1b = 0; wm1a = 0;
00188 wm0h = 20; wm0g = -70; wm0f = 84; wm0e = -35; wm0d = 0; wm0c = 0; wm0b = 0; wm0a = 1;
00189
00190 coeff[0] = (((wm1h*t +wm1g)*t +wm1f)*t +wm1e)*t*t*t*t;
00191 coeff[1] = (((wm0h*t +wm0g)*t +wm0f)*t +wm0e)*t*t*t*t +1;
00192
00193 return 2;
00194 }
00195
00196 int d0_c3_2ef(float a, float t, float *coeff) {
00197
00198 wm2f = -0.10; wm2e = 0.25; wm2d = 0; wm2c = 0; wm2b = 0; wm2a = 0;
00199 wm1f = 0.30; wm1e = -0.75; wm1d = 0; wm1c = 0.5; wm1b = 0.5; wm1a = 0.15;
00200 wm0f = -0.30; wm0e = 0.75; wm0d = 0; wm0c = - 1; wm0b = 0; wm0a = 0.70;
00201 wp1f = 0.10; wp1e = -0.25; wp1d = 0; wp1c = 0.5; wp1b = -0.5; wp1a = 0.15;
00202
00203 coeff[0] = (wm2f*t +wm2e)*t*t*t*t;
00204 coeff[1] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00205 coeff[2] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00206 coeff[3] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00207
00208 return 4;
00209 }
00210
00211 int d0_c3_3ef(float a, float t, float *coeff) {
00212
00213 wm2h = 3; wm2g = -10.5; wm2f = 12.5; wm2e = - 5; wm2d = 0; wm2c = 0; wm2b = 0; wm2a = 0;
00214 wm1h = -9; wm1g = 31.5; wm1f = -37.5; wm1e = 15; wm1d = 0; wm1c = 0.5; wm1b = 0.5; wm1a = 0;
00215 wm0h = 9; wm0g = -31.5; wm0f = 37.5; wm0e = -15; wm0d = 0; wm0c = - 1; wm0b = 0; wm0a = 1;
00216 wp1h = -3; wp1g = 10.5; wp1f = -12.5; wp1e = 5; wp1d = 0; wp1c = 0.5; wp1b = -0.5; wp1a = 0;
00217
00218 coeff[0] = ((((((wm2h*t +wm2g)*t +wm2f)*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00219 coeff[1] = ((((((wm1h*t +wm1g)*t +wm1f)*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00220 coeff[2] = ((((((wm0h*t +wm0g)*t +wm0f)*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00221 coeff[3] = ((((((wp1h*t +wp1g)*t +wp1f)*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00222
00223 return 4;
00224 }
00225
00226 int d0_c3_4ef(float a, float t, float *coeff) {
00227
00228 wm3f = 1./30; wm3e = - 1./16; wm3d = 0; wm3c = 0; wm3b = 0; wm3a = 0;
00229 wm2f = -OVER_6; wm2e = 17./48; wm2d = OVER_12; wm2c = -1./24; wm2b = -OVER_12; wm2a = - 7./240;
00230 wm1f = OVER_3; wm1e = -19./24; wm1d = -OVER_6 ; wm1c = OVER_2_3; wm1b = OVER_2_3; wm1a = 7./60;
00231 wm0f = -OVER_3; wm0e = 7./8 ; wm0d = 0; wm0c = -1.25; wm0b = 0; wm0a = 33./40;
00232 wp1f = OVER_6; wp1e = -23./48; wp1d = OVER_6 ; wp1c = OVER_2_3; wp1b = -OVER_2_3; wp1a = 7./60;
00233 wp2f = -1./30; wp2e = 5./48; wp2d = -OVER_12; wp2c = -1./24; wp2b = OVER_12; wp2a = - 7./240;
00234
00235 coeff[0] = ((((wm3f*t +wm3e)*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00236 coeff[1] = ((((wm2f*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00237 coeff[2] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00238 coeff[3] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00239 coeff[4] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00240 coeff[5] = ((((wp2f*t +wp2e)*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00241
00242 return 6;
00243 }
00244
00245 int d0_cn_1ef(float a, float t, float *coeff) {
00246
00247 coeff[0] = 0.5;
00248 coeff[1] = 0.5;
00249
00250 return 2;
00251 }
00252
00253 int d0_cn_2ef(float a, float t, float *coeff) {
00254
00255 coeff[0] = t;
00256 coeff[1] = 1-t;
00257
00258 return 2;
00259 }
00260
00261 int d0_cn_3ef(float a, float t, float *coeff) {
00262
00263 wm2c = 0.25; wm2b = (2*a-0.25); wm2a = -( a );
00264 wm1c = -0.25; wm1b = -(6*a-1.25); wm1a = (3*a );
00265 wm0c = -0.25; wm0b = (6*a-0.75); wm0a = -(3*a-1);
00266 wp1c = 0.25; wp1b = -(2*a+0.25); wp1a = ( a );
00267
00268 coeff[0] = (wm2c*t +wm2b)*t + wm2a;
00269 coeff[1] = (wm1c*t +wm1b)*t + wm1a;
00270 coeff[2] = (wm0c*t +wm0b)*t + wm0a;
00271 coeff[3] = (wp1c*t +wp1b)*t + wp1a;
00272
00273 return 4;
00274 }
00275
00276 int d0_cn_4ef(float a, float t, float *coeff) {
00277
00278 wm2d = OVER_6; wm2c = 0; wm2b = -OVER_6; wm2a = 0;
00279 wm1d = -0.5; wm1c = 0.5; wm1b = 1; wm1a = 0;
00280 wm0d = 0.5; wm0c = -1 ; wm0b = -0.5; wm0a = 1;
00281 wp1d = -OVER_6; wp1c = 0.5; wp1b = -OVER_3; wp1a = 0;
00282
00283 coeff[0] = ((wm2d*t +wm2c)*t +wm2b)*t + wm2a;
00284 coeff[1] = ((wm1d*t +wm1c)*t +wm1b)*t + wm1a;
00285 coeff[2] = ((wm0d*t +wm0c)*t +wm0b)*t + wm0a;
00286 coeff[3] = ((wp1d*t +wp1c)*t +wp1b)*t + wp1a;
00287
00288 return 4;
00289 }
00290
00291 int d1_c0_1ef(float a, float t, float *coeff) {
00292
00293 coeff[0] = t/2;
00294 coeff[1] = (1-t)/2;
00295 coeff[2] = -t/2;
00296 coeff[3] = (t-1)/2;
00297
00298 return 4;
00299 }
00300
00301 int d1_c0_2ef(float a, float t, float *coeff) {
00302
00303 coeff[0] = t/2;
00304 coeff[1] = (1-t)/2;
00305 coeff[2] = -t/2;
00306 coeff[3] = (t-1)/2;
00307
00308 return 4;
00309 }
00310
00311 int d1_c0_3ef(float a, float t, float *coeff) {
00312
00313 wm3c = ( a ); wm3b = -( a+OVER_12); wm3a = 0;
00314 wm2c = -( 5*a-0.5); wm2b = ( 5*a+ 0.25); wm2a = -OVER_12;
00315 wm1c = (10*a-1.5); wm1b = -(10*a- 5./6); wm1a = OVER_2_3;
00316 wm0c = -(10*a-1.5); wm0b = (10*a- 13./6); wm0a = 0;
00317 wp1c = ( 5*a-0.5); wp1b = -( 5*a- 1.25); wp1a = -OVER_2_3;
00318 wp2c = -( a ); wp2b = ( a-OVER_12); wp2a = OVER_12;
00319
00320 coeff[0] = (wm3c*t +wm3b)*t +wm3a;
00321 coeff[1] = (wm2c*t +wm2b)*t +wm2a;
00322 coeff[2] = (wm1c*t +wm1b)*t +wm1a;
00323 coeff[3] = (wm0c*t +wm0b)*t +wm0a;
00324 coeff[4] = (wp1c*t +wp1b)*t +wp1a;
00325 coeff[5] = (wp2c*t +wp2b)*t +wp2a;
00326
00327 return 6;
00328 }
00329
00330 int d1_c0_4ef(float a, float t, float *coeff) {
00331
00332 wm3d = OVER_12; wm3c = ( a ); wm3b = -( a+ OVER_6); wm3a = 0;
00333 wm2d = -0.25; wm2c = -( 5*a-0.25); wm2b = ( 5*a+ 0.75); wm2a = -OVER_12;
00334 wm1d = OVER_6; wm1c = (10*a- 0.5); wm1b = -(10*a+ OVER_3); wm1a = OVER_2_3;
00335 wm0d = OVER_6; wm0c = -(10*a ); wm0b = (10*a- 5./6); wm0a = 0;
00336 wp1d = -0.25; wp1c = ( 5*a+ 0.5); wp1b = -( 5*a- 0.5); wp1a = -OVER_2_3;
00337 wp2d = OVER_12; wp2c = -( a+0.25); wp2b = ( a+OVER_12); wp2a = OVER_12;
00338
00339 coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00340 coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00341 coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00342 coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00343 coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00344 coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00345
00346 return 6;
00347 }
00348
00349 int d1_c1_1ef(float a, float t, float *coeff) {
00350
00351 wm2c = 0.5; wm2b = 0; wm2a = 0;
00352 wm1c = -1.5; wm1b = 1; wm1a = 0.5;
00353 wm0c = 1.5; wm0b = -2; wm0a = 0;
00354 wp1c = -0.5; wp1b = 1; wp1a = -0.5;
00355
00356 coeff[0] = (wm2c*t +wm2b)*t +wm2a;
00357 coeff[1] = (wm1c*t +wm1b)*t +wm1a;
00358 coeff[2] = (wm0c*t +wm0b)*t +wm0a;
00359 coeff[3] = (wp1c*t +wp1b)*t +wp1a;
00360
00361 return 4;
00362 }
00363
00364 int d1_c1_2ef(float a, float t, float *coeff) {
00365
00366 wm2c = 0.5; wm2b = 0; wm2a = 0;
00367 wm1c = -1.5; wm1b = 1; wm1a = 0.5;
00368 wm0c = 1.5; wm0b = -2; wm0a = 0;
00369 wp1c = -0.5; wp1b = 1; wp1a = -0.5;
00370
00371 coeff[0] = (wm2c*t +wm2b)*t +wm2a;
00372 coeff[1] = (wm1c*t +wm1b)*t +wm1a;
00373 coeff[2] = (wm0c*t +wm0b)*t +wm0a;
00374 coeff[3] = (wp1c*t +wp1b)*t +wp1a;
00375
00376 return 4;
00377 }
00378
00379 int d1_c1_3ef(float a, float t, float *coeff) {
00380
00381 wm3c = -OVER_12; wm3b = 0; wm3a = 0;
00382 wm2c = 11./12; wm2b = -OVER_6; wm2a = -OVER_12;
00383 wm1c = -7./3; wm1b = 5./3; wm1a = OVER_2_3;
00384 wm0c = 7./3; wm0b = -3; wm0a = 0;
00385 wp1c = -11./12; wp1b = 5./3; wp1a = -OVER_2_3;
00386 wp2c = OVER_12; wp2b = -OVER_6; wp2a = OVER_12;
00387
00388 coeff[0] = (wm3c*t +wm3b)*t +wm3a;
00389 coeff[1] = (wm2c*t +wm2b)*t +wm2a;
00390 coeff[2] = (wm1c*t +wm1b)*t +wm1a;
00391 coeff[3] = (wm0c*t +wm0b)*t +wm0a;
00392 coeff[4] = (wp1c*t +wp1b)*t +wp1a;
00393 coeff[5] = (wp2c*t +wp2b)*t +wp2a;
00394
00395 return 6;
00396 }
00397
00398 int d1_c1_4ef(float a, float t, float *coeff) {
00399
00400 wm3d = OVER_12; wm3c = -OVER_6; wm3b = 0; wm3a = 0;
00401 wm2d = -0.25; wm2c = 13./12; wm2b = -OVER_12; wm2a = -OVER_12;
00402 wm1d = OVER_6; wm1c = -13./6; wm1b = 4./3; wm1a = OVER_2_3 ;
00403 wm0d = OVER_6; wm0c = 5./3; wm0b = -2.5; wm0a = 0;
00404 wp1d = -0.25; wp1c = -OVER_3; wp1b = 4./3; wp1a = -OVER_2_3;
00405 wp2d = OVER_12; wp2c = -OVER_12; wp2b = -OVER_12; wp2a = OVER_12;
00406
00407 coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00408 coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00409 coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00410 coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00411 coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00412 coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00413
00414 return 6;
00415 }
00416
00417 int d1_c2_1ef(float a, float t, float *coeff) {
00418
00419 wm2e = -0.5; wm2d = 1; wm2c = 0; wm2b = 0; wm2a = 0;
00420 wm1e = 1.5; wm1d = -3; wm1c = 0; wm1b = 1; wm1a = 0.5;
00421 wm0e = -1.5; wm0d = 3; wm0c = 0; wm0b = -2; wm0a = 0;
00422 wp1e = 0.5; wp1d = -1; wp1c = 0; wp1b = 1; wp1a = -0.5;
00423
00424 coeff[0] = ((wm2e*t +wm2d)*t*t +wm2b)*t +wm2a;
00425 coeff[1] = ((wm1e*t +wm1d)*t*t +wm1b)*t +wm1a;
00426 coeff[2] = ((wm0e*t +wm0d)*t*t +wm0b)*t +wm0a;
00427 coeff[3] = ((wp1e*t +wp1d)*t*t +wp1b)*t +wp1a;
00428
00429 return 4;
00430 }
00431
00432 int d1_c2_2ef(float a, float t, float *coeff) {
00433
00434 wm2e = -0.5; wm2d = 1; wm2c = 0; wm2b = 0; wm2a = 0;
00435 wm1e = 1.5; wm1d = -3; wm1c = 0; wm1b = 1; wm1a = 0.5;
00436 wm0e = -1.5; wm0d = 3; wm0c = 0; wm0b = -2; wm0a = 0;
00437 wp1e = 0.5; wp1d = -1; wp1c = 0; wp1b = 1; wp1a = -0.5;
00438
00439 coeff[0] = (((wm2e*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00440 coeff[1] = (((wm1e*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00441 coeff[2] = (((wm0e*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00442 coeff[3] = (((wp1e*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00443
00444 return 4;
00445 }
00446
00447 int d1_c2_3ef(float a, float t, float *coeff) {
00448
00449 wm3e = OVER_6; wm3d = -0.25; wm3c = 0; wm3b = 0; wm3a = 0;
00450 wm2e = -5./6; wm2d = 17./12; wm2c = 0.25; wm2b = -OVER_12; wm2a = -OVER_12;
00451 wm1e = 5./3; wm1d = -19./6; wm1c = -0.5; wm1b = 4./3; wm1a = OVER_2_3;
00452 wm0e = -5./3; wm0d = 3.5; wm0c = 0; wm0b = -2.5; wm0a = 0;
00453 wp1e = 5./6; wp1d = -23./12; wp1c = 0.5; wp1b = 4./3; wp1a = -OVER_2_3;
00454 wp2e = -OVER_6; wp2d = 5./12; wp2c = -0.25; wp2b = -OVER_12; wp2a = OVER_12;
00455
00456 coeff[0] = (((wm3e*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00457 coeff[1] = (((wm2e*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00458 coeff[2] = (((wm1e*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00459 coeff[3] = (((wm0e*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00460 coeff[4] = (((wp1e*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00461 coeff[5] = (((wp2e*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00462
00463 return 6;
00464 }
00465
00466 int d1_c2_4ef(float a, float t, float *coeff) {
00467
00468 wm3e = OVER_6; wm3d = -0.25; wm3c = 0; wm3b = 0; wm3a = 0;
00469 wm2e = -5./6; wm2d = 17./12; wm2c = 0.25; wm2b = -OVER_12; wm2a = -OVER_12;
00470 wm1e = 5./3; wm1d = -19./6; wm1c = -0.5; wm1b = 4./3; wm1a = OVER_2_3;
00471 wm0e = -5./3; wm0d = 3.5; wm0c = 0; wm0b = -2.5; wm0a = 0;
00472 wp1e = 5./6; wp1d = -23./12; wp1c = 0.5; wp1b = 4./3; wp1a = -OVER_2_3;
00473 wp2e = -OVER_6; wp2d = 5./12; wp2c = -0.25; wp2b = -OVER_12; wp2a = OVER_12;
00474
00475 coeff[0] = (((wm3e*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00476 coeff[1] = (((wm2e*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00477 coeff[2] = (((wm1e*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00478 coeff[3] = (((wm0e*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00479 coeff[4] = (((wp1e*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00480 coeff[5] = (((wp2e*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00481
00482 return 6;
00483 }
00484
00485 int d1_c3_1ef(float a, float t, float *coeff) {
00486
00487 wm2f = -0.75; wm2e = 1.25; wm2d = 0; wm2c = 0; wm2b = 0; wm2a = 0;
00488 wm1f = 0.75; wm1e = 0; wm1d = -2.5; wm1c = 0; wm1b = 1.25; wm1a = 0.5;
00489 wm0f = 0.75; wm0e = -3.75; wm0d = 5; wm0c = 0; wm0b = -2.5; wm0a = 0;
00490 wp1f = -0.75; wp1e = 2.5 ; wp1d = -2.5; wp1c = 0; wp1b = 1.25; wp1a = -0.5;
00491
00492 coeff[0] = ((((wm2f*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00493 coeff[1] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00494 coeff[2] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00495 coeff[3] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00496
00497 return 4;
00498 }
00499
00500 int d1_c3_2ef(float a, float t, float *coeff) {
00501
00502 wm2g = 1; wm2f = -3; wm2e = 2.5; wm2b = 0; wm2a = 0;
00503 wm1g = -3; wm1f = 9; wm1e = -7.5; wm1b = 1; wm1a = 0.5;
00504 wm0g = 3; wm0f = -9; wm0e = 7.5; wm0b = -2; wm0a = 0;
00505 wp1g = -1; wp1f = 3; wp1e = -2.5; wp1b = 1; wp1a = -0.5;
00506
00507 coeff[0] = (((wm2g*t +wm2f)*t +wm2e)*t*t*t +wm2b)*t +wm2a;
00508 coeff[1] = (((wm1g*t +wm1f)*t +wm1e)*t*t*t +wm1b)*t +wm1a;
00509 coeff[2] = (((wm0g*t +wm0f)*t +wm0e)*t*t*t +wm0b)*t +wm0a;
00510 coeff[3] = (((wp1g*t +wp1f)*t +wp1e)*t*t*t +wp1b)*t +wp1a;
00511
00512 return 4;
00513 }
00514
00515 int d1_c3_3ef(float a, float t, float *coeff) {
00516
00517 wm3f = 3./16; wm3e = -13./48; wm3d = 0; wm3c = 0; wm3b = 0; wm3a = 0;
00518 wm2f = -9./16; wm2e = 5./12; wm2d = 19./24; wm2c = 0.25; wm2b = - 7./48; wm2a = -OVER_12;
00519 wm1f = 3./8 ; wm1e = 25./24; wm1d = -19./6 ; wm1c = -0.5; wm1b = 19./12; wm1a = OVER_2_3;
00520 wm0f = 3./8 ; wm0e = -35./12; wm0d = 19./4 ; wm0c = 0; wm0b = -23./8 ; wm0a = 0;
00521 wp1f = -9./16; wp1e = 115./48; wp1d = -19./6 ; wp1c = 0.5; wp1b = 19./12; wp1a = -OVER_2_3;
00522 wp2f = 3./16; wp2e = -OVER_2_3; wp2d = 19./24; wp2c = -0.25; wp2b = - 7./48; wp2a = OVER_12;
00523
00524 coeff[0] = ((((wm3f*t +wm3e)*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00525 coeff[1] = ((((wm2f*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00526 coeff[2] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00527 coeff[3] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00528 coeff[4] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00529 coeff[5] = ((((wp2f*t +wp2e)*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00530
00531 return 6;
00532 }
00533
00534 int d1_c3_4ef(float a, float t, float *coeff) {
00535
00536 wm3g = -0.25; wm3f = 0.75; wm3e = - 7./12; wm3d = 0; wm3c = 0; wm3b = 0; wm3a = 0;
00537 wm2g = 1.25; wm2f = -3.75; wm2e = 35./12; wm2d = OVER_6; wm2c = 0.25; wm2b = -OVER_12; wm2a = -OVER_12;
00538 wm1g = -2.5; wm1f = 7.5; wm1e = -35./6 ; wm1d = -OVER_2_3; wm1c = -0.5; wm1b = 4./3; wm1a = OVER_2_3;
00539 wm0g = 2.5; wm0f = -7.5; wm0e = 35./6 ; wm0d = 1; wm0c = 0; wm0b = -5./2; wm0a = 0;
00540 wp1g = -1.25; wp1f = 3.75; wp1e = -35./12; wp1d = -OVER_2_3; wp1c = 0.5; wp1b = 4./3; wp1a = -OVER_2_3;
00541 wp2g = 0.25; wp2f = -0.75; wp2e = 7./12; wp2d = OVER_6; wp2c = -0.25; wp2b = -OVER_12; wp2a = OVER_12;
00542
00543 coeff[0] = (((((wm3g*t +wm3f)*t +wm3e)*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00544 coeff[1] = (((((wm2g*t +wm2f)*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00545 coeff[2] = (((((wm1g*t +wm1f)*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00546 coeff[3] = (((((wm0g*t +wm0f)*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00547 coeff[4] = (((((wp1g*t +wp1f)*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00548 coeff[5] = (((((wp2g*t +wp2f)*t +wp2e)*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00549
00550 return 6;
00551 }
00552
00553 int d1_cn_1ef(float a, float t, float *coeff) {
00554
00555 coeff[0] = 0;
00556 coeff[1] = 1;
00557 coeff[2] = -1;
00558 coeff[3] = 0;
00559
00560 return 4;
00561 }
00562
00563 int d1_cn_2ef(float a, float t, float *coeff) {
00564
00565 wm2b = 0.5; wm2a = ( a );
00566 wm1b = -0.5; wm1a = -(3*a-0.5);
00567 wm0b = -0.5; wm0a = (3*a );
00568 wp1b = 0.5; wp1a = -( a+0.5);
00569
00570 coeff[0] = wm2b*t +wm2a;
00571 coeff[1] = wm1b*t +wm1a;
00572 coeff[2] = wm0b*t +wm0a;
00573 coeff[3] = wp1b*t +wp1a;
00574
00575 return 4;
00576 }
00577
00578 int d1_cn_3ef(float a, float t, float *coeff) {
00579
00580 wm2c = 0.5; wm2b = 0; wm2a = -OVER_6;
00581 wm1c = -1.5; wm1b = 1; wm1a = 1;
00582 wm0c = 1.5; wm0b = -2; wm0a = -0.5;
00583 wp1c = -0.5; wp1b = 1; wp1a = -OVER_3;
00584
00585 coeff[0] = (wm2c*t +wm2b)*t +wm2a;
00586 coeff[1] = (wm1c*t +wm1b)*t +wm1a;
00587 coeff[2] = (wm0c*t +wm0b)*t +wm0a;
00588 coeff[3] = (wp1c*t +wp1b)*t +wp1a;
00589
00590 return 4;
00591 }
00592
00593 int d1_cn_4ef(float a, float t, float *coeff) {
00594
00595 wm3d = OVER_12; wm3c = ( a ); wm3b = -( a+ OVER_6); wm3a = 0;
00596 wm2d = -0.25; wm2c = -( 5*a-0.25); wm2b = ( 5*a+ 0.75); wm2a = -OVER_12;
00597 wm1d = OVER_6; wm1c = (10*a- 0.5); wm1b = -(10*a+ OVER_3); wm1a = OVER_2_3;
00598 wm0d = OVER_6; wm0c = -(10*a ); wm0b = (10*a- 5./6); wm0a = 0;
00599 wp1d = -0.25; wp1c = ( 5*a+ 0.5); wp1b = -( 5*a- 0.5); wp1a = -OVER_2_3;
00600 wp2d = OVER_12; wp2c = -( a+0.25); wp2b = ( a+OVER_12); wp2a = OVER_12;
00601
00602 coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00603 coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00604 coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00605 coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00606 coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00607 coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00608
00609 return 6;
00610 }
00611 }