C ALGORITHM 816, COLLECTED ALGORITHMS FROM ACM. C THIS WORK PUBLISHED IN TRANSACTIONS ON MATHEMATICAL SOFTWARE, C VOL. 28,NO. 1, March, 2002, P. 75--100. #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # C++/ # C++/Dp/ # C++/Dp/Drivers/ # C++/Dp/Drivers/r2d2lri_sample.cpp # C++/Dp/Drivers/res # C++/Dp/Src/ # C++/Dp/Src/r2d2lri.cpp # C++/Dp/Src/r2d2lri.h # Doc/ # Doc/Readme.txt # This archive created: Wed Jun 19 10:36:36 2002 export PATH; PATH=/bin:$PATH if test ! -d 'C++' then mkdir 'C++' fi cd 'C++' if test ! -d 'Dp' then mkdir 'Dp' fi cd 'Dp' if test ! -d 'Drivers' then mkdir 'Drivers' fi cd 'Drivers' if test -f 'r2d2lri_sample.cpp' then echo shar: will not over-write existing file "'r2d2lri_sample.cpp'" else cat << "SHAR_EOF" > 'r2d2lri_sample.cpp' //***************************************************************************** // r2d2lri_sample.cpp // Sample program demonstrating use of the DoubleIntegral class. // // Written by Ian Robinson and Michael Hill. // Last updated 23 April, 2001. // // This program demonstrates use of various forms of the "evaluate" function // and other public functions provided by the DoubleIntegral class to evaluate // integrals 1, 21 and 30 from the Robinson and De Doncker testbed to various // accuracies. Refer to the README.txt file for comments on the set-up of this // program. // // To run the program, ensure that the files r2d2lri.h and r2d2lri.cpp (or // their corresponding object files) are in the same directory as this file. // Then compile r2d2lri_sample.cpp and run the resulting executable file. // // Output from the program is directed to a file called r2d2lri_sample.out. // //***************************************************************************** #include "r2d2lri.h" #include #include // Definitions of Integrals 1, 21 and 30 from the RD testbed. // Integral 1. const double a1 = 0.0; const double b1 = 1.0; double g1(double x) {return 0.0;} double h1(double x) {return x*x;} double f1(double x, double y) {return x*exp(y);} const double exact1 = exp(1.0)/2.0 - 1.0; // Integral 21. const double a21 = 0.0; const double b21 = 2.0; double g21(double x) {return 0.0;} double h21(double x) { const double TWO_THIRDS = 2.0/3.0; double z = 1.0 - pow((x/2.0),1.5); return z <= 0.0 ? 0.0 : 3.0*pow(z,TWO_THIRDS); }; double f21(double x, double y) { double z = x*y; return z == 0.0 ? 0.0 : pow(z,-0.1); }; const double exact21 = 4.486951668283621; // Integral 30. const double a30 = -INFINITY; const double b30 = 0.0; double g30(double x) {return 0.0;} double h30(double x) {return INFINITY;} double f30(double x, double y) { double z1 = y - x + 1.0; z1 = z1*z1; if (z1 == 0.0) return 0.0; double z2 = -x*y; return z2 <= 0.0 ? 0.0 : 1.0/(z1 * sqrt(z2)); } const double exact30 = 4.0*atan(1.0); int main() { ofstream out; out.open("r2d2lri_sample.out"); out << setiosflags(ios::scientific); out << "OUTPUT FILE FOR r2d2lri_sample.cpp" << endl << endl; // First, evaluate I30 to 2, 4 and 6 significant figures. out << "COMPUTATION OF I30 TO 2, 4, 6 AND 10 FIGURES USING r2d2lri" << endl << endl; out << " 0 oo dy dx " << endl << " I30 = I I ------------------- . " << endl << " -oo 0 sqrt(-xy).(y-x+1)^2 " << endl << endl; DoubleIntegral I(a30,b30,g30,h30,f30); out << "Requested accuracy = 2 significant figures" << endl; out << setprecision(14) << "The computed value of I30 is " << I.evaluate(0.5E-2) << endl; out << setprecision(1) << "The estimated relative error is " << I.rel_err_est() << endl; out << "The actual relative error is " << fabs(I.value() - exact30)/exact30 << endl; out << "The error flag has been set to " << I.error_flag() << endl; out << "The number of function evaluations used was " << I.evals() << endl << endl; out << "Requested accuracy = 4 significant figures" << endl; out << setprecision(14) << "The computed value of I30 is " << I.evaluate(0.5E-4) << endl; out << setprecision(1) << "The estimated relative error is " << I.rel_err_est() << endl; out << "The actual relative error is " << fabs(I.value() - exact30)/exact30 << endl; out << "The error flag has been set to " << I.error_flag() << endl; out << "The number of function evaluations was " << I.evals() << endl << endl; out << "Requested accuracy = 6 significant figures" << endl; out << setprecision(14) << "The computed value of I30 is " << I.evaluate(0.5E-6) << endl; out << setprecision(1) << "The estimated relative error is " << I.rel_err_est() << endl; out << "The actual relative error is " << fabs(I.value() - exact30)/exact30 << endl; out << "The error flag has been set to " << I.error_flag() << endl; out << "The number of function evaluations was " << I.evals() << endl << endl; // Now try to evaluate I30 to 10 significant figures. (The algorithm is // unable to achieve this accuracy and sets the error flag accordingly.) out << "Requested accuracy = 10 significant figures" << endl; out << setprecision(14) << "The computed value of I30 is " << I.evaluate(0.5E-10) << endl; out << setprecision(1) << "The estimated relative error is " << I.rel_err_est() << endl; out << "The actual relative error is " << fabs(I.value() - exact30)/exact30 << endl; out << "The error flag has been set to " << I.error_flag() << endl; out << "The number of function evaluations was " << I.evals() << endl << endl; // Now, evaluate I1 to 12 significant figures. DoubleIntegral I1; double value, error; int flag; out << endl << "COMPUTATION OF I1 TO 12 FIGURES" << endl << endl; out << " 1 x^2 " << endl << " I1 = I I x.exp(y) dy dx " << endl << " 0 0 " << endl << endl; value = I1.evaluate(a1,b1,g1,h1,f1,error,flag,0.5E-12); out << "Requested accuracy = 12 significant figures" << endl; out << setprecision(14) << "The computed value of I1 is " << value << endl; out << setprecision(1) << "The estimated relative error is " << error << endl; out << "The actual relative error is " << fabs(value - exact1)/exact1 << endl; out << "The error flag has been set to " << flag << endl; out << "The number of function evaluations was " << I1.evals() << endl << endl; // Finally, evaluate each of the three integrals to 7 significant figures. out << endl << "COMPUTATION OF I30, I21 AND I1 TO 7 FIGURES" << endl << endl; out << " 2 h(x) " << endl << " I21 = I I (xy)^(-0.1) dy dx " << endl << " 0 0 " << endl << endl << " where " << endl << " h(x) = 3(1 - (x/2)^1.5)^(2/3) " << endl << endl; I.set_rel_tol(0.5E-7); out << "Requested accuracy = 7 significant figures" << endl; out << setprecision(14) << "The computed value of I30 is " << I.evaluate() << endl; out << setprecision(1) << "The estimated relative error is " << I.rel_err_est() << endl; out << "The actual relative error is " << fabs(I.value() - exact30)/exact30 << endl; out << "The error flag has been set to " << I.error_flag() << endl; out << "The number of function evaluations was " << I.evals() << endl << endl; I.set_new_integral(a21,b21,g21,h21,f21); out << "Requested accuracy = 7 significant figures" << endl; out << setprecision(14) << "The computed value of I21 is " << I.evaluate() << endl; out << setprecision(1) << "The estimated relative error is " << I.rel_err_est() << endl; out << "The actual relative error is " << fabs(I.value() - exact21)/exact21 << endl; out << "The error flag has been set to " << I.error_flag() << endl; out << "The number of function evaluations was " << I.evals() << endl << endl; I = I1; out << "Requested accuracy = 7 significant figures" << endl; out << setprecision(14) << "The computed value of I1 is " << I.evaluate() << endl; out << setprecision(1) << "The estimated relative error is " << I.rel_err_est() << endl; out << "The actual relative error is " << fabs(I.value() - exact1)/exact1 << endl; out << "The error flag has been set to " << I.error_flag() << endl; out << "The number of function evaluations was " << I.evals() << endl; return 0; } SHAR_EOF fi # end of overwriting check if test -f 'res' then echo shar: will not over-write existing file "'res'" else cat << "SHAR_EOF" > 'res' OUTPUT FILE FOR r2d2lri_sample.cpp COMPUTATION OF I30 TO 2, 4, 6 AND 10 FIGURES USING r2d2lri 0 oo dy dx I30 = I I ------------------- . -oo 0 sqrt(-xy).(y-x+1)^2 Requested accuracy = 2 significant figures The computed value of I30 is 3.14166407938085e+00 The estimated relative error is 6.4e-04 The actual relative error is 2.3e-05 The error flag has been set to 0 The number of function evaluations used was 265 Requested accuracy = 4 significant figures The computed value of I30 is 3.14159290684911e+00 The estimated relative error is 1.5e-05 The actual relative error is 8.1e-08 The error flag has been set to 0 The number of function evaluations was 709 Requested accuracy = 6 significant figures The computed value of I30 is 3.14159259152384e+00 The estimated relative error is 1.3e-07 The actual relative error is 2.0e-08 The error flag has been set to 0 The number of function evaluations was 2841 Requested accuracy = 10 significant figures The computed value of I30 is 3.14159258961594e+00 The estimated relative error is 8.1e-10 The actual relative error is 2.0e-08 The error flag has been set to 1 The number of function evaluations was 28426 COMPUTATION OF I1 TO 12 FIGURES 1 x^2 I1 = I I x.exp(y) dy dx 0 0 Requested accuracy = 12 significant figures The computed value of I1 is 3.59140914229522e-01 The estimated relative error is 5.0e-15 The actual relative error is 2.8e-15 The error flag has been set to 0 The number of function evaluations was 1417 COMPUTATION OF I30, I21 AND I1 TO 7 FIGURES 2 h(x) I21 = I I (xy)^(-0.1) dy dx 0 0 where h(x) = 3(1 - (x/2)^1.5)^(2/3) Requested accuracy = 7 significant figures The computed value of I30 is 3.14159258960700e+00 The estimated relative error is 1.5e-09 The actual relative error is 2.0e-08 The error flag has been set to 0 The number of function evaluations was 11377 Requested accuracy = 7 significant figures The computed value of I21 is 4.48695166827207e+00 The estimated relative error is 1.4e-08 The actual relative error is 2.6e-12 The error flag has been set to 0 The number of function evaluations was 1063 Requested accuracy = 7 significant figures The computed value of I1 is 3.59140914229522e-01 The estimated relative error is 5.0e-15 The actual relative error is 2.8e-15 The error flag has been set to 0 The number of function evaluations was 1417 SHAR_EOF fi # end of overwriting check cd .. if test ! -d 'Src' then mkdir 'Src' fi cd 'Src' if test -f 'r2d2lri.cpp' then echo shar: will not over-write existing file "'r2d2lri.cpp'" else cat << "SHAR_EOF" > 'r2d2lri.cpp' //**************************************************************************** // r2d2lri.cpp // Implementation file for the DoubleIntegral class. // // Code written by Ian Robinson and Michael Hill. // Last updated: 23 April 2001 // // Refer to the header file r2d2lri.h and to the files r2d2lri_sample.cpp and // README.txt for comments on, and examples of, the use of this class. // //**************************************************************************** #include "r2d2lri.h" // CONSTRUCTORS //**************************************************************************** DoubleIntegral::DoubleIntegral(double req_rel_acc, double req_abs_acc, unsigned max_evals) // Default values for all three of the parameters are provided in the prototype // for this constructor. { rel_tol = req_rel_acc; abs_tol = req_abs_acc; max_points = min(max_evals, DEFAULT_MAX_POINTS); xdir = NOT_CHECKED; ydir = NOT_CHECKED; max_iters = DEFAULT_C_SIZE - 1; c = new double [DEFAULT_C_SIZE]; c[0] = 0.0; e = new double [DEFAULT_C_SIZE-7]; } //**************************************************************************** DoubleIntegral::DoubleIntegral(double A, double B, BOUNDARY_FUNCTION G, BOUNDARY_FUNCTION H, INTEGRAND_FUNCTION F, double req_rel_acc, double req_abs_acc, unsigned max_evals) // The prototype for this constructor provides default values for the last // three parameters, req_rel_acc, req_abs_acc and max_evals. { a = A; b = B; g = G; h = H; f = F; rel_tol = req_rel_acc; abs_tol = req_abs_acc; max_points = min(max_evals,DEFAULT_MAX_POINTS); set_region_type(); set_initial_values(); max_iters = DEFAULT_C_SIZE - 1; c = new double [DEFAULT_C_SIZE]; c[0] = 0.0; e = new double [DEFAULT_C_SIZE-7]; } // COPY CONSTRUCTOR //**************************************************************************** DoubleIntegral::DoubleIntegral(const DoubleIntegral& I) // Copies the contents of all private data members of I into the corresponding // private data members of the new object. { unsigned i; a = I.a; b = I.b; g = I.g; h = I.h; f = I.f; rel_tol = I.rel_tol; abs_tol = I.abs_tol; max_points = I.max_points; xdir = I.xdir; ydir = I.ydir; x_transform = I.x_transform; y_transform = I.y_transform; cubature = I.cubature; err_est = I.err_est; fun_vals = I.fun_vals; ifail = I.ifail; max_iters = I.max_iters; c = new double [max_iters + 1]; for (i = 0; i < max_iters; i++) c[i] = I.c[i]; e = new double [max_iters - 6]; for (i = 0; i < max_iters - 7; i++) e[i] = I.e[i]; } // DESTRUCTOR //**************************************************************************** DoubleIntegral::~DoubleIntegral() { delete [] c; delete [] e; } // ASSIGNMENT OPERATOR //**************************************************************************** void DoubleIntegral::operator =(const DoubleIntegral &I) { unsigned i; double *temp; a = I.a; b = I.b; g = I.g; h = I.h; f = I.f; rel_tol = I.rel_tol; abs_tol = I.abs_tol; max_points = I.max_points; xdir = I.xdir; ydir = I.ydir; x_transform = I.x_transform; y_transform = I.y_transform; cubature = I.cubature; err_est = I.err_est; fun_vals = I.fun_vals; ifail = I.ifail; if (max_iters != I.max_iters) { temp = new double [I.max_iters + 1]; delete [] c; c = temp; temp = new double [I.max_iters - 6]; delete [] e; e = temp; max_iters = I.max_iters; } for (i = 0; i < max_iters; i++) c[i] = I.c[i]; for (i = 0; i < max_iters - 7; i++) e[i] = I.e[i]; } // MODIFICATION MEMBER FUNCTIONS // The calls to the procedure set_initial_values() in these modification // functions may appear to be redundant since this initializing procedure is // called again when the new integral thus created is evaluated. However, // the values of the cubature, the error estimate and the number of function // values have been re-initialized as soon as any aspect of the integral is // changed so that any possible misinterpretation or misuse of the residual // values of these variables is avoided. //**************************************************************************** void DoubleIntegral::set_outer_interval(double A, double B) { a = A; b = B; xdir = set_interval_type(infinite(a), infinite(b)); x_transform = set_transform_type(xdir); set_initial_values(); } //**************************************************************************** void DoubleIntegral::set_inner_interval(BOUNDARY_FUNCTION G, BOUNDARY_FUNCTION H) { g = G; h = H; ydir = set_interval_type(infinite((*g)(a)), infinite((*h)(a))); y_transform = set_transform_type(ydir); set_initial_values(); } //**************************************************************************** void DoubleIntegral::set_integrand(INTEGRAND_FUNCTION F) { f = F; set_initial_values(); } //**************************************************************************** void DoubleIntegral::set_rel_tol(double req_rel_acc) { rel_tol = req_rel_acc; set_initial_values(); } //**************************************************************************** void DoubleIntegral::set_abs_tol(double req_abs_acc) { abs_tol = req_abs_acc; set_initial_values(); } //**************************************************************************** void DoubleIntegral::set_max_evals(unsigned max_evals) { max_points = max_evals; set_initial_values(); } //**************************************************************************** void DoubleIntegral::set_new_integral(double A, double B, BOUNDARY_FUNCTION G, BOUNDARY_FUNCTION H, INTEGRAND_FUNCTION F) // Note: rel_tol, abs_tol and max_points remain unchanged. { a = A; b = B; g = G; h = H; f = F; set_region_type(); set_initial_values(); } // ACCESS FUNCTIONS //**************************************************************************** void DoubleIntegral::get_outer_interval(double& A, double& B) const { A = a; B = b; } //**************************************************************************** void DoubleIntegral::get_inner_interval(BOUNDARY_FUNCTION& G, BOUNDARY_FUNCTION& H) const { G = g; H = h; } //**************************************************************************** void DoubleIntegral::get_integrand(INTEGRAND_FUNCTION& F) const { F = f; } //**************************************************************************** double DoubleIntegral::get_rel_tol() const { return rel_tol; } //**************************************************************************** double DoubleIntegral::get_abs_tol() const { return abs_tol; } //**************************************************************************** unsigned DoubleIntegral::get_max_evals() const { return max_points; } //**************************************************************************** double DoubleIntegral::value() const { return cubature; } //**************************************************************************** double DoubleIntegral::rel_err_est() const { return err_est; } //**************************************************************************** double DoubleIntegral::abs_err_est() const { if (err_est == -1.0) return -1.0; return cubature == 0.0 ? err_est : err_est*fabs(cubature); } //**************************************************************************** int DoubleIntegral::evals() const { return fun_vals; } //**************************************************************************** int DoubleIntegral::error_flag() const { return ifail; } // INTEGRAL EVALUATION FUNCTIONS //**************************************************************************** double DoubleIntegral::evaluate() { integrate(); return cubature; } //**************************************************************************** double DoubleIntegral::evaluate(double req_rel_acc) { rel_tol = req_rel_acc; integrate(); return cubature; } //**************************************************************************** double DoubleIntegral::evaluate(double& rel_err_est, int& flag, int& evals) { integrate(); rel_err_est = err_est; flag = ifail; evals = fun_vals; return cubature; } //**************************************************************************** double DoubleIntegral::evaluate(double A, double B, BOUNDARY_FUNCTION G, BOUNDARY_FUNCTION H, INTEGRAND_FUNCTION F, double& rel_err_est, int& flag, double req_rel_acc, double req_abs_acc, unsigned max_evals) // The prototype for this function provides default values for the last three // parameters, req_rel_acc, req_abs_acc and max_evals. { a = A; b = B; g = G; h = H; f = F; rel_tol = req_rel_acc; abs_tol = req_abs_acc; max_points = max_evals; set_region_type(); integrate(); flag = ifail; rel_err_est = err_est; return cubature; } // PRIVATE MEMBER FUNCTIONS //**************************************************************************** void DoubleIntegral::set_region_type() // Characterizes the integration region as the product of two one-dimensional // intervals, each of which may be finite, semi-infinite or infinite, and sets // the appropriate transformation flags. { BOOL a_infinite = infinite(a); BOOL b_infinite = infinite(b); double r; // A "random" value if (a_infinite) if (b_infinite) r = 2.149783; // Must be (-INFINITY, INFINITY) else r = b + 6.451372; // Must be [b, INFINITY) else if (b_infinite) r = a - 6.451372; // Must be (-INFINITY, a] else r = (a + b)/2.130684; // Must be [a, b] xdir = set_interval_type(a_infinite, b_infinite); ydir = set_interval_type(infinite((*g)(r)), infinite((*h)(r))); x_transform = set_transform_type(xdir); y_transform = set_transform_type(ydir); } //**************************************************************************** INTERVAL DoubleIntegral::set_interval_type(BOOL lower_inf, BOOL upper_inf) const // Returns a description of a one-dimensional integration interval: // FINITE, UPPER_INFINITE ([a,infinity)), LOWER_INFINITE ((-infinity,b]) // or INFINITE((-infinity,infinity)). { if (lower_inf) if (upper_inf) return INFINITE; else return LOWER_INFINITE; else if (upper_inf) return UPPER_INFINITE; else return FINITE; } //**************************************************************************** TRANSFORM DoubleIntegral::set_transform_type(INTERVAL direction) const // Returns a value corresponding to the type of transformation to be applied // before attempting to evaluate the integral. { if (direction == NOT_CHECKED || direction == FINITE) return NONE; else return RATIONAL; } //**************************************************************************** void DoubleIntegral::set_initial_values() // Initializes cubature, err_est, fun_vals and ifail. { cubature = 0.0; err_est = -1.0; fun_vals = 0; ifail = -1; } //**************************************************************************** void DoubleIntegral::integrate() // Calls the core integration routine to evaluate cubature, err_est, ifail and // fun_vals. // If the integration region is the plane, a radial transformation is first // applied (subject to there being a likelihood of success with this trans- // formation). If a satisfactory result is not achieved, then the integral // is recomputed using a rational transformation in each direction. If a // satisfactory result is still not achieved, then a logarithm transformation // is applied in each direction. The best of the results obtained using one, // two or three of these transformations is accepted. // If the integration region is semi-infinite, a rational transformation is // first applied in the infinite direction(s). If a satisfactory result is not // achieved, then the integral is recomputed using a logarithm transformation in // the infinite direction(s), with the better of the two results being accepted. { int fun_vals1 = 0; double cubature1, err_est1 = HUGE_VAL; BOOL repeat; // First, check that the integration region has been characterized if (xdir == NOT_CHECKED || ydir == NOT_CHECKED) { cerr << "Integration region not fully specified. Integration aborted." << endl; exit(1); } radial_transform = FALSE; // If the integration region is the plane, ... if (xdir == INFINITE && ydir == INFINITE) { // ... compute the optimal radius value for the radial transform r = optimal_radius(*f); if (r <= 0.0 || r > 6.3) { // If the radial transform is unlikely to produce a good // result, then try the rational transform instead fun_vals1 = 36; } else { // Try the radial transform radial_transform = TRUE; twoPIr2 = TWO_PI*r*r; core(); fun_vals = 2*fun_vals + 36; if (ifail != 0) { //If it doesn't work, save values and try the rational transform fun_vals1 = fun_vals; cubature1 = cubature; err_est1 = err_est; radial_transform = FALSE; } } // If the radial transform was skipped or didn't work, ... if (!radial_transform) { // ... apply the rational transform core(); fun_vals += fun_vals1; if (ifail != 0) { // If it doesn't work, save values and try the logarithm transform if (err_est < err_est1) { cubature1 = cubature; err_est1 = err_est; } fun_vals1 = fun_vals; x_transform = LOGARITHM; y_transform = LOGARITHM; // Logarithm transform for integration over the plane core(); fun_vals += fun_vals1; if (ifail != 0) { // If it doesn't work, return the best result if (err_est > err_est1) { cubature = cubature1; err_est = err_est1; } } // Reset transform variables x_transform = RATIONAL; y_transform = RATIONAL; } } } else { // Straightforward evaluation for finite or semi-infinite region core(); // If not successful ... if (ifail != 0) { // ... check if region is semi-infinite, ... repeat = FALSE; if (x_transform == RATIONAL) { x_transform = LOGARITHM; repeat = TRUE; } if (y_transform == RATIONAL) { y_transform = LOGARITHM; repeat = TRUE; } // ... and, if so, save values and try the logarithm transform if (repeat) { cubature1 = cubature; err_est1 = err_est; fun_vals1 = fun_vals; core(); fun_vals += fun_vals1; // If it doesn't work, return the best result if (ifail != 0) { if (err_est > err_est1) { cubature = cubature1; err_est = err_est1; } } // Reset transform variables if (x_transform == LOGARITHM) x_transform = RATIONAL; if (y_transform == LOGARITHM) y_transform = RATIONAL; } } } } //**************************************************************************** double DoubleIntegral::optimal_radius(INTEGRAND_FUNCTION f) // Returns an appropriate value for the radius of the circle into which to map // the plane when using the radial transformation. If no appropriate value // can be determined, the value -1 is returned. // // The methodology is as implemented in the code associated with Cubpack++ // (R. Cools, D. Laurie and L. Pluym, "Algorithm 764: Cubpack++: A C++ Package // for Automatic Two-Dimensional Cubature", ACM Trans on Math Soft, Vol 23, // No. 1, March, 1997, pp. 1-15). { int i,k, // Loop and array indices index_start = 0; // Loop index double Ia, // Used to hold successive annulus cubatures Iabs[7], // For the absolute values of the annulus cubatures Iabs_sum = 0.0, // Sum of the absolute cubatures for the annuli Iabs_sum2, // Iabs_sum/2 Iabs_temp = 0.0, // Partial sums of Iabs[k] r; // Used in computation of the final optimal value // Calculating Iabs[k] for (k = 0; k < 7; k++) { Ia = 0.0; for (i = index_start; i < index_end[k]; i++) { Ia += (*f)(x_coord[i],y_coord[i]); }; Ia *= mod_CH_weight[k]; Iabs[k] = fabs(Ia); Iabs_sum += Iabs[k]; index_start = index_end[k]; }; Iabs_sum2 = Iabs_sum/2.0; // Finding r: the first step k = -1; while (Iabs_temp <= Iabs_sum2) { k++; r = radius[k]; Iabs_temp += Iabs[k]; }; // The second step: finding the bit "left over" r = p[k] + (Iabs_temp - Iabs_sum2)/Iabs[k]*q[k]; if (r > 0.0 && r < PI) { return sqrt(log(PI/r)); } else { return -1.0; }; } //**************************************************************************** void DoubleIntegral::core() // Evaluates cubature, err_est, ifail and fun_vals. { double l2, l4, s1, s2; BOOL convergence = FALSE, limit_reached = FALSE, roundoff = FALSE; int j = 1, // Index for the cubature array c n = 2, // Level of the displacement lattice m = SEED, // Number of points in the current cubature two_m = 2*m, four_m = 4*m; // Compute initial cubature using the seed lattice set_initial_values(); l4 = displaced_fibonacci(2,0,0); c[1] = l4/m; // Generate successive lattice rule approximations until convergence // is achieved or an abnormal condition is detected LATTICE lattice = L3; while (!convergence && !limit_reached && !roundoff) { switch (lattice) { case L3: // Generate L^3(2m) displaced lattice approximation s2 = generate_set(3,n); l2 = l4 + s2; c[++j] = l2/two_m; if (j > 2) set_termination_flags(j,limit_reached,convergence,roundoff); lattice = L1; break; case L1: // Generate L^1(2m) displaced lattice approximation s1 = generate_set(1,n); l2 = l4 + s1; c[++j] = l2/two_m; set_termination_flags(j,limit_reached,convergence,roundoff); lattice = L2; break; case L2: // Generate L^2(2m) and L(4m) approximations l2 = l4 + generate_set(2,n); c[++j] = l2/two_m; l4 = l2 + s1 + s2; c[++j] = l4/four_m; set_termination_flags(j,limit_reached,convergence,roundoff); lattice = L3; // Update m and n m = four_m; two_m = 2*m; four_m = 4*m; n = 2*n; } } // Set cubature, err_est, ifail and fun_vals if ((j == 3) && approx_178) cubature = c[2]; else cubature = c[j]; err_est = max(SAFETY,err_est); if (convergence) ifail = 0; else if (roundoff) ifail = 1; else if (limit_reached) ifail = 2; switch (lattice) { case L1: fun_vals += two_m; break; case L2: fun_vals += 3*m; break; case L3: fun_vals += m; } } //*************************************************************************** double DoubleIntegral::generate_set(int set, int n) // Allows generation of the x and y coordinates and corresponding weights for // the displacement lattices. n refers to the level of the Fibonacci lattice // displacement process; set specifies which of the three displacement lattices // L^1(2n), L^2(2n) or L^3(2n) is to be generated. { int p1, q1; double sum = 0.0; double s, t, u = 0.0; // Used in the compensated Kahan summation switch (set) { case 1: p1 = 0; // L^1(2n): Even, Odd q1 = 1; break; case 2: p1 = 1; // L^2(2n): Odd, Even q1 = 0; break; case 3: p1 = 1; // L^3(2n): Odd, Odd q1 = 1; } for (int p = p1; p < n; p = p + 2) for (int q = q1; q < n; q = q + 2) { // Compensated Kahan summation s = displaced_fibonacci(n,p,q) - u; t = sum + s; u = (t - sum) - s; sum = t; } return sum; } //**************************************************************************** double DoubleIntegral::displaced_fibonacci(int n, int p, int q) // Returns the weighted sum of function values to be used in the displaced // Fibonacci rule. Only simple integer arithmetic is necessary to generate // the references in the static arrays coordinate[] and weight[]. (Subsequent // division by the number of points in the lattice yields the cubature // approximation.) { int denom = n*SEED, nprev = n*PREV_FIB_NUMBER, xnum = p*SEED - n, ynum = q*SEED - nprev; int x_index, y_index; // Indices of coordinate[] and weight[] double x, y, w, w1, w2; // Values of coordinates and weights double sum = 0.0; // Weighted sum of function values returned int MULT = POINTS/denom; // Used in the calculation of x_index & y_index double rcx, rsx; // Used when for the radial transformation double s, t, u = 0.0; // Used in the compensated Kahan summations // Generate the displaced Fibonacci sum for (int counter = 0; counter < SEED; counter++) { // x and y are generated as for a rank 1 lattice rule xnum += n; x_index = (xnum % denom)*MULT; ynum += nprev; y_index = (ynum % denom)*MULT; w = weight[x_index] * weight[y_index]; // Apply transformations if (w != 0) { y = coordinate[y_index]; if (radial_transform) { if (y != 0.0) { rcx = r*cos2pix[x_index]; rsx = r*sin2pix[x_index]; // Compensated Kahan summation s = twoPIr2*w*(y*(*f)(y*rcx,y*rsx) + (*f)(rcx/y,rsx/y)/(y*y*y)) - u; t = sum + s; u = (t - sum) - s; sum = t; } else fun_vals--; } else { x = coordinate[x_index]; map_to_ab(x,w1); if (w1 != 0) { map_to_gh(x,y,w2); if (w2 != 0) { // Compensated Kahan summation s = w*w1*w2*(*f)(x,y) - u; t = sum + s; u = (t - sum) - s; sum = t; } else fun_vals--; } else fun_vals--; } } else fun_vals--; } return sum; } //**************************************************************************** void DoubleIntegral::map_to_ab(double& x, double& w) const // Transformation to [a,b] in the x direction. // Precondition: x in [0,1]. Post-condition: x in [a,b]. { double z, z1, z2; // Temporary variables switch (xdir) { case FINITE: w = b - a; x = a + w*x; break; case UPPER_INFINITE: if (x <= 0.0) w = 0.0; else { if (x_transform == RATIONAL) { z = 1.0/x; w = z/x; x = a + z - 1.0; } else // x_transform == LOGARITHM { if (x >= 1.0) w = 0.0; else { z = 1.0 - x; w = 1.0/z; x = a - log(z); } } } break; case LOWER_INFINITE: if (x <= 0.0) w = 0.0; else { if (x_transform == RATIONAL) { z = 1.0/x; w = z/x; x = b - z + 1.0; } else // x_transform == LOGARITHM { w = 1.0/x; x = b + log(x); } } break; case INFINITE: if (x <= 0.0 || x >= 1.0) w = 0.0; else { if (x_transform == RATIONAL) { z1 = 1.0/(1.0 - x); z2 = 1.0/x; w = z1*z1 + z2*z2; x = z1 - z2; } else // x_transform == LOGARITHM { z = 1.0/(1.0 - x); w = z/x; x = log(x*z); } } } } //**************************************************************************** void DoubleIntegral::map_to_gh(double x, double& y, double& w) const // Transformation to [g(x),h(x)] in the y direction. // Precondition: x in [a,b], y in [0,1]. // Post-condition: x in [a,b], y in [g(x),h(x)]. { double z, z1, z2; // Temporary variables switch (ydir) { case FINITE: z = (*g)(x); w = (*h)(x) - z; y = z + w*y; break; case UPPER_INFINITE: if (y <= 0.0) w = 0.0; else { if (y_transform == RATIONAL) { z = 1.0/y; w = z/y; y = (*g)(x) + z - 1.0; } else // y_transform == LOGARITHM { if (y >= 1.0) w = 0.0; else { z = 1.0 - y; w = 1.0/z; y = (*g)(x) - log(z); } } } break; case LOWER_INFINITE: if (y <= 0.0) w = 0.0; else { if (y_transform == RATIONAL) { z = 1.0/y; w = z/y; y = (*h)(x) - z + 1.0; } else // y_transform == LOGARITHM { w = 1.0/y; y = (*h)(x) + log(y); } } break; case INFINITE: if (y <= 0.0 || y >= 1.0) w = 0.0; else { if (y_transform == RATIONAL) { z1 = 1.0/(1.0 - y); z2 = 1.0/y; w = z1*z1 + z2*z2; y = z1 - z2; } else // y_transform == LOGARITHM { z = 1.0/(1.0 - y); w = z/y; y = log(y*z); } } } } //**************************************************************************** void DoubleIntegral::set_termination_flags(int j, BOOL& limit, BOOL& cnvrgnce, BOOL& round) // Sets err_est to the error estimate for the current approximation and // returns values for limit, cnvrgnce and round according to, respectively, // whether the maximum number of points has been reached, the current // approximation satisfies the accuracy requirement or rounding error has // been detected in the current approximation. { err_est = error_estimate(j); limit = j == max_iters; cnvrgnce = err_est <= max(rel_tol, abs_tol*fabs(c[j])); if (j > 12) round = diff(j-4,j-8) < 20.0*diff(j,j-4); } //**************************************************************************** double DoubleIntegral::error_estimate(int j) // Returns an estimate of the error in c[j] (the current approximation). { double d1,d2; switch(j) { case 3: // 267 points d1 = fabs(c[3] - c[1]); d2 = fabs(c[2] - c[1]); if (d1 > d2) { approx_178 = FALSE; return c[3]==0.0 ? 4.0*d1 : 4.0*d1/fabs(c[3]); } else { approx_178 = TRUE; return c[2]==0.0 ? 4.0*d2 : 4.0*d2/fabs(c[2]); } case 5: // 356 points e[1] = diff(5,1); conservative = (min_diff(5)!=0.0) && (e[1]/min_diff(5) < 60.0); if (conservative) e[4] = max(e[1],max_diff(5)); else e[4] = go_fer(e[1]); return e[4]; case 6: // 712 points e[2] = diff(6,2); if (conservative || (e[4] > e[2]/10.0)) return max(e[2],diff(6,5)); else return go_fer(e[2]); case 7: // 1068 points e[3] = diff(7,3); if (conservative || (e[4] > e[3]/10.0)) return max(e[3],diff(7,5),diff(7,6)); else return go_fer(e[3]); case 9: // 1424 points e[4] = diff(9,5); if (((e[4] <= e[1]*e[1]) && (e[4] <= 0.5E-3)) || (e[4] <= 1E-9)) e[7] = pow(e[4],1.4); else e[7] = max(e[4], max_diff(9)); return e[7]; case 10: // 2848 points e[2] = diff(6,2); e[5] = diff(10,6); if ((((e[5] <= e[2]*e[2]) && (e[5] <= 0.5E-3)) || (e[5] <= 1E-9)) && (e[7] <= e[5]/10.0)) return max(pow(e[5],1.4), diff(10,9)); else return max(e[5], diff(10,9)); case 11: // 4272 points e[3] = diff(7,3); e[6] = diff(11,7); if ((((e[6] <= e[3]*e[3]) && (e[6] <= 0.5E-3)) || (e[6] <= 1E-9)) && (e[7] <= e[6]/10.0)) return max(pow(e[6],1.4), diff(11,9)); else return max(e[6], diff(11,9), diff(11,10)); case 13: // 5696 points e[7] = diff(13,9); if ((e[7] <= pow(e[4],1.5)) && (e[7] < 0.5E-6)) return pow(e[7],1.4); else return max(e[7], max_diff(13)); case 14: // 11392 points e[8] = diff(14,10); if ((e[8] <= pow(e[5],1.5)) && (e[8] < 0.5E-6)) return max(pow(e[8],1.4), diff(14,13)); else return 2.0*max(e[8], diff(14,13)); case 15: // 17088 points e[9] = diff(15,11); if ((e[9] <= pow(e[6],1.5)) && (e[9] < 0.5E-6)) return max(pow(e[9],1.4), diff(15,13)); else return max(e[9], diff(15,14), diff(15,13)); case 17: // 22784 points e[10] = diff(17,13); return max(e[10], max_diff(17)); default: return diff(j,j-4); } } //**************************************************************************** double DoubleIntegral::diff(int j1, int j2) const // Returns the relative difference between c[j1] and c[j2]. // Precondition: j1 > j2 > 0. { return c[j1]==0.0 ? fabs(c[j1] - c[j2]) : fabs((c[j1] - c[j2])/c[j1]); } //**************************************************************************** double DoubleIntegral::max_diff(int j) const // Returns the maximum relative difference between c[j] and c[j-k], k = 1,2,3. // Precondition: j > 3. { double curr_max = fabs(c[j] - c[j-1]); for (int k = j-2; k > j-4; k--) { double d = fabs(c[j] - c[k]); if (d > curr_max) curr_max = d; } return c[j]==0.0 ? curr_max : curr_max/fabs(c[j]); } //**************************************************************************** double DoubleIntegral::min_diff(int j) const // Returns the minimum relative difference between c[j] and c[j-k], k = 1,2,3. // Precondition: j > 3. { double curr_min = fabs(c[j] - c[j-1]); for (int k = j-2; k > j-4; k--) { double d = fabs(c[j] - c[k]); if (d < curr_min) curr_min = d; } return c[j]==0.0 ? curr_min : curr_min/fabs(c[j]); } //**************************************************************************** double DoubleIntegral::go_fer(double x) const // Let s be the maximum integer s.t. x <= 0.5*10^(-s). If x is interpreted as // the relative error in a number, then that number is correct to at least s // significant figures. go_fer returns x^1.4 if s > 3 and x^1.8, otherwise. // Precondition: 0 < x < 1. { if (x == 0.0) return 0.0; else { int s = (int)(NEG_LOG2 - log10(x)); if (s > 3) return pow(x,1.4); else return pow(x,1.8); } } // FRIEND FUNCTIONS //**************************************************************************** BOOL infinite(double x) // Returns TRUE if x is +infinity or -infinity, and FALSE otherwise. { return (fabs(x) >= INFINITY); } //**************************************************************************** double max(double x, double y) // Returns maximum of x and y. { return x > y ? x : y; } //**************************************************************************** double max(double x, double y, double z) // Returns maximum of x, y and z. { if (x > y) return x > z ? x : z; else return y > z ? y : z; } //**************************************************************************** double max(int x, int y) // Returns maximum of x and y. { return x > y ? x : y; } //**************************************************************************** unsigned min(unsigned x, unsigned y) // Returns minimum of x and y. { return x < y ? x : y; } SHAR_EOF fi # end of overwriting check if test -f 'r2d2lri.h' then echo shar: will not over-write existing file "'r2d2lri.h'" else cat << "SHAR_EOF" > 'r2d2lri.h' //****************************************************************************** // r2d2lri.h // Header file for the DoubleIntegral class. // Corresponding implementation file: r2d2lri.cpp. // // Written by Ian Robinson and Michael Hill. // Last updated: 23 April 2001 // //****************************************************************************** // // CLASS PROVIDED: // DoubleIntegral - a class for two-dimensional repeated integrals of // the form // // b h(x) // I I f(x,y) dy dx, // a g(x) // // including an evaluation algorithm referred to as r2d2lri. // // The public functions and member constants are described below. Refer to // the files README.txt and r2d2lri_sample.cpp for comments on, and examples // of, the use of the DoubleIntegral class. // // TYPE DEFINITIONS: // BOUNDARY_FUNCTION = double (*)(double) // INTEGRAND_FUNCTION = double (*)(double,double) // // CONSTRUCTORS: // DoubleIntegral(double req_rel_acc = DEFAULT_REL_TOL, // double req_abs_acc = DEFAULT_ABS_TOL, // unsigned max_evals = DEFAULT_MAX_POINTS) // Sets the relative and absolute accuracies to which the value of the // DoubleIntegral is to be determined to req_rel_acc and req_abs_acc, // respectively. The maximum number of function evaluations to be allowed // in the calculation of the DoubleIntegral is set to max_evals. // Sufficient space is allocated for the algorithm's generation of cubature // approximations and error estimates. Private member values associated // with the algorithm are initialized. // // DoubleIntegral(double a, double b, BOUNDARY_FUNCTION g, // BOUNDARY_FUNCTION h, INTEGRAND_FUNCTION f, // double req_rel_acc = DEFAULT_REL_TOL, // double req_abs_acc = DEFAULT_ABS_TOL, // unsigned max_evals = DEFAULT_MAX_POINTS) // Sets the outer and inner limits of integration to [a,b] and [g(x),h(x)], // respectively, and the integrand function to f(x,y). The relative and // absolute accuracies to which the value of the integral is to be // determined are set to req_rel_acc and req_abs_acc, respectively. The // maximum number of function evaluations to be allowed in the calculation // of the DoubleIntegral is set to max_evals. Sufficient space is // allocated for the algorithm's generation of cubature approximations and // error estimates. Private member values associated with the algorithm // are initialized. // // COPY CONSTRUCTOR: // DoubleIntegral(const DoubleIntegral& I) // Sets the limits of integration, integrand function, requested tolerances // and limit on the number of function evaluations allowed in r2d2lri to // the corresponding values for I. All other private member values are set // to the corresponding member values of I. // // DESTRUCTOR: // ~DoubleIntegral() // Returns space used for the cubature approximations and error estimates // to the heap. // // ASSIGNMENT OPERATOR: // void operator =(const DoubleIntegral& I) // Sets all of the private member values to the corresponding values for I. // // MODIFICATION MEMBER FUNCTIONS: // void set_outer_interval(double a, double b) // Sets the outer interval of integration to [a,b] and re-initializes // private data members associated with the algorithm. // // void set_inner_interval(BOUNDARY_FUNCTION g, BOUNDARY_FUNCTION h) // Sets the inner interval of integration to [g(x),h(x)] and re-initializes // private data members associated with the algorithm. // // void set_integrand(INTEGRAND_FUNCTION f) // Sets the integrand function to f(x,y) and re-intializes private data // members associated with the algorithm. // // void set_rel_tol(double req_rel_acc) // Sets the requested relative error to req_rel_acc and re-intializes // private data members associated with the algorithm. // // void set_abs_tol(double req_abs_acc) // Sets the requested absolute error to req_abs_acc and re-intializes // private data members associated with the algorithm. // // void set_max_evals(unsigned max_evals) // Sets the maximum number of function evaluations to be permitted before // the r2d2lri algorithm is terminated to max_evals and re-intializes // private data members associated with the algorithm. // // void set_new_integral(double a, double b, BOUNDARY_FUNCTION g, // BOUNDARY_FUNCTION h, INTEGRAND_FUNCTION f) // Sets the outer and inner limits of integration to [a,b] and [g(x),h(x)], // respectively, and the integrand function to f(x,y). Data members used // in the evaluation of the DoubleIntegral are re-initialized. All other // private member variables (including rel_tol, abs_tol and max_points) // remain unchanged. // // ACCESS FUNCTIONS: // void get_outer_interval(double& a, double& b) const // Returns the outer interval of integration [a,b]. // // void get_inner_interval(BOUNDARY_FUNCTION& g, BOUNDARY_FUNCTION& h) // Returns the inner interval of integration. // // void get_integrand(INTEGRAND_FUNCTION& f) // Returns the integrand function. // // double get_rel_tol() const // Returns the requested relative error. // // double get_abs_tol() const // Returns the requested absolute error. // // unsigned get_max_evals() const // Returns the maximum number of function values permitted in the r2d2lri // algorithm. // // double value() const // Returns the estimate of the DoubleIntegral computed using the r2d2lri // algorithm. // // double rel_err_est() const // Returns r2d2lri's estimate of the relative error in its approximation // to the DoubleIntegral. It is assumed that the DoubleIntegral has been // already approximated using one of the evaluation functions. If this is // not the case, then the value -1 is returned. // // double abs_err_est() const // Returns r2d2lri's estimate of the absolute error in its approximation // to the DoubleIntegral. It is assumed that the DoubleIntegral has been // already approximated using one of the evaluation functions. If this is // not the case, then the value -1 is returned. // // int evals() const // Returns the number of function evaluations used by the r2d2lri algorithm // in approximating the DoubleIntegral. // // int error_flag() const // Returns the value of the code which indicates the reason for terminating // the r2d2lri algorithm. (-1 => DoubleIntegral not yet evaluated; 0 => // normal convergence; >0 => abnormal termination) // // INTEGRAL EVALUATION FUNCTIONS: // double evaluate() // Returns the value of the approximation to the DoubleIntegral computed // by the r2d2lri algorithm. It is assumed that a, b, g(x), h(x), f(x,y), // the requested relative and absolute accuracies and maximum number of // function values have all been set. // // double evaluate(double req_rel_acc) // Sets the relative accuracy to which the value of the integral is to be // determined to req_rel_acc and returns the approximation which is then // computed by the r2d2lri algorithm. It is assumed that a, b, g(x), h(x), // f(x,y), the requested absolute accuracy and the maximum number of // function values have all been set. // // double evaluate(double& rel_err_est, int& flag, int& evals) // Returns the value of the approximation to the DoubleIntegral computed // by the r2d2lri algorithm, as well as rel_err_est, an estimate of the // relative error in the approximation, flag, an indication of the success // (or otherwise) of the algorithm, and evals, the number of function // values used by r2d2lri in approximating the DoubleIntegral. // // double evaluate(double a, double b, BOUNDARY_FUNCTION g, // BOUNDARY_FUNCTION h, INTEGRAND_FUNCTION f, // double& rel_err_est, int& flag, // double req_rel_acc = DEFAULT_REL_TOL, // double req_abs_acc = DEFAULT_ABS_TOL, // unsigned max_evals = DEFAULT_MAX_POINTS) // Sets the outer and inner limits of integration to [a,b] and [g(x),h(x)], // respectively, and the integrand function to f(x,y). The relative and // absolute accuracies to which the value of the integral is to be // determined are set to req_rel_acc and req_abs_acc, respectively. The // maximum number of function values to be used by the algorithm is set to // max_evals. // Returns the value of the approximation to the DoubleIntegral computed // by the r2d2lri algorithm, as well as rel_err_est, an estimate of the // relative error in the approximation, and flag, an indication of the // success (or otherwise) of the algorithm. // // MEMBER CONSTANTS: // static const unsigned SEED = 89 // SEED is the value of the Fibonacci number upon which the initial // lattice used by r2d2lri is based. // // static const unsigned PREV_FIB_NUMBER = 55 // PREV_FIB_NUMBER is the number which precedes SEED in the Fibonacci // sequence. // // static const unsigned DEFAULT_MAX_POINTS = 22784 // Default maximum number of function evaluations to be used in the // r2d2lri algorithm. // // static const unsigned DEFAULT_C_SIZE = 18 // Default size of the array of cubature approximations used by r2d2lri. // // static const unsigned POINTS = 16*SEED // Maximum number of distinct coordinate values used in the displaced // lattices. // // static const double DEFAULT_REL_TOL = 0.0 // Default value for requested relative accuracy in the computed value // of the DoubleIntegral. // // static const double DEFAULT_ABS_TOL = 0.0 // Default value for requested absolute accuracy in the computed value // of the DoubleIntegral. // // static const double SAFETY = 5.0E-15 // Minimum reported error estimate. // // static const double NEG_LOG2 = -0.301 // Used in the go_fer function (= -log10(2.0)) // //***************************************************************************** // Inclusion of relevant C++ libraries. #include #include #include // Definition of infinity. #define INFINITY HUGE_VAL //Definition of PI. #define PI (double) 4.0*atan(1.0) // Boolean type. typedef int BOOL; #define FALSE 0 #define TRUE 1 // Function types. typedef double (*BOUNDARY_FUNCTION)(double); typedef double (*INTEGRAND_FUNCTION)(double,double); // INTERVAL type. enum INTERVAL { NOT_CHECKED = 0, // Interval not yet characterized. FINITE, // Interval (apparently) finite. LOWER_INFINITE, // Lower limit = -INFINITY, upper limit (apparently) finite. UPPER_INFINITE, // Lower limit (apparently) finite, upper limit = INFINITY. INFINITE // Interval = (-INFINITY, INFINITY). }; // TRANSFORM type. enum TRANSFORM { NONE = 0, RATIONAL, LOGARITHM }; // LATTICE type. enum LATTICE { L0 = 0, // Unused. L1, // L^1(2m) lattice. L2, // L^2(2m) lattice. L3 // L^3(2m) lattice. }; // Default constant values. static const unsigned SEED = 89; static const unsigned PREV_FIB_NUMBER = 55; static const unsigned DEFAULT_MAX_POINTS = 22784; static const unsigned DEFAULT_C_SIZE = 18; static const unsigned POINTS = SEED*16; static const double DEFAULT_ABS_TOL = 0.0; static const double DEFAULT_REL_TOL = 0.0; static const double SAFETY = 5.0E-15; static const double TWO_PI = 2.0*PI; // Constant used in go_fer function. static const double NEG_LOG2 = -0.301; // Ordinates for the cubature rules. static const double coordinate[POINTS] = { 0.00000000000000000e+00, 3.70151578107566934e-20, 4.73788639216271102e-18, 8.09496985454854105e-17, 6.06421909466337077e-16, 2.89154648172758489e-15, 1.03605023972780750e-14, 3.04780354616430713e-14, 7.76079010343289555e-14, 1.76988743312562960e-13, 3.70012880098337741e-13, 7.20993106656226523e-13, 1.32560222639423328e-12, 2.32116955975502917e-12, 3.89901817598361031e-12, 6.31902603544330797e-12, 9.92659362299909352e-12, 1.51721999957994146e-11, 2.26337284616997867e-11, 3.30417423477276766e-11, 4.73078905115436644e-11, 6.65566213929734478e-11, 9.21603834975440627e-11, 1.25778489249740945e-10, 1.69399818150605438e-10, 2.25389534122520332e-10, 2.96539990823799339e-10, 3.86125997567230251e-10, 4.97964617280256072e-10, 6.36479666700258677e-10, 8.06771087706690326e-10, 1.01468935735284428e-09, 1.26691510277414111e-09, 1.57104408571721602e-09, 1.93567771995511848e-09, 2.37051928332888120e-09, 2.88647598458489463e-09, 3.49576704356125671e-09, 4.21203794161488820e-09, 5.05048099747505127e-09, 6.02796242195833420e-09, 7.16315600318552654e-09, 8.47668357210247598e-09, 9.99126239622536727e-09, 1.17318596476062820e-08, 1.37258540890477801e-08, 1.60032051205859970e-08, 1.85966293262107791e-08, 2.15417846586991225e-08, 2.48774623983050423e-08, 2.86457870188754490e-08, 3.28924240927480627e-08, 3.76667963635343393e-08, 4.30223081135982548e-08, 4.90165779507110815e-08, 5.57116801359934699e-08, 6.31743945728497077e-08, 7.14764655741554611e-08, 8.06948695224801182e-08, 9.09120915356085607e-08, 1.02216411247075304e-07, 1.14702197808837003e-07, 1.28470214220587848e-07, 1.43627931087566905e-07, 1.60289849906017584e-07, 1.78577835972737599e-07, 1.98621461012403735e-07, 2.20558355613569855e-07, 2.44534571561419586e-07, 2.70704954152507506e-07, 2.99233524573845080e-07, 3.30293872425780555e-07, 3.64069558465186250e-07, 4.00754527642502705e-07, 4.40553532503197538e-07, 4.83682567021178431e-07, 5.30369310928654745e-07, 5.80853584603871816e-07, 6.35387814575046350e-07, 6.94237509695711398e-07, 7.57681748043535608e-07, 8.26013674591514668e-07, 8.99541009697243496e-07, 9.78586568452766761e-07, 1.06348879093427308e-06, 1.15460228338764572e-06, 1.25229837038261015e-06, 1.35696565796492769e-06, 1.46901060783277425e-06, 1.58885812256011615e-06, 1.71695214188655034e-06, 1.85375625008971554e-06, 1.99975429445300472e-06, 2.15545101483791794e-06, 2.32137268436698954e-06, 2.49806776121980441e-06, 2.68610755154118717e-06, 2.88608688345720417e-06, 3.09862479219116361e-06, 3.32436521626833383e-06, 3.56397770479462469e-06, 3.81815813579099267e-06, 4.08762944556183811e-06, 4.37314236907216246e-06, 4.67547619130474694e-06, 4.99543950956510049e-06, 5.33387100669840688e-06, 5.69164023517917735e-06, 6.06964841203078870e-06, 6.46882922452855641e-06, 6.89014964663646000e-06, 7.33461076612410408e-06, 7.80324862230696338e-06, 8.29713505434942533e-06, 8.81737856006660944e-06, 9.36512516515740974e-06, 9.94155930279767605e-06, 1.05479047035189219e-05, 1.11854252952944232e-05, 1.18554261137510514e-05, 1.25592542224216718e-05, 1.32982996429494278e-05, 1.40739962951517314e-05, 1.48878229468482852e-05, 1.57413041733539759e-05, 1.66360113265340013e-05, 1.75735635133151280e-05, 1.85556285835435169e-05, 1.95839241270761109e-05, 2.06602184799891451e-05, 2.17863317397839193e-05, 2.29641367894665639e-05, 2.41955603303751415e-05, 2.54825839236240433e-05, 2.68272450400322828e-05, 2.82316381183989398e-05, 2.96979156319856818e-05, 3.12282891630629775e-05, 3.28250304853733292e-05, 3.44904726543615734e-05, 3.62270111050190530e-05, 3.80371047571852285e-05, 3.99232771281470884e-05, 4.18881174523735334e-05, 4.39342818082187410e-05, 4.60644942514253813e-05, 4.82815479552554359e-05, 5.05883063570732830e-05, 5.29877043112026462e-05, 5.54827492478759676e-05, 5.80765223380917530e-05, 6.07721796641924570e-05, 6.35729533959725192e-05, 6.64821529721232390e-05, 6.95031662868182815e-05, 7.26394608812407436e-05, 7.58945851398498752e-05, 7.92721694911827500e-05, 8.27759276129834139e-05, 8.64096576414493020e-05, 9.01772433843820158e-05, 9.40826555380268839e-05, 9.81299529073831028e-05, 1.02323283629763653e-04, 1.06666886401381632e-04, 1.11165091706737123e-04, 1.15822323050576229e-04, 1.20643098192191469e-04, 1.25632030381830308e-04, 1.30793829598976237e-04, 1.36133303792264504e-04, 1.41655360120792270e-04, 1.47365006196580764e-04, 1.53267351327944791e-04, 1.59367607763522758e-04, 1.65671091936718320e-04, 1.72183225710302613e-04, 1.78909537620924064e-04, 1.85855664123270733e-04, 1.93027350833628234e-04, 2.00430453772574378e-04, 2.08070940606549813e-04, 2.15954891888042157e-04, 2.24088502294119348e-04, 2.32478081863046224e-04, 2.41130057228716700e-04, 2.50050972852632266e-04, 2.59247492253156010e-04, 2.68726399231769800e-04, 2.78494599096060843e-04, 2.88559119879162389e-04, 2.98927113555372002e-04, 3.09605857251669498e-04, 3.20602754454855385e-04, 3.31925336214029440e-04, 3.43581262338127874e-04, 3.55578322588236471e-04, 3.67924437864395983e-04, 3.80627661386615101e-04, 3.93696179869805359e-04, 4.07138314692351433e-04, 4.20962523058029456e-04, 4.35177399150985206e-04, 4.49791675283483257e-04, 4.64814223036137541e-04, 4.80254054390333129e-04, 4.96120322852548495e-04, 5.12422324570286982e-04, 5.29169499439325787e-04, 5.46371432201990337e-04, 5.64037853536161621e-04, 5.82178641134723760e-04, 6.00803820775158834e-04, 6.19923567378995874e-04, 6.39548206060820769e-04, 6.59688213166553809e-04, 6.80354217300701574e-04, 7.01557000342289967e-04, 7.23307498449185269e-04, 7.45616803050510316e-04, 7.68496161826863103e-04, 7.91956979678045431e-04, 8.16010819678009562e-04, 8.40669404016731257e-04, 8.65944614928718057e-04, 8.91848495607862170e-04, 9.18393251108347948e-04, 9.45591249231324559e-04, 9.73455021397055187e-04, 1.00199726350225483e-03, 1.03123083676232965e-03, 1.06116876853823160e-03, 1.09182425314764315e-03, 1.12321065266020779e-03, 1.15534149767652317e-03, 1.18823048809061470e-03, 1.22189149383560885e-03, 1.25633855561232635e-03, 1.29158588560051701e-03, 1.32764786815245914e-03, 1.36453906046864787e-03, 1.40227419325529847e-03, 1.44086817136339174e-03, 1.48033607440899081e-03, 1.52069315737455968e-03, 1.56195485119101614e-03, 1.60413676330025285e-03, 1.64725467819786275e-03, 1.69132455795580655e-03, 1.73636254272476190e-03, 1.78238495121589614e-03, 1.82940828116180630e-03, 1.87744920975637223e-03, 1.92652459407327098e-03, 1.97665147146290256e-03, 2.02784705992747970e-03, 2.08012875847403649e-03, 2.13351414744511297e-03, 2.18802098882687564e-03, 2.24366722653443576e-03, 2.30047098667413037e-03, 2.35845057778253326e-03, 2.41762449104196590e-03, 2.47801140047228103e-03, 2.53963016309869436e-03, 2.60249981909544255e-03, 2.66663959190504883e-03, 2.73206888833298005e-03, 2.79880729861748242e-03, 2.86687459647438580e-03, 2.93629073911666980e-03, 3.00707586724858787e-03, 3.07925030503414880e-03, 3.15283456003975831e-03, 3.22784932315082657e-03, 3.30431546846215102e-03, 3.38225405314188691e-03, 3.46168631726892175e-03, 3.54263368364347307e-03, 3.62511775757073245e-03, 3.70916032661738247e-03, 3.79478336034081664e-03, 3.88200900999089617e-03, 3.97085960818408102e-03, 4.06135766854977650e-03, 4.15352588534874037e-03, 4.24738713306339935e-03, 4.34296446595992762e-03, 4.44028111762194397e-03, 4.53936050045568819e-03, 4.64022620516654112e-03, 4.74290200020675696e-03, 4.84741183119428050e-03, 4.95377982030252599e-03, 5.06203026562099845e-03, 5.17218764048664258e-03, 5.28427659278580845e-03, 5.39832194422672752e-03, 5.51434868958239693e-03, 5.63238199590377388e-03, 5.75244720170318701e-03, 5.87456981610787535e-03, 5.99877551798357023e-03, 6.12509015502804008e-03, 6.25353974283452212e-03, 6.38415046392496989e-03, 6.51694866675304996e-03, 6.65196086467682556e-03, 6.78921373490106981e-03, 6.92873411738915560e-03, 7.07054901374447394e-03, 7.21468558606133731e-03, 7.36117115574532911e-03, 7.51003320230306536e-03, 7.66129936210133901e-03, 7.81499742709562277e-03, 7.97115534352791039e-03, 8.12980121059388170e-03, 8.29096327907938139e-03, 8.45466994996620623e-03, 8.62094977300720069e-03, 8.78983144527066531e-03, 8.96134380965408770e-03, 9.13551585336721039e-03, 9.31237670638445519e-03, 9.49195563986672844e-03, 9.67428206455263647e-03, 9.85938552911914593e-03, 1.00472957185117282e-02, 1.02380424522440323e-02, 1.04316556826671363e-02, 1.06281654932084312e-02, 1.08276020965801968e-02, 1.10299958329579352e-02, 1.12353771681285305e-02, 1.14437766916083099e-02, 1.16552251147310870e-02, 1.18697532687062706e-02, 1.20873921026471305e-02, 1.23081726815693151e-02, 1.25321261843597210e-02, 1.27592839017158192e-02, 1.29896772340555507e-02, 1.32233376893979039e-02, 1.34602968812142975e-02, 1.37005865262508928e-02, 1.39442384423219669e-02, 1.41912845460744826e-02, 1.44417568507239970e-02, 1.46956874637620529e-02, 1.49531085846352071e-02, 1.52140525023958491e-02, 1.54785515933249730e-02, 1.57466383185270699e-02, 1.60183452214973096e-02, 1.62937049256611910e-02, 1.65727501318868409e-02, 1.68555136159701479e-02, 1.71420282260929243e-02, 1.74323268802542902e-02, 1.77264425636754837e-02, 1.80244083261783018e-02, 1.83262572795373841e-02, 1.86320225948065556e-02, 1.89417374996194499e-02, 1.92554352754646382e-02, 1.95731492549354955e-02, 1.98949128189550399e-02, 2.02207593939759851e-02, 2.05507224491562515e-02, 2.08848354935101867e-02, 2.12231320730357489e-02, 2.15656457678179144e-02, 2.19124101891085722e-02, 2.22634589763831749e-02, 2.26188257943744202e-02, 2.29785443300832403e-02, 2.33426482897673820e-02, 2.37111713959078656e-02, 2.40841473841536133e-02, 2.44616100002445446e-02, 2.48435929969134381e-02, 2.52301301307668662e-02, 2.56212551591455110e-02, 2.60170018369641766e-02, 2.64174039135318149e-02, 2.68224951293518875e-02, 2.72323092129033914e-02, 2.76468798774028783e-02, 2.80662408175478026e-02, 2.84904257062415388e-02, 2.89194681913004093e-02, 2.93534018921430711e-02, 2.97922603964626138e-02, 3.02360772568817211e-02, 3.06848859875912586e-02, 3.11387200609726480e-02, 3.15976129042043956e-02, 3.20615978958531465e-02, 3.25307083624496375e-02, 3.30049775750499268e-02, 3.34844387457822837e-02, 3.39691250243801212e-02, 3.44590694947013617e-02, 3.49543051712346280e-02, 3.54548649955926546e-02, 3.59607818329933182e-02, 3.64720884687286908e-02, 3.69888176046225197e-02, 3.75110018554765440e-02, 3.80386737455060595e-02, 3.85718657047651467e-02, 3.91106100655619800e-02, 3.96549390588646403e-02, 4.02048848106978532e-02, 4.07604793385310817e-02, 4.13217545476584014e-02, 4.18887422275705918e-02, 4.24614740483198794e-02, 4.30399815568777683e-02, 4.36242961734864014e-02, 4.42144491880038934e-02, 4.48104717562440821e-02, 4.54123948963111442e-02, 4.60202494849295286e-02, 4.66340662537696566e-02, 4.72538757857698455e-02, 4.78797085114549123e-02, 4.85115947052519155e-02, 4.91495644818034972e-02, 4.97936477922792864e-02, 5.04438744206858310e-02, 5.11002739801755226e-02, 5.17628759093549835e-02, 5.24317094685933864e-02, 5.31068037363311771e-02, 5.37881876053896748e-02, 5.44758897792820237e-02, 5.51699387685259723e-02, 5.58703628869589583e-02, 5.65771902480559768e-02, 5.72904487612507128e-02, 5.80101661282604184e-02, 5.87363698394150172e-02, 5.94690871699909182e-02, 6.02083451765500248e-02, 6.09541706932844226e-02, 6.17065903283672315e-02, 6.24656304603101097e-02, 6.32313172343278957e-02, 6.40036765587108763e-02, 6.47827341012051681e-02, 6.55685152854017022e-02, 6.63610452871343001e-02, 6.71603490308873295e-02, 6.79664511862134315e-02, 6.87793761641618055e-02, 6.95991481137175444e-02, 7.04257909182525078e-02, 7.12593281919882230e-02, 7.20997832764713036e-02, 7.29471792370618745e-02, 7.38015388594354909e-02, 7.46628846460990424e-02, 7.55312388129211268e-02, 7.64066232856773830e-02, 7.72890596966112699e-02, 7.81785693810107755e-02, 7.90751733738015438e-02, 7.99788924061569021e-02, 8.08897469021252732e-02, 8.18077569752754555e-02, 8.27329424253602508e-02, 8.36653227349989222e-02, 8.46049170663789600e-02, 8.55517442579776343e-02, 8.65058228213038094e-02, 8.74671709376604977e-02, 8.84358064549286238e-02, 8.94117468843724731e-02, 9.03950093974672943e-02, 9.13856108227495241e-02, 9.23835676426901022e-02, 9.33888959905913408e-02, 9.44016116475078111e-02, 9.54217300391917094e-02, 9.64492662330631607e-02, 9.74842349352059163e-02, 9.85266504873889012e-02, 9.95765268641140625e-02, 1.00633877669690969e-01, 1.01698716135338609e-01, 1.02771055116314834e-01, 1.03850907089073884e-01, 1.04938284148452445e-01, 1.06033198004884661e-01, 1.07135659981646548e-01, 1.08245681012130237e-01, 1.09363271637148468e-01, 1.10488442002269772e-01, 1.11621201855184748e-01, 1.12761560543103875e-01, 1.13909527010187251e-01, 1.15065109795006693e-01, 1.16228317028040586e-01, 1.17399156429201915e-01, 1.18577635305399847e-01, 1.19763760548135297e-01, 1.20957538631130845e-01, 1.22158975607995411e-01, 1.23368077109924078e-01, 1.24584848343433430e-01, 1.25809294088132801e-01, 1.27041418694531812e-01, 1.28281226081884550e-01, 1.29528719736070779e-01, 1.30783902707514533e-01, 1.32046777609140456e-01, 1.33317346614368245e-01, 1.34595611455145539e-01, 1.35881573420019617e-01, 1.37175233352248233e-01, 1.38476591647949929e-01, 1.39785648254294165e-01, 1.41102402667731592e-01, 1.42426853932264786e-01, 1.43759000637759771e-01, 1.45098840918298648e-01, 1.46446372450573622e-01, 1.47801592452322758e-01, 1.49164497680807742e-01, 1.50535084431333961e-01, 1.51913348535813175e-01, 1.53299285361369088e-01, 1.54692889808986069e-01, 1.56094156312201328e-01, 1.57503078835840791e-01, 1.58919650874798961e-01, 1.60343865452862998e-01, 1.61775715121581303e-01, 1.63215191959176820e-01, 1.64662287569505330e-01, 1.66116993081058954e-01, 1.67579299146015100e-01, 1.69049195939331091e-01, 1.70526673157884678e-01, 1.72011720019660668e-01, 1.73504325262983867e-01, 1.75004477145798542e-01, 1.76512163444994604e-01, 1.78027371455780700e-01, 1.79550087991104400e-01, 1.81080299381119667e-01, 1.82617991472701765e-01, 1.84163149629009795e-01, 1.85715758729097010e-01, 1.87275803167569064e-01, 1.88843266854290349e-01, 1.90418133214138563e-01, 1.92000385186807647e-01, 1.93590005226659219e-01, 1.95186975302622640e-01, 1.96791276898143818e-01, 1.98402891011182875e-01, 2.00021798154260778e-01, 2.01647978354555034e-01, 2.03281411154044547e-01, 2.04922075609703722e-01, 2.06569950293745898e-01, 2.08225013293916183e-01, 2.09887242213833772e-01, 2.11556614173383790e-01, 2.13233105809158731e-01, 2.14916693274949542e-01, 2.16607352242286386e-01, 2.18305057901029134e-01, 2.20009784960007597e-01, 2.21721507647711547e-01, 2.23440199713030520e-01, 2.25165834426043427e-01, 2.26898384578857974e-01, 2.28637822486499880e-01, 2.30384119987851900e-01, 2.32137248446642621e-01, 2.33897178752485023e-01, 2.35663881321964764e-01, 2.37437326099778166e-01, 2.39217482559919849e-01, 2.41004319706919971e-01, 2.42797806077131024e-01, 2.44597909740064106e-01, 2.46404598299774630e-01, 2.48217838896297364e-01, 2.50037598207130744e-01, 2.51863842448770367e-01, 2.53696537378291555e-01, 2.55535648294980917e-01, 2.57381140042016775e-01, 2.59232977008198353e-01, 2.61091123129723609e-01, 2.62955541892015583e-01, 2.64826196331597119e-01, 2.66703049038013833e-01, 2.68586062155805172e-01, 2.70475197386523418e-01, 2.72370415990800471e-01, 2.74271678790462248e-01, 2.76178946170690532e-01, 2.78092178082232079e-01, 2.80011334043654811e-01, 2.81936373143650897e-01, 2.83867254043386530e-01, 2.85803934978898182e-01, 2.87746373763535149e-01, 2.89694527790448151e-01, 2.91648354035123771e-01, 2.93607809057964506e-01, 2.95572849006914192e-01, 2.97543429620128558e-01, 2.99519506228690677e-01, 3.01501033759371037e-01, 3.03487966737431991e-01, 3.05480259289476316e-01, 3.07477865146339605e-01, 3.09480737646026212e-01, 3.11488829736688484e-01, 3.13502093979648963e-01, 3.15520482552465288e-01, 3.17543947252037481e-01, 3.19572439497757316e-01, 3.21605910334699450e-01, 3.23644310436854015e-01, 3.25687590110400326e-01, 3.27735699297021389e-01, 3.29788587577258870e-01, 3.31846204173908181e-01, 3.33908497955453338e-01, 3.35975417439541249e-01, 3.38046910796495051e-01, 3.40122925852866160e-01, 3.42203410095024649e-01, 3.44288310672787586e-01, 3.46377574403084953e-01, 3.48471147773662758e-01, 3.50568976946822966e-01, 3.52671007763199834e-01, 3.54777185745572261e-01, 3.56887456102711761e-01, 3.59001763733265622e-01, 3.61120053229674869e-01, 3.63242268882126585e-01, 3.65368354682540185e-01, 3.67498254328587211e-01, 3.69631911227744204e-01, 3.71769268501378237e-01, 3.73910268988864643e-01, 3.76054855251736512e-01, 3.78202969577865497e-01, 3.80354553985673474e-01, 3.82509550228374595e-01, 3.84667899798247282e-01, 3.86829543930935679e-01, 3.88994423609780096e-01, 3.91162479570175980e-01, 3.93333652303960914e-01, 3.95507882063829173e-01, 3.97685108867773352e-01, 3.99865272503552564e-01, 4.02048312533186717e-01, 4.04234168297476384e-01, 4.06422778920547739e-01, 4.08614083314422079e-01, 4.10808020183609407e-01, 4.13004528029725565e-01, 4.15203545156132416e-01, 4.17405009672600530e-01, 4.19608859499993877e-01, 4.21815032374975994e-01, 4.24023465854737081e-01, 4.26234097321741532e-01, 4.28446863988495324e-01, 4.30661702902332762e-01, 4.32878550950222024e-01, 4.35097344863588965e-01, 4.37318021223158639e-01, 4.39540516463813993e-01, 4.41764766879471181e-01, 4.43990708627970946e-01, 4.46218277735985514e-01, 4.48447410103940459e-01, 4.50678041510950955e-01, 4.52910107619771873e-01, 4.55143543981761167e-01, 4.57378286041855959e-01, 4.59614269143560784e-01, 4.61851428533947412e-01, 4.64089699368665686e-01, 4.66329016716964798e-01, 4.68569315566724441e-01, 4.70810530829495248e-01, 4.73052597345547964e-01, 4.75295449888930758e-01, 4.77539023172534103e-01, 4.79783251853162650e-01, 4.82028070536613510e-01, 4.84273413782760374e-01, 4.86519216110642875e-01, 4.88765412003560625e-01, 4.91011935914171342e-01, 4.93258722269592470e-01, 4.95505705476505732e-01, 4.97752819926264013e-01, 5.00000000000000000e-01, 5.02247180073735987e-01, 5.04494294523494268e-01, 5.06741277730407530e-01, 5.08988064085828658e-01, 5.11234587996439375e-01, 5.13480783889357125e-01, 5.15726586217239626e-01, 5.17971929463386490e-01, 5.20216748146837350e-01, 5.22460976827465897e-01, 5.24704550111069242e-01, 5.26947402654452036e-01, 5.29189469170504752e-01, 5.31430684433275559e-01, 5.33670983283035202e-01, 5.35910300631334314e-01, 5.38148571466052588e-01, 5.40385730856439216e-01, 5.42621713958144041e-01, 5.44856456018238833e-01, 5.47089892380228127e-01, 5.49321958489049045e-01, 5.51552589896059541e-01, 5.53781722264014486e-01, 5.56009291372029054e-01, 5.58235233120528819e-01, 5.60459483536186007e-01, 5.62681978776841361e-01, 5.64902655136411035e-01, 5.67121449049777976e-01, 5.69338297097667238e-01, 5.71553136011504676e-01, 5.73765902678258468e-01, 5.75976534145262919e-01, 5.78184967625024006e-01, 5.80391140500006123e-01, 5.82594990327399470e-01, 5.84796454843867584e-01, 5.86995471970274435e-01, 5.89191979816390593e-01, 5.91385916685577921e-01, 5.93577221079452261e-01, 5.95765831702523616e-01, 5.97951687466813283e-01, 6.00134727496447436e-01, 6.02314891132226648e-01, 6.04492117936170827e-01, 6.06666347696039086e-01, 6.08837520429824020e-01, 6.11005576390219904e-01, 6.13170456069064321e-01, 6.15332100201752718e-01, 6.17490449771625405e-01, 6.19645446014326526e-01, 6.21797030422134503e-01, 6.23945144748263488e-01, 6.26089731011135357e-01, 6.28230731498621763e-01, 6.30368088772255796e-01, 6.32501745671412789e-01, 6.34631645317459815e-01, 6.36757731117873415e-01, 6.38879946770325131e-01, 6.40998236266734378e-01, 6.43112543897288239e-01, 6.45222814254427739e-01, 6.47328992236800166e-01, 6.49431023053177034e-01, 6.51528852226337242e-01, 6.53622425596915047e-01, 6.55711689327212414e-01, 6.57796589904975351e-01, 6.59877074147133840e-01, 6.61953089203504949e-01, 6.64024582560458751e-01, 6.66091502044546662e-01, 6.68153795826091819e-01, 6.70211412422741130e-01, 6.72264300702978611e-01, 6.74312409889599674e-01, 6.76355689563145985e-01, 6.78394089665300550e-01, 6.80427560502242684e-01, 6.82456052747962519e-01, 6.84479517447534712e-01, 6.86497906020351037e-01, 6.88511170263311516e-01, 6.90519262353973788e-01, 6.92522134853660395e-01, 6.94519740710523684e-01, 6.96512033262568009e-01, 6.98498966240628963e-01, 7.00480493771309323e-01, 7.02456570379871442e-01, 7.04427150993085808e-01, 7.06392190942035494e-01, 7.08351645964876229e-01, 7.10305472209551849e-01, 7.12253626236464851e-01, 7.14196065021101818e-01, 7.16132745956613470e-01, 7.18063626856349103e-01, 7.19988665956345189e-01, 7.21907821917767921e-01, 7.23821053829309468e-01, 7.25728321209537752e-01, 7.27629584009199529e-01, 7.29524802613476582e-01, 7.31413937844194828e-01, 7.33296950961986167e-01, 7.35173803668402881e-01, 7.37044458107984417e-01, 7.38908876870276391e-01, 7.40767022991801647e-01, 7.42618859957983225e-01, 7.44464351705019083e-01, 7.46303462621708445e-01, 7.48136157551229633e-01, 7.49962401792869256e-01, 7.51782161103702636e-01, 7.53595401700225370e-01, 7.55402090259935894e-01, 7.57202193922868976e-01, 7.58995680293080029e-01, 7.60782517440080151e-01, 7.62562673900221834e-01, 7.64336118678035236e-01, 7.66102821247514977e-01, 7.67862751553357379e-01, 7.69615880012148100e-01, 7.71362177513500120e-01, 7.73101615421142026e-01, 7.74834165573956573e-01, 7.76559800286969480e-01, 7.78278492352288453e-01, 7.79990215039992403e-01, 7.81694942098970866e-01, 7.83392647757713614e-01, 7.85083306725050458e-01, 7.86766894190841269e-01, 7.88443385826616210e-01, 7.90112757786166228e-01, 7.91774986706083817e-01, 7.93430049706254102e-01, 7.95077924390296278e-01, 7.96718588845955453e-01, 7.98352021645444966e-01, 7.99978201845739222e-01, 8.01597108988817125e-01, 8.03208723101856182e-01, 8.04813024697377360e-01, 8.06409994773340781e-01, 8.07999614813192353e-01, 8.09581866785861437e-01, 8.11156733145709651e-01, 8.12724196832430936e-01, 8.14284241270902990e-01, 8.15836850370990205e-01, 8.17382008527298235e-01, 8.18919700618880333e-01, 8.20449912008895600e-01, 8.21972628544219300e-01, 8.23487836555005396e-01, 8.24995522854201458e-01, 8.26495674737016133e-01, 8.27988279980339332e-01, 8.29473326842115322e-01, 8.30950804060668909e-01, 8.32420700853984900e-01, 8.33883006918941046e-01, 8.35337712430494670e-01, 8.36784808040823180e-01, 8.38224284878418697e-01, 8.39656134547137002e-01, 8.41080349125201039e-01, 8.42496921164159209e-01, 8.43905843687798672e-01, 8.45307110191013931e-01, 8.46700714638630912e-01, 8.48086651464186825e-01, 8.49464915568666039e-01, 8.50835502319192258e-01, 8.52198407547677242e-01, 8.53553627549426378e-01, 8.54901159081701352e-01, 8.56240999362240229e-01, 8.57573146067735214e-01, 8.58897597332268408e-01, 8.60214351745705835e-01, 8.61523408352050071e-01, 8.62824766647751767e-01, 8.64118426579980383e-01, 8.65404388544854461e-01, 8.66682653385631755e-01, 8.67953222390859544e-01, 8.69216097292485467e-01, 8.70471280263929221e-01, 8.71718773918115450e-01, 8.72958581305468188e-01, 8.74190705911867199e-01, 8.75415151656566570e-01, 8.76631922890075922e-01, 8.77841024392004589e-01, 8.79042461368869155e-01, 8.80236239451864703e-01, 8.81422364694600153e-01, 8.82600843570798085e-01, 8.83771682971959414e-01, 8.84934890204993307e-01, 8.86090472989812749e-01, 8.87238439456896125e-01, 8.88378798144815252e-01, 8.89511557997730228e-01, 8.90636728362851532e-01, 8.91754318987869763e-01, 8.92864340018353452e-01, 8.93966801995115339e-01, 8.95061715851547555e-01, 8.96149092910926116e-01, 8.97228944883685166e-01, 8.98301283864661391e-01, 8.99366122330309031e-01, 9.00423473135885938e-01, 9.01473349512611099e-01, 9.02515765064794084e-01, 9.03550733766936839e-01, 9.04578269960808291e-01, 9.05598388352492189e-01, 9.06611104009408659e-01, 9.07616432357309898e-01, 9.08614389177250476e-01, 9.09604990602532706e-01, 9.10588253115627527e-01, 9.11564193545071376e-01, 9.12532829062339502e-01, 9.13494177178696191e-01, 9.14448255742022366e-01, 9.15395082933621040e-01, 9.16334677265001078e-01, 9.17267057574639749e-01, 9.18192243024724545e-01, 9.19110253097874727e-01, 9.20021107593843098e-01, 9.20924826626198456e-01, 9.21821430618989224e-01, 9.22710940303388730e-01, 9.23593376714322617e-01, 9.24468761187078873e-01, 9.25337115353900958e-01, 9.26198461140564509e-01, 9.27052820762938126e-01, 9.27900216723528696e-01, 9.28740671808011777e-01, 9.29574209081747492e-01, 9.30400851886282456e-01, 9.31220623835838195e-01, 9.32033548813786569e-01, 9.32839650969112670e-01, 9.33638954712865700e-01, 9.34431484714598298e-01, 9.35217265898794832e-01, 9.35996323441289124e-01, 9.36768682765672104e-01, 9.37534369539689890e-01, 9.38293409671632769e-01, 9.39045829306715577e-01, 9.39791654823449975e-01, 9.40530912830009082e-01, 9.41263630160584983e-01, 9.41989833871739582e-01, 9.42709551238749287e-01, 9.43422809751944023e-01, 9.44129637113041042e-01, 9.44830061231474028e-01, 9.45524110220717976e-01, 9.46211812394610325e-01, 9.46893196263668823e-01, 9.47568290531406614e-01, 9.48237124090645017e-01, 9.48899726019824477e-01, 9.49556125579314169e-01, 9.50206352207720714e-01, 9.50850435518196503e-01, 9.51488405294748084e-01, 9.52120291488545088e-01, 9.52746124214230155e-01, 9.53365933746230343e-01, 9.53979750515070471e-01, 9.54587605103688856e-01, 9.55189528243755918e-01, 9.55785550811996107e-01, 9.56375703826513599e-01, 9.56960018443122232e-01, 9.57538525951680121e-01, 9.58111257772429408e-01, 9.58678245452341599e-01, 9.59239520661468918e-01, 9.59795115189302147e-01, 9.60345060941135360e-01, 9.60889389934438020e-01, 9.61428134295234853e-01, 9.61961326254493940e-01, 9.62488998144523456e-01, 9.63011182395377480e-01, 9.63527911531271309e-01, 9.64039218167006682e-01, 9.64545135004407345e-01, 9.65045694828765372e-01, 9.65540930505298638e-01, 9.66030874975619879e-01, 9.66515561254217716e-01, 9.66995022424950073e-01, 9.67469291637550363e-01, 9.67938402104146853e-01, 9.68402387095795604e-01, 9.68861279939027352e-01, 9.69315114012408741e-01, 9.69763922743118279e-01, 9.70207739603537386e-01, 9.70646598107856929e-01, 9.71080531808699591e-01, 9.71509574293758461e-01, 9.71933759182452197e-01, 9.72353120122597122e-01, 9.72767690787096609e-01, 9.73177504870648112e-01, 9.73582596086468185e-01, 9.73982998163035823e-01, 9.74378744840854489e-01, 9.74769869869233134e-01, 9.75156407003086562e-01, 9.75538389999755455e-01, 9.75915852615846387e-01, 9.76288828604092134e-01, 9.76657351710232618e-01, 9.77021455669916760e-01, 9.77381174205625580e-01, 9.77736541023616825e-01, 9.78087589810891428e-01, 9.78434354232182086e-01, 9.78776867926964251e-01, 9.79115164506489813e-01, 9.79449277550843748e-01, 9.79779240606024015e-01, 9.80105087181044960e-01, 9.80426850745064505e-01, 9.80744564724535362e-01, 9.81058262500380550e-01, 9.81367977405193444e-01, 9.81673742720462616e-01, 9.81975591673821698e-01, 9.82273557436324516e-01, 9.82567673119745710e-01, 9.82857971773907076e-01, 9.83144486384029852e-01, 9.83427249868113159e-01, 9.83706295074338809e-01, 9.83981654778502690e-01, 9.84253361681472930e-01, 9.84521448406675027e-01, 9.84785947497604151e-01, 9.85046891415364793e-01, 9.85304312536237947e-01, 9.85558243149276003e-01, 9.85808715453925517e-01, 9.86055761557678033e-01, 9.86299413473749107e-01, 9.86539703118785703e-01, 9.86776662310602096e-01, 9.87010322765944449e-01, 9.87240716098284181e-01, 9.87467873815640279e-01, 9.87691827318430685e-01, 9.87912607897352870e-01, 9.88130246731293729e-01, 9.88344774885268913e-01, 9.88556223308391690e-01, 9.88764622831871470e-01, 9.88970004167042065e-01, 9.89172397903419803e-01, 9.89371834506791569e-01, 9.89568344317332864e-01, 9.89761957547755968e-01, 9.89952704281488272e-01, 9.90140614470880854e-01, 9.90325717935447364e-01, 9.90508044360133272e-01, 9.90687623293615545e-01, 9.90864484146632790e-01, 9.91038656190345912e-01, 9.91210168554729335e-01, 9.91379050226992799e-01, 9.91545330050033794e-01, 9.91709036720920619e-01, 9.91870198789406118e-01, 9.92028844656472090e-01, 9.92185002572904377e-01, 9.92338700637898661e-01, 9.92489966797696935e-01, 9.92638828844254671e-01, 9.92785314413938663e-01, 9.92929450986255526e-01, 9.93071265882610844e-01, 9.93210786265098930e-01, 9.93348039135323174e-01, 9.93483051333246950e-01, 9.93615849536075030e-01, 9.93746460257165478e-01, 9.93874909844971960e-01, 9.94001224482016430e-01, 9.94125430183892125e-01, 9.94247552798296813e-01, 9.94367618004096226e-01, 9.94485651310417603e-01, 9.94601678055773272e-01, 9.94715723407214192e-01, 9.94827812359513357e-01, 9.94937969734379002e-01, 9.95046220179697474e-01, 9.95152588168805720e-01, 9.95257097999793243e-01, 9.95359773794833459e-01, 9.95460639499544312e-01, 9.95559718882378056e-01, 9.95657035534040072e-01, 9.95752612866936601e-01, 9.95846474114651260e-01, 9.95938642331450224e-01, 9.96029140391815919e-01, 9.96117990990009104e-01, 9.96205216639659183e-01, 9.96290839673382618e-01, 9.96374882242429268e-01, 9.96457366316356527e-01, 9.96538313682731078e-01, 9.96617745946858113e-01, 9.96695684531537849e-01, 9.96772150676849173e-01, 9.96847165439960242e-01, 9.96920749694965851e-01, 9.96992924132751412e-01, 9.97063709260883330e-01, 9.97133125403525614e-01, 9.97201192701382518e-01, 9.97267931111667020e-01, 9.97333360408094951e-01, 9.97397500180904557e-01, 9.97460369836901306e-01, 9.97521988599527719e-01, 9.97582375508958034e-01, 9.97641549422217467e-01, 9.97699529013325870e-01, 9.97756332773465564e-01, 9.97811979011173124e-01, 9.97866485852554887e-01, 9.97919871241525964e-01, 9.97972152940072520e-01, 9.98023348528537097e-01, 9.98073475405926729e-01, 9.98122550790243628e-01, 9.98170591718838194e-01, 9.98217615048784104e-01, 9.98263637457275238e-01, 9.98308675442044193e-01, 9.98352745321802137e-01, 9.98395863236699747e-01, 9.98438045148808984e-01, 9.98479306842625440e-01, 9.98519663925591009e-01, 9.98559131828636608e-01, 9.98597725806744702e-01, 9.98635460939531352e-01, 9.98672352131847541e-01, 9.98708414114399483e-01, 9.98743661444387674e-01, 9.98778108506164391e-01, 9.98811769511909385e-01, 9.98844658502323477e-01, 9.98876789347339792e-01, 9.98908175746852357e-01, 9.98938831231461768e-01, 9.98968769163237670e-01, 9.98998002736497745e-01, 9.99026544978602945e-01, 9.99054408750768675e-01, 9.99081606748891652e-01, 9.99108151504392138e-01, 9.99134055385071282e-01, 9.99159330595983269e-01, 9.99183989180321990e-01, 9.99208043020321955e-01, 9.99231503838173137e-01, 9.99254383196949490e-01, 9.99276692501550815e-01, 9.99298442999657710e-01, 9.99319645782699298e-01, 9.99340311786833446e-01, 9.99360451793939179e-01, 9.99380076432621004e-01, 9.99399196179224841e-01, 9.99417821358865276e-01, 9.99435962146463838e-01, 9.99453628567798010e-01, 9.99470830500560674e-01, 9.99487577675429713e-01, 9.99503879677147452e-01, 9.99519745945609667e-01, 9.99535185776963862e-01, 9.99550208324716517e-01, 9.99564822600849015e-01, 9.99579037476941971e-01, 9.99592861685307649e-01, 9.99606303820130195e-01, 9.99619372338613385e-01, 9.99632075562135604e-01, 9.99644421677411764e-01, 9.99656418737661872e-01, 9.99668074663785971e-01, 9.99679397245545145e-01, 9.99690394142748331e-01, 9.99701072886444628e-01, 9.99711440880120838e-01, 9.99721505400903939e-01, 9.99731273600768230e-01, 9.99740752507746844e-01, 9.99749949027147368e-01, 9.99758869942771283e-01, 9.99767521918136954e-01, 9.99775911497705881e-01, 9.99784045108111958e-01, 9.99791929059393450e-01, 9.99799569546227426e-01, 9.99806972649166372e-01, 9.99814144335876729e-01, 9.99821090462379076e-01, 9.99827816774289697e-01, 9.99834328908063282e-01, 9.99840632392236477e-01, 9.99846732648672055e-01, 9.99852634993803419e-01, 9.99858344639879208e-01, 9.99863866696207735e-01, 9.99869206170401024e-01, 9.99874367969618170e-01, 9.99879356901807809e-01, 9.99884177676949424e-01, 9.99888834908293263e-01, 9.99893333113598618e-01, 9.99897676716370236e-01, 9.99901870047092617e-01, 9.99905917344461973e-01, 9.99909822756615618e-01, 9.99913590342358551e-01, 9.99917224072387017e-01, 9.99920727830508817e-01, 9.99924105414860150e-01, 9.99927360539118759e-01, 9.99930496833713182e-01, 9.99933517847027877e-01, 9.99936427046604027e-01, 9.99939227820335808e-01, 9.99941923477661908e-01, 9.99944517250752124e-01, 9.99947012295688797e-01, 9.99949411693642927e-01, 9.99951718452044745e-01, 9.99953935505748575e-01, 9.99956065718191781e-01, 9.99958111882547626e-01, 9.99960076722871853e-01, 9.99961962895242815e-01, 9.99963772988894981e-01, 9.99965509527345638e-01, 9.99967174969514627e-01, 9.99968771710836937e-01, 9.99970302084368014e-01, 9.99971768361881601e-01, 9.99973172754959968e-01, 9.99974517416076376e-01, 9.99975804439669625e-01, 9.99977035863210533e-01, 9.99978213668260216e-01, 9.99979339781520011e-01, 9.99980416075872924e-01, 9.99981444371416456e-01, 9.99982426436486685e-01, 9.99983363988673466e-01, 9.99984258695826646e-01, 9.99985112177053152e-01, 9.99985926003704848e-01, 9.99986701700357051e-01, 9.99987440745777578e-01, 9.99988144573886249e-01, 9.99988814574704706e-01, 9.99989452095296481e-01, 9.99990058440697202e-01, 9.99990634874834843e-01, 9.99991182621439933e-01, 9.99991702864945651e-01, 9.99992196751377693e-01, 9.99992665389233876e-01, 9.99993109850353364e-01, 9.99993531170775471e-01, 9.99993930351587969e-01, 9.99994308359764821e-01, 9.99994666128993302e-01, 9.99995004560490435e-01, 9.99995324523808695e-01, 9.99995626857630928e-01, 9.99995912370554438e-01, 9.99996181841864209e-01, 9.99996436022295205e-01, 9.99996675634783732e-01, 9.99996901375207809e-01, 9.99997113913116543e-01, 9.99997313892448459e-01, 9.99997501932238780e-01, 9.99997678627315633e-01, 9.99997844548985162e-01, 9.99998000245705547e-01, 9.99998146243749910e-01, 9.99998283047858113e-01, 9.99998411141877440e-01, 9.99998530989392167e-01, 9.99998643034342035e-01, 9.99998747701629617e-01, 9.99998845397716612e-01, 9.99998936511209066e-01, 9.99999021413431547e-01, 9.99999100458990303e-01, 9.99999173986325408e-01, 9.99999242318251956e-01, 9.99999305762490304e-01, 9.99999364612185425e-01, 9.99999419146415396e-01, 9.99999469630689071e-01, 9.99999516317432979e-01, 9.99999559446467497e-01, 9.99999599245472357e-01, 9.99999635930441535e-01, 9.99999669706127574e-01, 9.99999700766475426e-01, 9.99999729295045847e-01, 9.99999755465428439e-01, 9.99999779441644386e-01, 9.99999801378538988e-01, 9.99999821422164027e-01, 9.99999839710150094e-01, 9.99999856372068912e-01, 9.99999871529785779e-01, 9.99999885297802191e-01, 9.99999897783588753e-01, 9.99999909087908464e-01, 9.99999919305130478e-01, 9.99999928523534426e-01, 9.99999936825605427e-01, 9.99999944288319864e-01, 9.99999950983422049e-01, 9.99999956977691886e-01, 9.99999962333203636e-01, 9.99999967107575907e-01, 9.99999971354212981e-01, 9.99999975122537602e-01, 9.99999978458215341e-01, 9.99999981403370674e-01, 9.99999983996794879e-01, 9.99999986274145911e-01, 9.99999988268140352e-01, 9.99999990008737604e-01, 9.99999991523316428e-01, 9.99999992836843997e-01, 9.99999993972037578e-01, 9.99999994949519003e-01, 9.99999995787962058e-01, 9.99999996504232956e-01, 9.99999997113524015e-01, 9.99999997629480717e-01, 9.99999998064322280e-01, 9.99999998428955914e-01, 9.99999998733084897e-01, 9.99999998985310643e-01, 9.99999999193228912e-01, 9.99999999363520333e-01, 9.99999999502035383e-01, 9.99999999613874002e-01, 9.99999999703460009e-01, 9.99999999774610466e-01, 9.99999999830600182e-01, 9.99999999874221511e-01, 9.99999999907839617e-01, 9.99999999933443379e-01, 9.99999999952692109e-01, 9.99999999966958258e-01, 9.99999999977366272e-01, 9.99999999984827800e-01, 9.99999999990073406e-01, 9.99999999993680974e-01, 9.99999999996100982e-01, 9.99999999997678830e-01, 9.99999999998674398e-01, 9.99999999999279007e-01, 9.99999999999629987e-01, 9.99999999999823011e-01, 9.99999999999922392e-01, 9.99999999999969522e-01, 9.99999999999989639e-01, 9.99999999999997108e-01, 9.99999999999999394e-01, 9.99999999999999919e-01, 9.99999999999999995e-01, 1.00000000000000000e+00 }; // Weights for the cubature rules. static const double weight[POINTS] = { 0.00000000000000000e+00, 3.68966693982259570e-16, 2.36135236163851335e-14, 2.68966246778194856e-13, 1.51117724604519089e-12, 5.76443119106347665e-12, 1.72115777765039178e-11, 4.33984223177292195e-11, 9.66927508827969114e-11, 1.96007692148083204e-10, 3.68788946027512842e-10, 6.53265337084159831e-10, 1.10096207880257650e-09, 1.77947606299532627e-09, 2.77551241695252807e-09, 4.19818149943343009e-09, 6.18255543525875242e-09, 8.89348321710637371e-09, 1.25296633321554548e-08, 1.73279728004798243e-08, 2.35680514415748858e-08, 3.15771401151278980e-08, 4.17351716121236247e-08, 5.44801128026304109e-08, 7.03135565771500222e-08, 8.98065620492523309e-08, 1.13605741418367350e-07, 1.42439591823086335e-07, 1.77125070447144772e-07, 2.18574411072437080e-07, 2.67802180205959653e-07, 3.25932570840509480e-07, 3.94206931842293587e-07, 4.73991530892343932e-07, 5.66785548842796589e-07, 6.74229303283696796e-07, 7.98112699051046140e-07, 9.40383903342328240e-07, 1.10315824304174810e-06, 1.28872732179391101e-06, 1.49956835430166281e-06, 1.73835371526132706e-06, 2.00796070028662000e-06, 2.31148149611111296e-06, 2.65223335729825746e-06, 3.03376898662770350e-06, 3.45988711626693812e-06, 3.93464328677816254e-06, 4.46236082095182397e-06, 5.04764198940033469e-06, 5.69537936478825866e-06, 6.41076736151863585e-06, 7.19931395763916027e-06, 8.06685259567663848e-06, 9.01955425905354564e-06, 1.00639397206865749e-05, 1.12068919603138562e-05, 1.24556687470450130e-05, 1.38179153835764398e-05, 1.53016776084631346e-05, 1.69154146527881135e-05, 1.86680124475208848e-05, 2.05687969778076780e-05, 2.26275477803881128e-05, 2.48545115802857764e-05, 2.72604160628737521e-05, 2.98564837773705240e-05, 3.26544461677768870e-05, 3.56665577272205129e-05, 3.89056102716316880e-05, 4.23849473286314457e-05, 4.61184786374718751e-05, 5.01206947558278155e-05, 5.44066817691994417e-05, 5.89921360986464216e-05, 6.38933794025363972e-05, 6.91273735679535015e-05, 7.47117357873764980e-05, 8.06647537162009095e-05, 8.70054007066452145e-05, 9.37533511135478192e-05, 1.00928995667529091e-04, 1.08553456910961249e-04, 1.16648604692158390e-04, 1.25237071713169329e-04, 1.34342269126527354e-04, 1.43988402176283337e-04, 1.54200485878621995e-04, 1.65004360737335414e-04, 1.76426708489403275e-04, 1.88495067875905520e-04, 2.01237850433470520e-04, 2.14684356301440128e-04, 2.28864790039912336e-04, 2.43810276453802595e-04, 2.59552876418046254e-04, 2.76125602699046955e-04, 2.93562435767459274e-04, 3.11898339597378356e-04, 3.31169277446994815e-04, 3.51412227615759705e-04, 3.72665199173092016e-04, 3.94967247653649748e-04, 4.18358490714175374e-04, 4.42880123746917248e-04, 4.68574435444620360e-04, 4.95484823312072716e-04, 5.23655809119187603e-04, 5.53133054290597009e-04, 5.83963375226727598e-04, 6.16194758551327770e-04, 6.49876376280412640e-04, 6.85058600907593034e-04, 7.21793020400755071e-04, 7.60132453105058308e-04, 8.00130962547223052e-04, 8.41843872136081038e-04, 8.85327779754368423e-04, 9.30640572236745823e-04, 9.77841439729037039e-04, 1.02699088992368604e-03, 1.07815076216644088e-03, 1.13138424142928326e-03, 1.18675587214463373e-03, 1.24433157189587487e-03, 1.30417864495924788e-03, 1.36636579569219284e-03, 1.43096314176321812e-03, 1.49804222721840103e-03, 1.56767603537963973e-03, 1.63993900156979466e-03, 1.71490702565987816e-03, 1.79265748443347114e-03, 1.87326924376356815e-03, 1.95682267059707486e-03, 2.04339964474220603e-03, 2.13308357045405724e-03, 2.22595938781364964e-03, 2.32211358389577434e-03, 2.42163420372099103e-03, 2.52461086098716487e-03, 2.63113474857595596e-03, 2.74129864882970689e-03, 2.85519694359420625e-03, 2.97292562402283943e-03, 3.09458230013767232e-03, 3.22026621014304882e-03, 3.35007822948731958e-03, 3.48412087966835668e-03, 3.62249833677854737e-03, 3.76531643978499918e-03, 3.91268269854072927e-03, 4.06470630152265196e-03, 4.22149812329222076e-03, 4.38317073167462433e-03, 4.54983839465248011e-03, 4.72161708697001432e-03, 4.89862449644376304e-03, 5.08098002997587627e-03, 5.26880481926615450e-03, 5.46222172621899627e-03, 5.66135534804148479e-03, 5.86633202202889247e-03, 6.07727983003393346e-03, 6.29432860261614680e-03, 6.51760992286784607e-03, 6.74725712991312531e-03, 6.98340532207646614e-03, 7.22619135971754667e-03, 7.47575386772890949e-03, 7.73223323769320330e-03, 7.99577162969677124e-03, 8.26651297379641791e-03, 8.54460297113624674e-03, 8.83018909471152040e-03, 9.12342058977655796e-03, 9.42444847389374492e-03, 9.73342553662079490e-03, 1.00505063388334658e-02, 1.03758472116809974e-02, 1.07096062551716016e-02, 1.10519433363854053e-02, 1.14030200873123075e-02, 1.17629999023122844e-02, 1.21320479351957405e-02, 1.25103310959215748e-02, 1.28980180469106979e-02, 1.32952791989728076e-02, 1.37022867068443003e-02, 1.41192144643352658e-02, 1.45462380990835864e-02, 1.49835349669142313e-02, 1.54312841458019118e-02, 1.58896664294353358e-02, 1.63588643203813722e-02, 1.68390620228475140e-02, 1.73304454350410990e-02, 1.78332021411238266e-02, 1.83475214027601831e-02, 1.88735941502584641e-02, 1.94116129733031607e-02, 1.99617721112775524e-02, 2.05242674431754276e-02, 2.10992964771009320e-02, 2.16870583393556213e-02, 2.22877537631118758e-02, 2.29015850766719136e-02, 2.35287561913117168e-02, 2.41694725887092683e-02, 2.48239413079565744e-02, 2.54923709321550309e-02, 2.61749715745937709e-02, 2.68719548645107130e-02, 2.75835339324361129e-02, 2.83099233951184983e-02, 2.90513393400329559e-02, 2.98079993094718144e-02, 3.05801222842178564e-02, 3.13679286668002702e-02, 3.21716402643336377e-02, 3.29914802709403381e-02, 3.38276732497568287e-02, 3.46804451145243478e-02, 3.55500231107646715e-02, 3.64366357965416338e-02, 3.73405130228092093e-02, 3.82618859133470380e-02, 3.92009868442843559e-02, 4.01580494232133815e-02, 4.11333084678932883e-02, 4.21269999845459813e-02, 4.31393611457449778e-02, 4.41706302678987755e-02, 4.52210467883301774e-02, 4.62908512419531258e-02, 4.73802852375486808e-02, 4.84895914336418630e-02, 4.96190135139811657e-02, 5.07687961626226211e-02, 5.19391850386203939e-02, 5.31304267503259537e-02, 5.43427688292979654e-02, 5.55764597038251167e-02, 5.68317486720641852e-02, 5.81088858747957319e-02, 5.94081222677998881e-02, 6.07297095938547858e-02, 6.20739003543602640e-02, 6.34409477805895649e-02, 6.48311058045718134e-02, 6.62446290296081582e-02, 6.76817727004245297e-02, 6.91427926729640526e-02, 7.06279453838222306e-02, 7.21374878193281005e-02, 7.36716774842746316e-02, 7.52307723703017264e-02, 7.68150309239352568e-02, 7.84247120142856471e-02, 8.00600749004095954e-02, 8.17213791983385981e-02, 8.34088848477780249e-02, 8.51228520784805614e-02, 8.68635413762979174e-02, 8.86312134489147727e-02, 9.04261291912690056e-02, 9.22485496506623253e-02, 9.40987359915655034e-02, 9.59769494601224709e-02, 9.78834513483576219e-02, 9.98185029580907354e-02, 1.01782365564564000e-01, 1.03775300379785692e-01, 1.05797568515595141e-01, 1.07849430946453665e-01, 1.09931148471966241e-01, 1.12042981679138754e-01, 1.14185190904375704e-01, 1.16358036195223350e-01, 1.18561777271863314e-01, 1.20796673488361752e-01, 1.23062983793679239e-01, 1.25360966692446605e-01, 1.27690880205512001e-01, 1.30052981830264554e-01, 1.32447528500740016e-01, 1.34874776547513880e-01, 1.37334981657387497e-01, 1.39828398832872790e-01, 1.42355282351481202e-01, 1.44915885724822592e-01, 1.47510461657519852e-01, 1.50139262005945039e-01, 1.52802537736782921e-01, 1.55500538885427849e-01, 1.58233514514219938e-01, 1.61001712670526593e-01, 1.63805380344675457e-01, 1.66644763427744918e-01, 1.69520106669218357e-01, 1.72431653634508364e-01, 1.75379646662357203e-01, 1.78364326822119846e-01, 1.81385933870935951e-01, 1.84444706210797189e-01, 1.87540880845516377e-01, 1.90674693337604925e-01, 1.93846377765065124e-01, 1.97056166678103858e-01, 2.00304291055774364e-01, 2.03590980262552687e-01, 2.06916462004855529e-01, 2.10280962287506225e-01, 2.13684705370155593e-01, 2.17127913723664474e-01, 2.20610807986454782e-01, 2.24133606920835925e-01, 2.27696527369313494e-01, 2.31299784210887128e-01, 2.34943590317344518e-01, 2.38628156509558519e-01, 2.42353691513794367e-01, 2.46120401918034032e-01, 2.49928492128324752e-01, 2.53778164325158826e-01, 2.57669618419891750e-01, 2.61603052011205807e-01, 2.65578660341626260e-01, 2.69596636254097262e-01, 2.73657170148624692e-01, 2.77760449938993052e-01, 2.81906661009563653e-01, 2.86095986172161276e-01, 2.90328605623056540e-01, 2.94604696900051189e-01, 2.98924434839673556e-01, 3.03287991534491423e-01, 3.07695536290549562e-01, 3.12147235584939176e-01, 3.16643253023506535e-01, 3.21183749298708054e-01, 3.25768882147619076e-01, 3.30398806310103640e-01, 3.35073673487152486e-01, 3.39793632299396571e-01, 3.44558828245803348e-01, 3.49369403662563068e-01, 3.54225497682172357e-01, 3.59127246192722300e-01, 3.64074781797398286e-01, 3.69068233774198815e-01, 3.74107728035880504e-01, 3.79193387090136473e-01, 3.84325330000015320e-01, 3.89503672344587845e-01, 3.94728526179868684e-01, 4.00000000000000000e-01, 4.05318198698704347e-01, 4.10683223531013818e-01, 4.16095172075282548e-01, 4.21554138195489651e-01, 4.27060212003839602e-01, 4.32613479823667109e-01, 4.38214024152653428e-01, 4.43861923626361110e-01, 4.49557252982094095e-01, 4.55300083023090055e-01, 4.61090480583051866e-01, 4.66928508491025048e-01, 4.72814225536627961e-01, 4.78747686435641562e-01, 4.84728941795965419e-01, 4.90758038083946723e-01, 4.96835017591088920e-01, 5.02959918401146618e-01, 5.09132774357613327e-01, 5.15353615031608582e-01, 5.21622465690170951e-01, 5.27939347264963366e-01, 5.34304276321397201e-01, 5.40717265028181450e-01, 5.47178321127303314e-01, 5.53687447904446478e-01, 5.60244644159853278e-01, 5.66849904179636929e-01, 5.73503217707549927e-01, 5.80204569917214681e-01, 5.86953941384822382e-01, 5.93751308062306059e-01, 6.00596641250993709e-01, 6.07489907575747342e-01, 6.14431068959593717e-01, 6.21420082598852476e-01, 6.28456900938767342e-01, 6.35541471649645973e-01, 6.42673737603513990e-01, 6.49853636851288659e-01, 6.57081102600477623e-01, 6.64356063193408012e-01, 6.71678442085991207e-01, 6.79048157827028451e-01, 6.86465124038062441e-01, 6.93929249393779953e-01, 7.01440437602970497e-01, 7.08998587390045910e-01, 7.16603592477125737e-01, 7.24255341566693156e-01, 7.31953718324826157e-01, 7.39698601365008583e-01, 7.47489864232525564e-01, 7.55327375389447831e-01, 7.63210998200209270e-01, 7.71140590917782031e-01, 7.79116006670453418e-01, 7.87137093449208694e-01, 7.95203694095723871e-01, 8.03315646290972450e-01, 8.11472782544450020e-01, 8.19674930184020513e-01, 8.27921911346387833e-01, 8.36213542968196523e-01, 8.44549636777764979e-01, 8.52929999287454716e-01, 8.61354431786679025e-01, 8.69822730335554331e-01, 8.78334685759197425e-01, 8.86890083642671696e-01, 8.95488704326585356e-01, 9.04130322903344593e-01, 9.12814709214064469e-01, 9.21541627846140309e-01, 9.30310838131482212e-01, 9.39122094145415235e-01, 9.47975144706247705e-01, 9.56869733375510003e-01, 9.65805598458866090e-01, 9.74782473007699937e-01, 9.83800084821378915e-01, 9.92858156450196122e-01, 1.00195640519899351e+00, 1.01109454313146758e+00, 1.02027227707515934e+00, 1.02948930862713003e+00, 1.03874533416032418e+00, 1.04804004483062129e+00, 1.05737312658457747e+00, 1.06674426016785807e+00, 1.07615312113436260e+00, 1.08559937985604268e+00, 1.09508270153341397e+00, 1.10460274620676285e+00, 1.11415916876804851e+00, 1.12375161897350093e+00, 1.13337974145691528e+00, 1.14304317574364305e+00, 1.15274155626528013e+00, 1.16247451237505197e+00, 1.17224166836389594e+00, 1.18204264347724066e+00, 1.19187705193248225e+00, 1.20174450293715718e+00, 1.21164460070781123e+00, 1.22157694448956428e+00, 1.23154112857637005e+00, 1.24153674233197033e+00, 1.25156337021154272e+00, 1.26162059178404107e+00, 1.27170798175522745e+00, 1.28182510999139472e+00, 1.29197154154377828e+00, 1.30214683667365573e+00, 1.31235055087813301e+00, 1.32258223491661542e+00, 1.33284143483796187e+00, 1.34312769200832060e+00, 1.35344054313964451e+00, 1.36377952031888409e+00, 1.37414415103785585e+00, 1.38453395822378415e+00, 1.39494846027051401e+00, 1.40538717107039257e+00, 1.41584960004681677e+00, 1.42633525218744441e+00, 1.43684362807806615e+00, 1.44737422393713547e+00, 1.45792653165095362e+00, 1.46850003880950679e+00, 1.47909422874295200e+00, 1.48970858055874884e+00, 1.50034256917943348e+00, 1.51099566538103163e+00, 1.52166733583210685e+00, 1.53235704313344062e+00, 1.54306424585834048e+00, 1.55378839859357216e+00, 1.56452895198091215e+00, 1.57528535275931623e+00, 1.58605704380770024e+00, 1.59684346418832852e+00, 1.60764404919080586e+00, 1.61845823037666847e+00, 1.62928543562456950e+00, 1.64012508917605436e+00, 1.65097661168192125e+00, 1.66183942024916197e+00, 1.67271292848847821e+00, 1.68359654656236818e+00, 1.69448968123377859e+00, 1.70539173591531673e+00, 1.71630211071901741e+00, 1.72722020250665925e+00, 1.73814540494062507e+00, 1.74907710853530065e+00, 1.76001470070900619e+00, 1.77095756583645494e+00, 1.78190508530173294e+00, 1.79285663755179407e+00, 1.80381159815046446e+00, 1.81476933983294999e+00, 1.82572923256084099e+00, 1.83669064357760762e+00, 1.84765293746457973e+00, 1.85861547619740481e+00, 1.86957761920297741e+00, 1.88053872341683359e+00, 1.89149814334100358e+00, 1.90245523110231615e+00, 1.91340933651114757e+00, 1.92435980712060855e+00, 1.93530598828616201e+00, 1.94624722322566473e+00, 1.95718285307982570e+00, 1.96811221697307408e+00, 1.97903465207482935e+00, 1.98994949366116653e+00, 2.00085607517686885e+00, 2.01175372829786057e+00, 2.02264178299401233e+00, 2.03351956759231144e+00, 2.04438640884038946e+00, 2.05524163197039929e+00, 2.06608456076323409e+00, 2.07691451761307995e+00, 2.08773082359229470e+00, 2.09853279851660457e+00, 2.10931976101061085e+00, 2.12009102857359848e+00, 2.13084591764563819e+00, 2.14158374367397432e+00, 2.15230382117968974e+00, 2.16300546382463975e+00, 2.17368798447864654e+00, 2.18435069528694583e+00, 2.19499290773787708e+00, 2.20561393273080900e+00, 2.21621308064429159e+00, 2.22678966140442618e+00, 2.23734298455344489e+00, 2.24787235931849070e+00, 2.25837709468058944e+00, 2.26885649944380499e+00, 2.27930988230456881e+00, 2.28973655192117491e+00, 2.30013581698343152e+00, 2.31050698628246040e+00, 2.32084936878063486e+00, 2.33116227368164756e+00, 2.34144501050069906e+00, 2.35169688913479798e+00, 2.36191721993316382e+00, 2.37210531376772327e+00, 2.38226048210369084e+00, 2.39238203707022479e+00, 2.40246929153114901e+00, 2.41252155915573179e+00, 2.42253815448951223e+00, 2.43251839302516498e+00, 2.44246159127339412e+00, 2.45236706683384695e+00, 2.46223413846603828e+00, 2.47206212616027605e+00, 2.48185035120857891e+00, 2.49159813627557638e+00, 2.50130480546938238e+00, 2.51096968441243275e+00, 2.52059210031227734e+00, 2.53017138203231742e+00, 2.53970686016247901e+00, 2.54919786708981278e+00, 2.55864373706901118e+00, 2.56804380629283344e+00, 2.57739741296242902e+00, 2.58670389735755036e+00, 2.59596260190664529e+00, 2.60517287125682003e+00, 2.61433405234366337e+00, 2.62344549446092254e+00, 2.63250654933002180e+00, 2.64151657116941410e+00, 2.65047491676375678e+00, 2.65938094553290196e+00, 2.66823401960069225e+00, 2.67703350386355282e+00, 2.68577876605887028e+00, 2.69446917683314951e+00, 2.70310410980993895e+00, 2.71168294165751549e+00, 2.72020505215631962e+00, 2.72866982426613185e+00, 2.73707664419298134e+00, 2.74542490145577759e+00, 2.75371398895265633e+00, 2.76194330302703054e+00, 2.77011224353333762e+00, 2.77822021390247392e+00, 2.78626662120690767e+00, 2.79425087622546143e+00, 2.80217239350775542e+00, 2.81003059143830278e+00, 2.81782489230024820e+00, 2.82555472233874110e+00, 2.83321951182393492e+00, 2.84081869511360370e+00, 2.84835171071536763e+00, 2.85581800134851890e+00, 2.86321701400543958e+00, 2.87054820001260295e+00, 2.87781101509115013e+00, 2.88500491941703356e+00, 2.89212937768071919e+00, 2.89918385914643925e+00, 2.90616783771098731e+00, 2.91308079196204776e+00, 2.91992220523605156e+00, 2.92669156567555045e+00, 2.93338836628610160e+00, 2.94001210499265506e+00, 2.94656228469543601e+00, 2.95303841332531444e+00, 2.95944000389865433e+00, 2.96576657457163502e+00, 2.97201764869403716e+00, 2.97819275486248579e+00, 2.98429142697314345e+00, 2.99031320427384566e+00, 2.99625763141567200e+00, 3.00212425850394532e+00, 3.00791264114865230e+00, 3.01362234051427815e+00, 3.01925292336904886e+00, 3.02480396213357383e+00, 3.03027503492888252e+00, 3.03566572562384817e+00, 3.04097562388199221e+00, 3.04620432520766281e+00, 3.05135143099158118e+00, 3.05641654855574929e+00, 3.06139929119771284e+00, 3.06629927823417327e+00, 3.07111613504394281e+00, 3.07584949311023659e+00, 3.08049899006229595e+00, 3.08506426971633713e+00, 3.08954498211581974e+00, 3.09394078357102928e+00, 3.09825133669796836e+00, 3.10247631045655109e+00, 3.10661538018809540e+00, 3.11066822765210803e+00, 3.11463454106235709e+00, 3.11851401512222723e+00, 3.12230635105935233e+00, 3.12601125665952111e+00, 3.12962844629985072e+00, 3.13315764098122386e+00, 3.13659856835998480e+00, 3.13995096277888995e+00, 3.14321456529730863e+00, 3.14638912372066978e+00, 3.14947439262915065e+00, 3.15247013340560327e+00, 3.15537611426271503e+00, 3.15819211026939931e+00, 3.16091790337641274e+00, 3.16355328244119536e+00, 3.16609804325193021e+00, 3.16855198855081905e+00, 3.17091492805657098e+00, 3.17318667848610070e+00, 3.17536706357543346e+00, 3.17745591409981383e+00, 3.17945306789301538e+00, 3.18135836986584855e+00, 3.18317167202386431e+00, 3.18489283348425087e+00, 3.18652172049192133e+00, 3.18805820643478979e+00, 3.18950217185823401e+00, 3.19085350447874238e+00, 3.19211209919674349e+00, 3.19327785810861630e+00, 3.19435069051787945e+00, 3.19533051294555793e+00, 3.19621724913972586e+00, 3.19701083008422384e+00, 3.19771119400654986e+00, 3.19831828638492250e+00, 3.19883205995451546e+00, 3.19925247471286270e+00, 3.19957949792443317e+00, 3.19981310412437472e+00, 3.19995327512142660e+00, 3.20000000000000000e+00, 3.19995327512142660e+00, 3.19981310412437472e+00, 3.19957949792443317e+00, 3.19925247471286270e+00, 3.19883205995451546e+00, 3.19831828638492250e+00, 3.19771119400654986e+00, 3.19701083008422384e+00, 3.19621724913972586e+00, 3.19533051294555793e+00, 3.19435069051787945e+00, 3.19327785810861630e+00, 3.19211209919674349e+00, 3.19085350447874238e+00, 3.18950217185823401e+00, 3.18805820643478979e+00, 3.18652172049192133e+00, 3.18489283348425087e+00, 3.18317167202386431e+00, 3.18135836986584855e+00, 3.17945306789301538e+00, 3.17745591409981383e+00, 3.17536706357543346e+00, 3.17318667848610070e+00, 3.17091492805657098e+00, 3.16855198855081905e+00, 3.16609804325193021e+00, 3.16355328244119536e+00, 3.16091790337641274e+00, 3.15819211026939931e+00, 3.15537611426271503e+00, 3.15247013340560327e+00, 3.14947439262915065e+00, 3.14638912372066978e+00, 3.14321456529730863e+00, 3.13995096277888995e+00, 3.13659856835998480e+00, 3.13315764098122386e+00, 3.12962844629985072e+00, 3.12601125665952111e+00, 3.12230635105935233e+00, 3.11851401512222723e+00, 3.11463454106235709e+00, 3.11066822765210803e+00, 3.10661538018809540e+00, 3.10247631045655109e+00, 3.09825133669796836e+00, 3.09394078357102928e+00, 3.08954498211581974e+00, 3.08506426971633713e+00, 3.08049899006229595e+00, 3.07584949311023659e+00, 3.07111613504394281e+00, 3.06629927823417327e+00, 3.06139929119771284e+00, 3.05641654855574929e+00, 3.05135143099158118e+00, 3.04620432520766281e+00, 3.04097562388199221e+00, 3.03566572562384817e+00, 3.03027503492888252e+00, 3.02480396213357383e+00, 3.01925292336904886e+00, 3.01362234051427815e+00, 3.00791264114865230e+00, 3.00212425850394532e+00, 2.99625763141567200e+00, 2.99031320427384566e+00, 2.98429142697314345e+00, 2.97819275486248579e+00, 2.97201764869403716e+00, 2.96576657457163502e+00, 2.95944000389865433e+00, 2.95303841332531444e+00, 2.94656228469543601e+00, 2.94001210499265506e+00, 2.93338836628610160e+00, 2.92669156567555045e+00, 2.91992220523605156e+00, 2.91308079196204776e+00, 2.90616783771098731e+00, 2.89918385914643925e+00, 2.89212937768071919e+00, 2.88500491941703356e+00, 2.87781101509115013e+00, 2.87054820001260295e+00, 2.86321701400543958e+00, 2.85581800134851890e+00, 2.84835171071536763e+00, 2.84081869511360370e+00, 2.83321951182393492e+00, 2.82555472233874110e+00, 2.81782489230024820e+00, 2.81003059143830278e+00, 2.80217239350775542e+00, 2.79425087622546143e+00, 2.78626662120690767e+00, 2.77822021390247392e+00, 2.77011224353333762e+00, 2.76194330302703054e+00, 2.75371398895265633e+00, 2.74542490145577759e+00, 2.73707664419298134e+00, 2.72866982426613185e+00, 2.72020505215631962e+00, 2.71168294165751549e+00, 2.70310410980993895e+00, 2.69446917683314951e+00, 2.68577876605887028e+00, 2.67703350386355282e+00, 2.66823401960069225e+00, 2.65938094553290196e+00, 2.65047491676375678e+00, 2.64151657116941410e+00, 2.63250654933002180e+00, 2.62344549446092254e+00, 2.61433405234366337e+00, 2.60517287125682003e+00, 2.59596260190664529e+00, 2.58670389735755036e+00, 2.57739741296242902e+00, 2.56804380629283344e+00, 2.55864373706901118e+00, 2.54919786708981278e+00, 2.53970686016247901e+00, 2.53017138203231742e+00, 2.52059210031227734e+00, 2.51096968441243275e+00, 2.50130480546938238e+00, 2.49159813627557638e+00, 2.48185035120857891e+00, 2.47206212616027605e+00, 2.46223413846603828e+00, 2.45236706683384695e+00, 2.44246159127339412e+00, 2.43251839302516498e+00, 2.42253815448951223e+00, 2.41252155915573179e+00, 2.40246929153114901e+00, 2.39238203707022479e+00, 2.38226048210369084e+00, 2.37210531376772327e+00, 2.36191721993316382e+00, 2.35169688913479798e+00, 2.34144501050069906e+00, 2.33116227368164756e+00, 2.32084936878063486e+00, 2.31050698628246040e+00, 2.30013581698343152e+00, 2.28973655192117491e+00, 2.27930988230456881e+00, 2.26885649944380499e+00, 2.25837709468058944e+00, 2.24787235931849070e+00, 2.23734298455344489e+00, 2.22678966140442618e+00, 2.21621308064429159e+00, 2.20561393273080900e+00, 2.19499290773787708e+00, 2.18435069528694583e+00, 2.17368798447864654e+00, 2.16300546382463975e+00, 2.15230382117968974e+00, 2.14158374367397432e+00, 2.13084591764563819e+00, 2.12009102857359848e+00, 2.10931976101061085e+00, 2.09853279851660457e+00, 2.08773082359229470e+00, 2.07691451761307995e+00, 2.06608456076323409e+00, 2.05524163197039929e+00, 2.04438640884038946e+00, 2.03351956759231144e+00, 2.02264178299401233e+00, 2.01175372829786057e+00, 2.00085607517686885e+00, 1.98994949366116653e+00, 1.97903465207482935e+00, 1.96811221697307408e+00, 1.95718285307982570e+00, 1.94624722322566473e+00, 1.93530598828616201e+00, 1.92435980712060855e+00, 1.91340933651114757e+00, 1.90245523110231615e+00, 1.89149814334100358e+00, 1.88053872341683359e+00, 1.86957761920297741e+00, 1.85861547619740481e+00, 1.84765293746457973e+00, 1.83669064357760762e+00, 1.82572923256084099e+00, 1.81476933983294999e+00, 1.80381159815046446e+00, 1.79285663755179407e+00, 1.78190508530173294e+00, 1.77095756583645494e+00, 1.76001470070900619e+00, 1.74907710853530065e+00, 1.73814540494062507e+00, 1.72722020250665925e+00, 1.71630211071901741e+00, 1.70539173591531673e+00, 1.69448968123377859e+00, 1.68359654656236818e+00, 1.67271292848847821e+00, 1.66183942024916197e+00, 1.65097661168192125e+00, 1.64012508917605436e+00, 1.62928543562456950e+00, 1.61845823037666847e+00, 1.60764404919080586e+00, 1.59684346418832852e+00, 1.58605704380770024e+00, 1.57528535275931623e+00, 1.56452895198091215e+00, 1.55378839859357216e+00, 1.54306424585834048e+00, 1.53235704313344062e+00, 1.52166733583210685e+00, 1.51099566538103163e+00, 1.50034256917943348e+00, 1.48970858055874884e+00, 1.47909422874295200e+00, 1.46850003880950679e+00, 1.45792653165095362e+00, 1.44737422393713547e+00, 1.43684362807806615e+00, 1.42633525218744441e+00, 1.41584960004681677e+00, 1.40538717107039257e+00, 1.39494846027051401e+00, 1.38453395822378415e+00, 1.37414415103785585e+00, 1.36377952031888409e+00, 1.35344054313964451e+00, 1.34312769200832060e+00, 1.33284143483796187e+00, 1.32258223491661542e+00, 1.31235055087813301e+00, 1.30214683667365573e+00, 1.29197154154377828e+00, 1.28182510999139472e+00, 1.27170798175522745e+00, 1.26162059178404107e+00, 1.25156337021154272e+00, 1.24153674233197033e+00, 1.23154112857637005e+00, 1.22157694448956428e+00, 1.21164460070781123e+00, 1.20174450293715718e+00, 1.19187705193248225e+00, 1.18204264347724066e+00, 1.17224166836389594e+00, 1.16247451237505197e+00, 1.15274155626528013e+00, 1.14304317574364305e+00, 1.13337974145691528e+00, 1.12375161897350093e+00, 1.11415916876804851e+00, 1.10460274620676285e+00, 1.09508270153341397e+00, 1.08559937985604268e+00, 1.07615312113436260e+00, 1.06674426016785807e+00, 1.05737312658457747e+00, 1.04804004483062129e+00, 1.03874533416032418e+00, 1.02948930862713003e+00, 1.02027227707515934e+00, 1.01109454313146758e+00, 1.00195640519899351e+00, 9.92858156450196122e-01, 9.83800084821378915e-01, 9.74782473007699937e-01, 9.65805598458866090e-01, 9.56869733375510003e-01, 9.47975144706247705e-01, 9.39122094145415235e-01, 9.30310838131482212e-01, 9.21541627846140309e-01, 9.12814709214064469e-01, 9.04130322903344593e-01, 8.95488704326585356e-01, 8.86890083642671696e-01, 8.78334685759197425e-01, 8.69822730335554331e-01, 8.61354431786679025e-01, 8.52929999287454716e-01, 8.44549636777764979e-01, 8.36213542968196523e-01, 8.27921911346387833e-01, 8.19674930184020513e-01, 8.11472782544450020e-01, 8.03315646290972450e-01, 7.95203694095723871e-01, 7.87137093449208694e-01, 7.79116006670453418e-01, 7.71140590917782031e-01, 7.63210998200209270e-01, 7.55327375389447831e-01, 7.47489864232525564e-01, 7.39698601365008583e-01, 7.31953718324826157e-01, 7.24255341566693156e-01, 7.16603592477125737e-01, 7.08998587390045910e-01, 7.01440437602970497e-01, 6.93929249393779953e-01, 6.86465124038062441e-01, 6.79048157827028451e-01, 6.71678442085991207e-01, 6.64356063193408012e-01, 6.57081102600477623e-01, 6.49853636851288659e-01, 6.42673737603513990e-01, 6.35541471649645973e-01, 6.28456900938767342e-01, 6.21420082598852476e-01, 6.14431068959593717e-01, 6.07489907575747342e-01, 6.00596641250993709e-01, 5.93751308062306059e-01, 5.86953941384822382e-01, 5.80204569917214681e-01, 5.73503217707549927e-01, 5.66849904179636929e-01, 5.60244644159853278e-01, 5.53687447904446478e-01, 5.47178321127303314e-01, 5.40717265028181450e-01, 5.34304276321397201e-01, 5.27939347264963366e-01, 5.21622465690170951e-01, 5.15353615031608582e-01, 5.09132774357613327e-01, 5.02959918401146618e-01, 4.96835017591088920e-01, 4.90758038083946723e-01, 4.84728941795965419e-01, 4.78747686435641562e-01, 4.72814225536627961e-01, 4.66928508491025048e-01, 4.61090480583051866e-01, 4.55300083023090055e-01, 4.49557252982094095e-01, 4.43861923626361110e-01, 4.38214024152653428e-01, 4.32613479823667109e-01, 4.27060212003839602e-01, 4.21554138195489651e-01, 4.16095172075282548e-01, 4.10683223531013818e-01, 4.05318198698704347e-01, 4.00000000000000000e-01, 3.94728526179868684e-01, 3.89503672344587845e-01, 3.84325330000015320e-01, 3.79193387090136473e-01, 3.74107728035880504e-01, 3.69068233774198815e-01, 3.64074781797398286e-01, 3.59127246192722300e-01, 3.54225497682172357e-01, 3.49369403662563068e-01, 3.44558828245803348e-01, 3.39793632299396571e-01, 3.35073673487152486e-01, 3.30398806310103640e-01, 3.25768882147619076e-01, 3.21183749298708054e-01, 3.16643253023506535e-01, 3.12147235584939176e-01, 3.07695536290549562e-01, 3.03287991534491423e-01, 2.98924434839673556e-01, 2.94604696900051189e-01, 2.90328605623056540e-01, 2.86095986172161276e-01, 2.81906661009563653e-01, 2.77760449938993052e-01, 2.73657170148624692e-01, 2.69596636254097262e-01, 2.65578660341626260e-01, 2.61603052011205807e-01, 2.57669618419891750e-01, 2.53778164325158826e-01, 2.49928492128324752e-01, 2.46120401918034032e-01, 2.42353691513794367e-01, 2.38628156509558519e-01, 2.34943590317344518e-01, 2.31299784210887128e-01, 2.27696527369313494e-01, 2.24133606920835925e-01, 2.20610807986454782e-01, 2.17127913723664474e-01, 2.13684705370155593e-01, 2.10280962287506225e-01, 2.06916462004855529e-01, 2.03590980262552687e-01, 2.00304291055774364e-01, 1.97056166678103858e-01, 1.93846377765065124e-01, 1.90674693337604925e-01, 1.87540880845516377e-01, 1.84444706210797189e-01, 1.81385933870935951e-01, 1.78364326822119846e-01, 1.75379646662357203e-01, 1.72431653634508364e-01, 1.69520106669218357e-01, 1.66644763427744918e-01, 1.63805380344675457e-01, 1.61001712670526593e-01, 1.58233514514219938e-01, 1.55500538885427849e-01, 1.52802537736782921e-01, 1.50139262005945039e-01, 1.47510461657519852e-01, 1.44915885724822592e-01, 1.42355282351481202e-01, 1.39828398832872790e-01, 1.37334981657387497e-01, 1.34874776547513880e-01, 1.32447528500740016e-01, 1.30052981830264554e-01, 1.27690880205512001e-01, 1.25360966692446605e-01, 1.23062983793679239e-01, 1.20796673488361752e-01, 1.18561777271863314e-01, 1.16358036195223350e-01, 1.14185190904375704e-01, 1.12042981679138754e-01, 1.09931148471966241e-01, 1.07849430946453665e-01, 1.05797568515595141e-01, 1.03775300379785692e-01, 1.01782365564564000e-01, 9.98185029580907354e-02, 9.78834513483576219e-02, 9.59769494601224709e-02, 9.40987359915655034e-02, 9.22485496506623253e-02, 9.04261291912690056e-02, 8.86312134489147727e-02, 8.68635413762979174e-02, 8.51228520784805614e-02, 8.34088848477780249e-02, 8.17213791983385981e-02, 8.00600749004095954e-02, 7.84247120142856471e-02, 7.68150309239352568e-02, 7.52307723703017264e-02, 7.36716774842746316e-02, 7.21374878193281005e-02, 7.06279453838222306e-02, 6.91427926729640526e-02, 6.76817727004245297e-02, 6.62446290296081582e-02, 6.48311058045718134e-02, 6.34409477805895649e-02, 6.20739003543602640e-02, 6.07297095938547858e-02, 5.94081222677998881e-02, 5.81088858747957319e-02, 5.68317486720641852e-02, 5.55764597038251167e-02, 5.43427688292979654e-02, 5.31304267503259537e-02, 5.19391850386203939e-02, 5.07687961626226211e-02, 4.96190135139811657e-02, 4.84895914336418630e-02, 4.73802852375486808e-02, 4.62908512419531258e-02, 4.52210467883301774e-02, 4.41706302678987755e-02, 4.31393611457449778e-02, 4.21269999845459813e-02, 4.11333084678932883e-02, 4.01580494232133815e-02, 3.92009868442843559e-02, 3.82618859133470380e-02, 3.73405130228092093e-02, 3.64366357965416338e-02, 3.55500231107646715e-02, 3.46804451145243478e-02, 3.38276732497568287e-02, 3.29914802709403381e-02, 3.21716402643336377e-02, 3.13679286668002702e-02, 3.05801222842178564e-02, 2.98079993094718144e-02, 2.90513393400329559e-02, 2.83099233951184983e-02, 2.75835339324361129e-02, 2.68719548645107130e-02, 2.61749715745937709e-02, 2.54923709321550309e-02, 2.48239413079565744e-02, 2.41694725887092683e-02, 2.35287561913117168e-02, 2.29015850766719136e-02, 2.22877537631118758e-02, 2.16870583393556213e-02, 2.10992964771009320e-02, 2.05242674431754276e-02, 1.99617721112775524e-02, 1.94116129733031607e-02, 1.88735941502584641e-02, 1.83475214027601831e-02, 1.78332021411238266e-02, 1.73304454350410990e-02, 1.68390620228475140e-02, 1.63588643203813722e-02, 1.58896664294353358e-02, 1.54312841458019118e-02, 1.49835349669142313e-02, 1.45462380990835864e-02, 1.41192144643352658e-02, 1.37022867068443003e-02, 1.32952791989728076e-02, 1.28980180469106979e-02, 1.25103310959215748e-02, 1.21320479351957405e-02, 1.17629999023122844e-02, 1.14030200873123075e-02, 1.10519433363854053e-02, 1.07096062551716016e-02, 1.03758472116809974e-02, 1.00505063388334658e-02, 9.73342553662079490e-03, 9.42444847389374492e-03, 9.12342058977655796e-03, 8.83018909471152040e-03, 8.54460297113624674e-03, 8.26651297379641791e-03, 7.99577162969677124e-03, 7.73223323769320330e-03, 7.47575386772890949e-03, 7.22619135971754667e-03, 6.98340532207646614e-03, 6.74725712991312531e-03, 6.51760992286784607e-03, 6.29432860261614680e-03, 6.07727983003393346e-03, 5.86633202202889247e-03, 5.66135534804148479e-03, 5.46222172621899627e-03, 5.26880481926615450e-03, 5.08098002997587627e-03, 4.89862449644376304e-03, 4.72161708697001432e-03, 4.54983839465248011e-03, 4.38317073167462433e-03, 4.22149812329222076e-03, 4.06470630152265196e-03, 3.91268269854072927e-03, 3.76531643978499918e-03, 3.62249833677854737e-03, 3.48412087966835668e-03, 3.35007822948731958e-03, 3.22026621014304882e-03, 3.09458230013767232e-03, 2.97292562402283943e-03, 2.85519694359420625e-03, 2.74129864882970689e-03, 2.63113474857595596e-03, 2.52461086098716487e-03, 2.42163420372099103e-03, 2.32211358389577434e-03, 2.22595938781364964e-03, 2.13308357045405724e-03, 2.04339964474220603e-03, 1.95682267059707486e-03, 1.87326924376356815e-03, 1.79265748443347114e-03, 1.71490702565987816e-03, 1.63993900156979466e-03, 1.56767603537963973e-03, 1.49804222721840103e-03, 1.43096314176321812e-03, 1.36636579569219284e-03, 1.30417864495924788e-03, 1.24433157189587487e-03, 1.18675587214463373e-03, 1.13138424142928326e-03, 1.07815076216644088e-03, 1.02699088992368604e-03, 9.77841439729037039e-04, 9.30640572236745823e-04, 8.85327779754368423e-04, 8.41843872136081038e-04, 8.00130962547223052e-04, 7.60132453105058308e-04, 7.21793020400755071e-04, 6.85058600907593034e-04, 6.49876376280412640e-04, 6.16194758551327770e-04, 5.83963375226727598e-04, 5.53133054290597009e-04, 5.23655809119187603e-04, 4.95484823312072716e-04, 4.68574435444620360e-04, 4.42880123746917248e-04, 4.18358490714175374e-04, 3.94967247653649748e-04, 3.72665199173092016e-04, 3.51412227615759705e-04, 3.31169277446994815e-04, 3.11898339597378356e-04, 2.93562435767459274e-04, 2.76125602699046955e-04, 2.59552876418046254e-04, 2.43810276453802595e-04, 2.28864790039