Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

FVR/tfilters.cpp

Go to the documentation of this file.
00001 /*
00002 ### Written by Torsten Moeller
00003 ### sometime in March 1998
00004 ### let me know, if you find any errors (moeller@cis.ohio-state.edu)
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 } // END_NS

Generated on Wed Dec 15 21:20:32 2004 for vuVolume by  doxygen 1.3.9.1