//#define INVALID(v) (v.radius_equat_minor > v.radius_equat_major || v.radius_equat_major > v.radius_polar) static double form_volume(double radius_equat_minor, double radius_equat_major, double radius_polar) { return M_4PI_3*radius_equat_minor*radius_equat_major*radius_polar; } static void Fq(double q, double *F1, double *F2, double sld, double sld_solvent, double radius_equat_minor, double radius_equat_major, double radius_polar) { const double pa = square(radius_equat_minor/radius_equat_major) - 1.0; const double pc = square(radius_polar/radius_equat_major) - 1.0; // translate a point in [-1,1] to a point in [0, pi/2] const double zm = M_PI_4; const double zb = M_PI_4; double outer_sum_F1 = 0.0; double outer_sum_F2 = 0.0; for (int i=0;i