120 const vector<ControlPoint>& y,
const int n,
121 vector<ControlPoint>& y2 ) {
124 double sig, p, qn, un;
135 if ( yp1.
real > 0.99e30 )
144 ( 3.0 / ( x[1] - x[0] ) ) * ( ( y[1].
real - y[0].
real ) / ( x[1] - x[0] ) - yp1.
real );
146 if ( yp1.
imag > 0.99e30 )
155 ( 3.0 / ( x[1] - x[0] ) ) * ( ( y[1].
imag - y[0].
imag ) / ( x[1] - x[0] ) - yp1.
imag );
161 for ( i = 1; i <
n - 1; i++ )
163 sig = ( x[i] - x[i - 1] ) / ( x[i + 1] - x[i - 1] );
164 p = sig * y2[i - 1].real + 2.0;
165 y2[i].real = ( sig - 1.0 ) / p;
166 u[i].
real = ( y[i + 1].real - y[i].real ) / ( x[i + 1] - x[i] ) -
167 ( y[i].real - y[i - 1].real ) / ( x[i] - x[i - 1] );
168 u[i].
real = ( 6.0 * u[i].
real / ( x[i + 1] - x[i - 1] ) - sig * u[i - 1].
real ) / p;
169 p = sig * y2[i - 1].imag + 2.0;
170 y2[i].imag = ( sig - 1.0 ) / p;
171 u[i].
imag = ( y[i + 1].imag - y[i].imag ) / ( x[i + 1] - x[i] ) -
172 ( y[i].imag - y[i - 1].imag ) / ( x[i] - x[i - 1] );
173 u[i].
imag = ( 6.0 * u[i].
imag / ( x[i + 1] - x[i - 1] ) - sig * u[i - 1].
imag ) / p;
179 if ( ypn.
real > 0.99e30 )
187 un = ( 3.0 / ( x[
n - 1] - x[
n - 2] ) ) *
188 ( ypn.
real - ( y[
n - 1].real - y[
n - 2].real ) / ( x[
n - 1] - x[
n - 2] ) );
190 y2[
n - 1].real = ( un - qn * u[
n - 2].
real ) / ( qn * y2[
n - 2].
real + 1.0 );
191 if ( ypn.
imag > 0.99e30 )
199 un = ( 3.0 / ( x[
n - 1] - x[
n - 2] ) ) *
200 ( ypn.
imag - ( y[
n - 1].imag - y[
n - 2].imag ) / ( x[
n - 1] - x[
n - 2] ) );
202 y2[
n - 1].imag = ( un - qn * u[
n - 2].
imag ) / ( qn * y2[
n - 2].
imag + 1.0 );
206 for ( k =
n - 2; k >= 0; k-- )
208 y2[k].real = y2[k].real * y2[k + 1].real + u[k].
real;
209 y2[k].imag = y2[k].imag * y2[k + 1].imag + u[k].
imag;
224 double mAB = ( _p4_d1 + _p4_d2 ).
mass();
226 int kloAB = khiAB - 1;
227 double dmHH, aa, bb, aa3, bb3;
228 double pwa_coefs_real_kloAB =
_yvalues[kloAB].real;
229 double pwa_coefs_imag_kloAB =
_yvalues[kloAB].imag;
230 double pwa_coefs_real_khiAB =
_yvalues[khiAB].real;
231 double pwa_coefs_imag_khiAB =
_yvalues[khiAB].imag;
232 double pwa_coefs_prime_real_kloAB =
_y2values[kloAB].real;
233 double pwa_coefs_prime_imag_kloAB =
_y2values[kloAB].imag;
234 double pwa_coefs_prime_real_khiAB =
_y2values[khiAB].real;
235 double pwa_coefs_prime_imag_khiAB =
_y2values[khiAB].imag;
241 double ret_real = aa * pwa_coefs_real_kloAB + bb * pwa_coefs_real_khiAB +
242 ( ( aa3 - aa ) * pwa_coefs_prime_real_kloAB +
243 ( bb3 - bb ) * pwa_coefs_prime_real_khiAB ) *
244 ( dmHH * dmHH ) / 6.0;
245 double ret_imag = aa * pwa_coefs_imag_kloAB + bb * pwa_coefs_imag_khiAB +
246 ( ( aa3 - aa ) * pwa_coefs_prime_imag_kloAB +
247 ( bb3 - bb ) * pwa_coefs_prime_imag_khiAB ) *
248 ( dmHH * dmHH ) / 6.0;