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