You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1619 lines
96 KiB
1619 lines
96 KiB
/*
|
|
* Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
* See packages/seacas/LICENSE for details
|
|
*/
|
|
|
|
#include <math.h> // for cos, sin
|
|
|
|
static double stheta, ctheta; /* sign and cosine of angle */
|
|
static double sphi, cphi; /* sign and cosine of angle */
|
|
static double sgamma, cgamma; /* squares of sign and cosine of angle */
|
|
static double onemcg; /* intermediate value */
|
|
|
|
static double a1, a2, a3; /* linear mapping coefficients */
|
|
static double b1, b2, b3; /* linear mapping coefficients */
|
|
static double c1, c2, c3; /* linear mapping coefficients */
|
|
|
|
static double a1t, a2t, a3t; /* theta first derivatives */
|
|
static double b1t, b2t, b3t; /* theta first derivatives */
|
|
static double c1t, c2t, c3t; /* theta first derivatives */
|
|
|
|
static double a1p, a2p, a3p; /* phi first derivatives */
|
|
static double b1p, b2p, b3p; /* phi first derivatives */
|
|
static double c1p, c2p, c3p; /* phi first derivatives */
|
|
|
|
static double a1g, a2g, a3g; /* gamma first derivatives */
|
|
static double b1g, b2g, b3g; /* gamma first derivatives */
|
|
static double c1g, c2g, c3g; /* gamma first derivatives */
|
|
|
|
static double a1tt, a2tt, a3tt; /* theta/theta second derivatives */
|
|
static double b1tt, b2tt, b3tt; /* theta/theta second derivatives */
|
|
static double c1tt, c2tt, c3tt; /* theta/theta second derivatives */
|
|
static double a1pp, a2pp, a3pp; /* phi/phi second derivatives */
|
|
static double b1pp, b2pp, b3pp; /* phi/phi second derivatives */
|
|
static double c1pp, c2pp, c3pp; /* phi/phi second derivatives */
|
|
static double a1gg, a2gg, a3gg; /* gamma/gamma second derivatives */
|
|
static double b1gg, b2gg, b3gg; /* gamma/gamma second derivatives */
|
|
static double c1gg, c2gg, c3gg; /* gamma/gamma second derivatives */
|
|
static double a1tp, a2tp, a3tp; /* theta/phi second derivatives */
|
|
static double b1tp, b2tp, b3tp; /* theta/phi second derivatives */
|
|
static double c1tp, c2tp, c3tp; /* theta/phi second derivatives */
|
|
static double a1tg, a2tg, a3tg; /* theta/gamma second derivatives */
|
|
static double b1tg, b2tg, b3tg; /* theta/gamma second derivatives */
|
|
static double c1tg, c2tg, c3tg; /* theta/gamma second derivatives */
|
|
static double a1pg, a2pg, a3pg; /* phi/gamma second derivatives */
|
|
static double b1pg, b2pg, b3pg; /* phi/gamma second derivatives */
|
|
static double c1pg, c2pg, c3pg; /* phi/gamma second derivatives */
|
|
|
|
static double cval; /* value of constraint equation */
|
|
static double cgrad[3]; /* grad of constraint equation */
|
|
|
|
static double grad0(double *coeffs);
|
|
static double grad1(double *coeffs);
|
|
static double grad2(double *coeffs);
|
|
|
|
static double hess00(double *coeffs);
|
|
static double hess11(double *coeffs);
|
|
static double hess22(double *coeffs);
|
|
static double hess01(double *coeffs);
|
|
static double hess02(double *coeffs);
|
|
static double hess12(double *coeffs);
|
|
|
|
double func3d(double coeffs[15], /* five different 4-way products */
|
|
double theta, double phi, double gamma2 /* angular parameters */
|
|
)
|
|
|
|
/* Returns value of penalty function at given angle. */
|
|
{
|
|
double val; /* functional value */
|
|
|
|
stheta = sin(theta);
|
|
ctheta = cos(theta);
|
|
sphi = sin(phi);
|
|
cphi = cos(phi);
|
|
sgamma = sin(gamma2);
|
|
cgamma = cos(gamma2);
|
|
onemcg = 1.0 - cgamma;
|
|
|
|
/* R <- R*cgamma + v(R.v)(1-cgamma) - (R x v)sgamma */
|
|
/*
|
|
|
|
vx = cphi*(ctheta*offset[0] + stheta*offset[1]) + sphi*offset[2];
|
|
|
|
vx *= onemcg;
|
|
|
|
pos[0] = cgamma*offset[0] +
|
|
cphi*ctheta*vx +
|
|
sgamma*(-sphi*offset[1] + cphi*stheta*offset[2]);
|
|
|
|
pos[1] = cgamma*offset[1] + cphi*stheta*vx +
|
|
sgamma*(sphi*offset[0] - cphi*ctheta*offset[2]);
|
|
|
|
pos[2] = cgamma*offset[2] +
|
|
sphi*vx +
|
|
sgamma*cphi*(-stheta*offset[0] + ctheta*offset[1]);
|
|
*/
|
|
|
|
a1 = cgamma + cphi * ctheta * onemcg * cphi * ctheta;
|
|
a2 = sgamma * sphi + cphi * stheta * onemcg * cphi * ctheta;
|
|
a3 = -sgamma * cphi * stheta + sphi * onemcg * cphi * ctheta;
|
|
|
|
b1 = -sgamma * sphi + cphi * ctheta * onemcg * cphi * stheta;
|
|
b2 = cgamma + cphi * stheta * onemcg * cphi * stheta;
|
|
b3 = sgamma * cphi * ctheta + sphi * onemcg * cphi * stheta;
|
|
|
|
c1 = sgamma * cphi * stheta + cphi * ctheta * onemcg * sphi;
|
|
c2 = -sgamma * cphi * ctheta + cphi * stheta * onemcg * sphi;
|
|
c3 = cgamma + sphi * onemcg * sphi;
|
|
|
|
val = (a1 * a1 * a1 * a1 + a2 * a2 * a2 * a2 + a3 * a3 * a3 * a3) * coeffs[0];
|
|
val += (b1 * b1 * b1 * b1 + b2 * b2 * b2 * b2 + b3 * b3 * b3 * b3) * coeffs[1];
|
|
val += (c1 * c1 * c1 * c1 + c2 * c2 * c2 * c2 + c3 * c3 * c3 * c3) * coeffs[2];
|
|
val += 4 * (a1 * a1 * a1 * b1 + a2 * a2 * a2 * b2 + a3 * a3 * a3 * b3) * coeffs[3];
|
|
val += 6 * (a1 * a1 * b1 * b1 + a2 * a2 * b2 * b2 + a3 * a3 * b3 * b3) * coeffs[4];
|
|
val += 4 * (a1 * b1 * b1 * b1 + a2 * b2 * b2 * b2 + a3 * b3 * b3 * b3) * coeffs[5];
|
|
val += 4 * (a1 * a1 * a1 * c1 + a2 * a2 * a2 * c2 + a3 * a3 * a3 * c3) * coeffs[6];
|
|
val += 6 * (a1 * a1 * c1 * c1 + a2 * a2 * c2 * c2 + a3 * a3 * c3 * c3) * coeffs[7];
|
|
val += 4 * (a1 * c1 * c1 * c1 + a2 * c2 * c2 * c2 + a3 * c3 * c3 * c3) * coeffs[8];
|
|
val += 4 * (b1 * b1 * b1 * c1 + b2 * b2 * b2 * c2 + b3 * b3 * b3 * c3) * coeffs[9];
|
|
val += 6 * (b1 * b1 * c1 * c1 + b2 * b2 * c2 * c2 + b3 * b3 * c3 * c3) * coeffs[10];
|
|
val += 4 * (b1 * c1 * c1 * c1 + b2 * c2 * c2 * c2 + b3 * c3 * c3 * c3) * coeffs[11];
|
|
val += 12 * (a1 * a1 * b1 * c1 + a2 * a2 * b2 * c2 + a3 * a3 * b3 * c3) * coeffs[12];
|
|
val += 12 * (a1 * b1 * b1 * c1 + a2 * b2 * b2 * c2 + a3 * b3 * b3 * c3) * coeffs[13];
|
|
val += 12 * (a1 * b1 * c1 * c1 + a2 * b2 * c2 * c2 + a3 * b3 * c3 * c3) * coeffs[14];
|
|
|
|
return (val);
|
|
}
|
|
|
|
void grad3d(double coeffs[15], /* five different 4-way products */
|
|
double grad[3], /* gradient returned */
|
|
double theta, double phi, double gamma2 /* angular parameters */
|
|
)
|
|
|
|
/* Returns 1st derivative of penalty function at given angle. */
|
|
{
|
|
|
|
stheta = sin(theta);
|
|
ctheta = cos(theta);
|
|
sphi = sin(phi);
|
|
cphi = cos(phi);
|
|
sgamma = sin(gamma2);
|
|
cgamma = cos(gamma2);
|
|
onemcg = 1.0 - cgamma;
|
|
|
|
a1 = cgamma + ctheta * ctheta * cphi * cphi * onemcg;
|
|
a2 = sphi * sgamma + stheta * ctheta * cphi * cphi * onemcg;
|
|
a3 = -stheta * cphi * sgamma + ctheta * sphi * cphi * onemcg;
|
|
|
|
b1 = -sphi * sgamma + stheta * ctheta * cphi * cphi * onemcg;
|
|
b2 = cgamma + stheta * stheta * cphi * cphi * onemcg;
|
|
b3 = ctheta * cphi * sgamma + stheta * sphi * cphi * onemcg;
|
|
|
|
c1 = stheta * cphi * sgamma + ctheta * cphi * sphi * onemcg;
|
|
c2 = -ctheta * cphi * sgamma + stheta * cphi * sphi * onemcg;
|
|
c3 = cgamma + sphi * sphi * onemcg;
|
|
|
|
/* Order = theta, phi, gamma. */
|
|
a1t = -2 * ctheta * stheta * cphi * cphi * onemcg;
|
|
a2t = (ctheta * ctheta - stheta * stheta) * cphi * cphi * onemcg;
|
|
a3t = -sgamma * cphi * ctheta - stheta * sphi * cphi * onemcg;
|
|
|
|
b1t = (ctheta * ctheta - stheta * stheta) * cphi * cphi * onemcg;
|
|
b2t = 2 * stheta * ctheta * cphi * cphi * onemcg;
|
|
b3t = -stheta * sgamma * cphi + ctheta * sphi * cphi * onemcg;
|
|
|
|
c1t = ctheta * sgamma * cphi - stheta * cphi * sphi * onemcg;
|
|
c2t = stheta * sgamma * cphi + ctheta * cphi * sphi * onemcg;
|
|
c3t = 0;
|
|
|
|
grad[0] = grad0(coeffs);
|
|
|
|
a1p = -2 * ctheta * ctheta * cphi * sphi * onemcg;
|
|
a2p = sgamma * cphi - 2 * cphi * sphi * stheta * ctheta * onemcg;
|
|
a3p = sgamma * sphi * stheta + (cphi * cphi - sphi * sphi) * ctheta * onemcg;
|
|
|
|
b1p = -sgamma * cphi - 2 * cphi * sphi * ctheta * stheta * onemcg;
|
|
b2p = -2 * cphi * sphi * stheta * stheta * onemcg;
|
|
b3p = -ctheta * sgamma * sphi + (cphi * cphi - sphi * sphi) * stheta * onemcg;
|
|
|
|
c1p = -stheta * sgamma * sphi + (cphi * cphi - sphi * sphi) * ctheta * onemcg;
|
|
c2p = ctheta * sgamma * sphi + (cphi * cphi - sphi * sphi) * stheta * onemcg;
|
|
c3p = 2 * sphi * cphi * onemcg;
|
|
|
|
grad[1] = grad1(coeffs);
|
|
|
|
a1g = -sgamma + ctheta * ctheta * cphi * cphi * sgamma;
|
|
a2g = cgamma * sphi + cphi * cphi * stheta * ctheta * sgamma;
|
|
a3g = -cgamma * cphi * stheta + cphi * sphi * ctheta * sgamma;
|
|
|
|
b1g = -cgamma * sphi + cphi * cphi * ctheta * stheta * sgamma;
|
|
b2g = -sgamma + cphi * cphi * stheta * stheta * sgamma;
|
|
b3g = ctheta * cgamma * cphi + sphi * cphi * stheta * sgamma;
|
|
|
|
c1g = stheta * cgamma * cphi + cphi * sphi * ctheta * sgamma;
|
|
c2g = -ctheta * cgamma * cphi + cphi * sphi * stheta * sgamma;
|
|
c3g = -sgamma + sphi * sphi * sgamma;
|
|
|
|
grad[2] = grad2(coeffs);
|
|
}
|
|
|
|
static double grad0(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = 4 * (a1t * a1 * a1 * a1 + a2t * a2 * a2 * a2 + a3t * a3 * a3 * a3) * coeffs[0];
|
|
val += 4 * (b1t * b1 * b1 * b1 + b2t * b2 * b2 * b2 + b3t * b3 * b3 * b3) * coeffs[1];
|
|
val += 4 * (c1t * c1 * c1 * c1 + c2t * c2 * c2 * c2 + c3t * c3 * c3 * c3) * coeffs[2];
|
|
val += (12 * (a1t * a1 * a1 * b1 + a2t * a2 * a2 * b2 + a3t * a3 * a3 * b3) +
|
|
4 * (a1 * a1 * a1 * b1t + a2 * a2 * a2 * b2t + a3 * a3 * a3 * b3t)) *
|
|
coeffs[3];
|
|
val += (12 * (a1t * a1 * b1 * b1 + a2t * a2 * b2 * b2 + a3t * a3 * b3 * b3) +
|
|
12 * (a1 * a1 * b1t * b1 + a2 * a2 * b2t * b2 + a3 * a3 * b3t * b3)) *
|
|
coeffs[4];
|
|
val += (4 * (a1t * b1 * b1 * b1 + a2t * b2 * b2 * b2 + a3t * b3 * b3 * b3) +
|
|
12 * (a1 * b1t * b1 * b1 + a2 * b2t * b2 * b2 + a3 * b3t * b3 * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1t * a1 * a1 * c1 + a2t * a2 * a2 * c2 + a3t * a3 * a3 * c3) +
|
|
4 * (a1 * a1 * a1 * c1t + a2 * a2 * a2 * c2t + a3 * a3 * a3 * c3t)) *
|
|
coeffs[6];
|
|
val += (12 * (a1t * a1 * c1 * c1 + a2t * a2 * c2 * c2 + a3t * a3 * c3 * c3) +
|
|
12 * (a1 * a1 * c1t * c1 + a2 * a2 * c2t * c2 + a3 * a3 * c3t * c3)) *
|
|
coeffs[7];
|
|
val += (4 * (a1t * c1 * c1 * c1 + a2t * c2 * c2 * c2 + a3t * c3 * c3 * c3) +
|
|
12 * (a1 * c1t * c1 * c1 + a2 * c2t * c2 * c2 + a3 * c3t * c3 * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1t * b1 * b1 * c1 + b2t * b2 * b2 * c2 + b3t * b3 * b3 * c3) +
|
|
4 * (b1 * b1 * b1 * c1t + b2 * b2 * b2 * c2t + b3 * b3 * b3 * c3t)) *
|
|
coeffs[9];
|
|
val += (12 * (b1t * b1 * c1 * c1 + b2t * b2 * c2 * c2 + b3t * b3 * c3 * c3) +
|
|
12 * (b1 * b1 * c1t * c1 + b2 * b2 * c2t * c2 + b3 * b3 * c3t * c3)) *
|
|
coeffs[10];
|
|
val += (4 * (b1t * c1 * c1 * c1 + b2t * c2 * c2 * c2 + b3t * c3 * c3 * c3) +
|
|
12 * (b1 * c1t * c1 * c1 + b2 * c2t * c2 * c2 + b3 * c3t * c3 * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1t * a1 * b1 * c1 + a2t * a2 * b2 * c2 + a3t * a3 * b3 * c3) +
|
|
12 * (a1 * a1 * b1t * c1 + a2 * a2 * b2t * c2 + a3 * a3 * b3t * c3) +
|
|
12 * (a1 * a1 * b1 * c1t + a2 * a2 * b2 * c2t + a3 * a3 * b3 * c3t)) *
|
|
coeffs[12];
|
|
val += (12 * (a1t * b1 * b1 * c1 + a2t * b2 * b2 * c2 + a3t * b3 * b3 * c3) +
|
|
24 * (a1 * b1t * b1 * c1 + a2 * b2t * b2 * c2 + a3 * b3t * b3 * c3) +
|
|
12 * (a1 * b1 * b1 * c1t + a2 * b2 * b2 * c2t + a3 * b3 * b3 * c3t)) *
|
|
coeffs[13];
|
|
val += (12 * (a1t * b1 * c1 * c1 + a2t * b2 * c2 * c2 + a3t * b3 * c3 * c3) +
|
|
12 * (a1 * b1t * c1 * c1 + a2 * b2t * c2 * c2 + a3 * b3t * c3 * c3) +
|
|
24 * (a1 * b1 * c1t * c1 + a2 * b2 * c2t * c2 + a3 * b3 * c3t * c3)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
static double grad1(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = 4 * (a1p * a1 * a1 * a1 + a2p * a2 * a2 * a2 + a3p * a3 * a3 * a3) * coeffs[0];
|
|
val += 4 * (b1p * b1 * b1 * b1 + b2p * b2 * b2 * b2 + b3p * b3 * b3 * b3) * coeffs[1];
|
|
val += 4 * (c1p * c1 * c1 * c1 + c2p * c2 * c2 * c2 + c3p * c3 * c3 * c3) * coeffs[2];
|
|
val += (12 * (a1p * a1 * a1 * b1 + a2p * a2 * a2 * b2 + a3p * a3 * a3 * b3) +
|
|
4 * (a1 * a1 * a1 * b1p + a2 * a2 * a2 * b2p + a3 * a3 * a3 * b3p)) *
|
|
coeffs[3];
|
|
val += (12 * (a1p * a1 * b1 * b1 + a2p * a2 * b2 * b2 + a3p * a3 * b3 * b3) +
|
|
12 * (a1 * a1 * b1p * b1 + a2 * a2 * b2p * b2 + a3 * a3 * b3p * b3)) *
|
|
coeffs[4];
|
|
val += (4 * (a1p * b1 * b1 * b1 + a2p * b2 * b2 * b2 + a3p * b3 * b3 * b3) +
|
|
12 * (a1 * b1p * b1 * b1 + a2 * b2p * b2 * b2 + a3 * b3p * b3 * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1p * a1 * a1 * c1 + a2p * a2 * a2 * c2 + a3p * a3 * a3 * c3) +
|
|
4 * (a1 * a1 * a1 * c1p + a2 * a2 * a2 * c2p + a3 * a3 * a3 * c3p)) *
|
|
coeffs[6];
|
|
val += (12 * (a1p * a1 * c1 * c1 + a2p * a2 * c2 * c2 + a3p * a3 * c3 * c3) +
|
|
12 * (a1 * a1 * c1p * c1 + a2 * a2 * c2p * c2 + a3 * a3 * c3p * c3)) *
|
|
coeffs[7];
|
|
val += (4 * (a1p * c1 * c1 * c1 + a2p * c2 * c2 * c2 + a3p * c3 * c3 * c3) +
|
|
12 * (a1 * c1p * c1 * c1 + a2 * c2p * c2 * c2 + a3 * c3p * c3 * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1p * b1 * b1 * c1 + b2p * b2 * b2 * c2 + b3p * b3 * b3 * c3) +
|
|
4 * (b1 * b1 * b1 * c1p + b2 * b2 * b2 * c2p + b3 * b3 * b3 * c3p)) *
|
|
coeffs[9];
|
|
val += (12 * (b1p * b1 * c1 * c1 + b2p * b2 * c2 * c2 + b3p * b3 * c3 * c3) +
|
|
12 * (b1 * b1 * c1p * c1 + b2 * b2 * c2p * c2 + b3 * b3 * c3p * c3)) *
|
|
coeffs[10];
|
|
val += (4 * (b1p * c1 * c1 * c1 + b2p * c2 * c2 * c2 + b3p * c3 * c3 * c3) +
|
|
12 * (b1 * c1p * c1 * c1 + b2 * c2p * c2 * c2 + b3 * c3p * c3 * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1p * a1 * b1 * c1 + a2p * a2 * b2 * c2 + a3p * a3 * b3 * c3) +
|
|
12 * (a1 * a1 * b1p * c1 + a2 * a2 * b2p * c2 + a3 * a3 * b3p * c3) +
|
|
12 * (a1 * a1 * b1 * c1p + a2 * a2 * b2 * c2p + a3 * a3 * b3 * c3p)) *
|
|
coeffs[12];
|
|
val += (12 * (a1p * b1 * b1 * c1 + a2p * b2 * b2 * c2 + a3p * b3 * b3 * c3) +
|
|
24 * (a1 * b1p * b1 * c1 + a2 * b2p * b2 * c2 + a3 * b3p * b3 * c3) +
|
|
12 * (a1 * b1 * b1 * c1p + a2 * b2 * b2 * c2p + a3 * b3 * b3 * c3p)) *
|
|
coeffs[13];
|
|
val += (12 * (a1p * b1 * c1 * c1 + a2p * b2 * c2 * c2 + a3p * b3 * c3 * c3) +
|
|
12 * (a1 * b1p * c1 * c1 + a2 * b2p * c2 * c2 + a3 * b3p * c3 * c3) +
|
|
24 * (a1 * b1 * c1p * c1 + a2 * b2 * c2p * c2 + a3 * b3 * c3p * c3)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
static double grad2(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = 4 * (a1g * a1 * a1 * a1 + a2g * a2 * a2 * a2 + a3g * a3 * a3 * a3) * coeffs[0];
|
|
val += 4 * (b1g * b1 * b1 * b1 + b2g * b2 * b2 * b2 + b3g * b3 * b3 * b3) * coeffs[1];
|
|
val += 4 * (c1g * c1 * c1 * c1 + c2g * c2 * c2 * c2 + c3g * c3 * c3 * c3) * coeffs[2];
|
|
val += (12 * (a1g * a1 * a1 * b1 + a2g * a2 * a2 * b2 + a3g * a3 * a3 * b3) +
|
|
4 * (a1 * a1 * a1 * b1g + a2 * a2 * a2 * b2g + a3 * a3 * a3 * b3g)) *
|
|
coeffs[3];
|
|
val += (12 * (a1g * a1 * b1 * b1 + a2g * a2 * b2 * b2 + a3g * a3 * b3 * b3) +
|
|
12 * (a1 * a1 * b1g * b1 + a2 * a2 * b2g * b2 + a3 * a3 * b3g * b3)) *
|
|
coeffs[4];
|
|
val += (4 * (a1g * b1 * b1 * b1 + a2g * b2 * b2 * b2 + a3g * b3 * b3 * b3) +
|
|
12 * (a1 * b1g * b1 * b1 + a2 * b2g * b2 * b2 + a3 * b3g * b3 * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1g * a1 * a1 * c1 + a2g * a2 * a2 * c2 + a3g * a3 * a3 * c3) +
|
|
4 * (a1 * a1 * a1 * c1g + a2 * a2 * a2 * c2g + a3 * a3 * a3 * c3g)) *
|
|
coeffs[6];
|
|
val += (12 * (a1g * a1 * c1 * c1 + a2g * a2 * c2 * c2 + a3g * a3 * c3 * c3) +
|
|
12 * (a1 * a1 * c1g * c1 + a2 * a2 * c2g * c2 + a3 * a3 * c3g * c3)) *
|
|
coeffs[7];
|
|
val += (4 * (a1g * c1 * c1 * c1 + a2g * c2 * c2 * c2 + a3g * c3 * c3 * c3) +
|
|
12 * (a1 * c1g * c1 * c1 + a2 * c2g * c2 * c2 + a3 * c3g * c3 * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1g * b1 * b1 * c1 + b2g * b2 * b2 * c2 + b3g * b3 * b3 * c3) +
|
|
4 * (b1 * b1 * b1 * c1g + b2 * b2 * b2 * c2g + b3 * b3 * b3 * c3g)) *
|
|
coeffs[9];
|
|
val += (12 * (b1g * b1 * c1 * c1 + b2g * b2 * c2 * c2 + b3g * b3 * c3 * c3) +
|
|
12 * (b1 * b1 * c1g * c1 + b2 * b2 * c2g * c2 + b3 * b3 * c3g * c3)) *
|
|
coeffs[10];
|
|
val += (4 * (b1g * c1 * c1 * c1 + b2g * c2 * c2 * c2 + b3g * c3 * c3 * c3) +
|
|
12 * (b1 * c1g * c1 * c1 + b2 * c2g * c2 * c2 + b3 * c3g * c3 * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1g * a1 * b1 * c1 + a2g * a2 * b2 * c2 + a3g * a3 * b3 * c3) +
|
|
12 * (a1 * a1 * b1g * c1 + a2 * a2 * b2g * c2 + a3 * a3 * b3g * c3) +
|
|
12 * (a1 * a1 * b1 * c1g + a2 * a2 * b2 * c2g + a3 * a3 * b3 * c3g)) *
|
|
coeffs[12];
|
|
val += (12 * (a1g * b1 * b1 * c1 + a2g * b2 * b2 * c2 + a3g * b3 * b3 * c3) +
|
|
24 * (a1 * b1g * b1 * c1 + a2 * b2g * b2 * c2 + a3 * b3g * b3 * c3) +
|
|
12 * (a1 * b1 * b1 * c1g + a2 * b2 * b2 * c2g + a3 * b3 * b3 * c3g)) *
|
|
coeffs[13];
|
|
val += (12 * (a1g * b1 * c1 * c1 + a2g * b2 * c2 * c2 + a3g * b3 * c3 * c3) +
|
|
12 * (a1 * b1g * c1 * c1 + a2 * b2g * c2 * c2 + a3 * b3g * c3 * c3) +
|
|
24 * (a1 * b1 * c1g * c1 + a2 * b2 * c2g * c2 + a3 * b3 * c3g * c3)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
void hess3d(double coeffs[15], /* five different 4-way products */
|
|
double hess[3][3] /* Hessian returned */
|
|
)
|
|
|
|
/* Returns 2nd derivative of penalty function at given angle. */
|
|
{
|
|
|
|
a1tt = -2 * (ctheta * ctheta - stheta * stheta) * cphi * cphi * onemcg;
|
|
a2tt = -4 * ctheta * stheta * cphi * cphi * onemcg;
|
|
a3tt = stheta * sgamma * cphi - ctheta * sphi * cphi * onemcg;
|
|
|
|
b1tt = -4 * ctheta * stheta * cphi * cphi * onemcg;
|
|
b2tt = 2 * (ctheta * ctheta - stheta * stheta) * cphi * cphi * onemcg;
|
|
b3tt = -ctheta * sgamma * cphi - stheta * sphi * cphi * onemcg;
|
|
|
|
c1tt = -stheta * sgamma * cphi - ctheta * cphi * sphi * onemcg;
|
|
c2tt = ctheta * sgamma * cphi - stheta * cphi * sphi * onemcg;
|
|
c3tt = 0;
|
|
|
|
a1tp = 4 * ctheta * stheta * cphi * sphi * onemcg;
|
|
a2tp = -2 * (ctheta * ctheta - stheta * stheta) * cphi * sphi * onemcg;
|
|
a3tp = sgamma * sphi * ctheta - stheta * (cphi * cphi - sphi * sphi) * onemcg;
|
|
|
|
b1tp = -2 * (ctheta * ctheta - stheta * stheta) * cphi * sphi * onemcg;
|
|
b2tp = -4 * stheta * ctheta * cphi * sphi * onemcg;
|
|
b3tp = stheta * sgamma * sphi + ctheta * (cphi * cphi - sphi * sphi) * onemcg;
|
|
|
|
c1tp = -ctheta * sgamma * sphi - stheta * (cphi * cphi - sphi * sphi) * onemcg;
|
|
c2tp = -stheta * sgamma * sphi + ctheta * (cphi * cphi - sphi * sphi) * onemcg;
|
|
c3tp = 0;
|
|
|
|
a1tg = -2 * ctheta * stheta * cphi * cphi * sgamma;
|
|
a2tg = (ctheta * ctheta - stheta * stheta) * cphi * cphi * sgamma;
|
|
a3tg = -cgamma * cphi * ctheta - stheta * sphi * cphi * sgamma;
|
|
|
|
b1tg = (ctheta * ctheta - stheta * stheta) * cphi * cphi * sgamma;
|
|
b2tg = 2 * stheta * ctheta * cphi * cphi * sgamma;
|
|
b3tg = -stheta * cgamma * cphi + ctheta * sphi * cphi * sgamma;
|
|
|
|
c1tg = ctheta * cgamma * cphi - stheta * cphi * sphi * sgamma;
|
|
c2tg = stheta * cgamma * cphi + ctheta * cphi * sphi * sgamma;
|
|
c3tg = 0;
|
|
|
|
a1pp = -2 * ctheta * ctheta * (cphi * cphi - sphi * sphi) * onemcg;
|
|
a2pp = -sgamma * sphi - 2 * (cphi * cphi - sphi * sphi) * stheta * ctheta * onemcg;
|
|
a3pp = sgamma * cphi * stheta - 4 * cphi * sphi * ctheta * onemcg;
|
|
|
|
b1pp = sgamma * sphi - 2 * (cphi * cphi - sphi * sphi) * ctheta * stheta * onemcg;
|
|
b2pp = -2 * (cphi * cphi - sphi * sphi) * stheta * stheta * onemcg;
|
|
b3pp = -ctheta * sgamma * cphi - 4 * cphi * sphi * stheta * onemcg;
|
|
|
|
c1pp = -stheta * sgamma * cphi - 4 * cphi * sphi * ctheta * onemcg;
|
|
c2pp = ctheta * sgamma * cphi - 4 * cphi * sphi * stheta * onemcg;
|
|
c3pp = 2 * (cphi * cphi - sphi * sphi) * onemcg;
|
|
|
|
a1pg = -2 * ctheta * ctheta * cphi * sphi * sgamma;
|
|
a2pg = cgamma * cphi - 2 * cphi * sphi * stheta * ctheta * sgamma;
|
|
a3pg = cgamma * sphi * stheta + (cphi * cphi - sphi * sphi) * ctheta * sgamma;
|
|
|
|
b1pg = -cgamma * cphi - 2 * cphi * sphi * ctheta * stheta * sgamma;
|
|
b2pg = -2 * cphi * sphi * stheta * stheta * sgamma;
|
|
b3pg = -ctheta * cgamma * sphi + (cphi * cphi - sphi * sphi) * stheta * sgamma;
|
|
|
|
c1pg = -stheta * cgamma * sphi + (cphi * cphi - sphi * sphi) * ctheta * sgamma;
|
|
c2pg = ctheta * cgamma * sphi + (cphi * cphi - sphi * sphi) * stheta * sgamma;
|
|
c3pg = 2 * sphi * cphi * sgamma;
|
|
|
|
a1gg = -cgamma + ctheta * ctheta * cphi * cphi * cgamma;
|
|
a2gg = -sgamma * sphi + cphi * cphi * stheta * ctheta * cgamma;
|
|
a3gg = sgamma * cphi * stheta + cphi * sphi * ctheta * cgamma;
|
|
|
|
b1gg = sgamma * sphi + cphi * cphi * ctheta * stheta * cgamma;
|
|
b2gg = -cgamma + cphi * cphi * stheta * stheta * cgamma;
|
|
b3gg = -ctheta * sgamma * cphi + sphi * cphi * stheta * cgamma;
|
|
|
|
c1gg = -stheta * sgamma * cphi + cphi * sphi * ctheta * cgamma;
|
|
c2gg = ctheta * sgamma * cphi + cphi * sphi * stheta * cgamma;
|
|
c3gg = -cgamma + sphi * sphi * cgamma;
|
|
|
|
hess[0][0] = hess00(coeffs);
|
|
hess[1][1] = hess11(coeffs);
|
|
hess[2][2] = hess22(coeffs);
|
|
hess[0][1] = hess[1][0] = hess01(coeffs);
|
|
hess[0][2] = hess[2][0] = hess02(coeffs);
|
|
hess[1][2] = hess[2][1] = hess12(coeffs);
|
|
}
|
|
|
|
static double hess00(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = (4 * (a1tt * a1 * a1 * a1 + a2tt * a2 * a2 * a2 + a3tt * a3 * a3 * a3) +
|
|
12 * (a1t * a1t * a1 * a1 + a2t * a2t * a2 * a2 + a3t * a3t * a3 * a3)) *
|
|
coeffs[0];
|
|
val += (4 * (b1tt * b1 * b1 * b1 + b2tt * b2 * b2 * b2 + b3tt * b3 * b3 * b3) +
|
|
12 * (b1t * b1t * b1 * b1 + b2t * b2t * b2 * b2 + b3t * b3t * b3 * b3)) *
|
|
coeffs[1];
|
|
val += (4 * (c1tt * c1 * c1 * c1 + c2tt * c2 * c2 * c2 + c3tt * c3 * c3 * c3) +
|
|
12 * (c1t * c1t * c1 * c1 + c2t * c2t * c2 * c2 + c3t * c3t * c3 * c3)) *
|
|
coeffs[2];
|
|
val += (12 * (a1tt * a1 * a1 * b1 + a2tt * a2 * a2 * b2 + a3tt * a3 * a3 * b3) +
|
|
24 * (a1t * a1t * a1 * b1 + a2t * a2t * a2 * b2 + a3t * a3t * a3 * b3) +
|
|
24 * (a1t * a1 * a1 * b1t + a2t * a2 * a2 * b2t + a3t * a3 * a3 * b3t) +
|
|
4 * (a1 * a1 * a1 * b1tt + a2 * a2 * a2 * b2tt + a3 * a3 * a3 * b3tt)) *
|
|
coeffs[3];
|
|
val += (12 * (a1tt * a1 * b1 * b1 + a2tt * a2 * b2 * b2 + a3tt * a3 * b3 * b3) +
|
|
12 * (a1t * a1t * b1 * b1 + a2t * a2t * b2 * b2 + a3t * a3t * b3 * b3) +
|
|
48 * (a1t * a1 * b1t * b1 + a2t * a2 * b2t * b2 + a3t * a3 * b3t * b3) +
|
|
12 * (a1 * a1 * b1tt * b1 + a2 * a2 * b2tt * b2 + a3 * a3 * b3tt * b3) +
|
|
12 * (a1 * a1 * b1t * b1t + a2 * a2 * b2t * b2t + a3 * a3 * b3t * b3t)) *
|
|
coeffs[4];
|
|
val += (4 * (a1tt * b1 * b1 * b1 + a2tt * b2 * b2 * b2 + a3tt * b3 * b3 * b3) +
|
|
24 * (a1t * b1t * b1 * b1 + a2t * b2t * b2 * b2 + a3t * b3t * b3 * b3) +
|
|
12 * (a1 * b1tt * b1 * b1 + a2 * b2tt * b2 * b2 + a3 * b3tt * b3 * b3) +
|
|
24 * (a1 * b1t * b1t * b1 + a2 * b2t * b2t * b2 + a3 * b3t * b3t * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1tt * a1 * a1 * c1 + a2tt * a2 * a2 * c2 + a3tt * a3 * a3 * c3) +
|
|
24 * (a1t * a1t * a1 * c1 + a2t * a2t * a2 * c2 + a3t * a3t * a3 * c3) +
|
|
24 * (a1t * a1 * a1 * c1t + a2t * a2 * a2 * c2t + a3t * a3 * a3 * c3t) +
|
|
4 * (a1 * a1 * a1 * c1tt + a2 * a2 * a2 * c2tt + a3 * a3 * a3 * c3tt)) *
|
|
coeffs[6];
|
|
val += (12 * (a1tt * a1 * c1 * c1 + a2tt * a2 * c2 * c2 + a3tt * a3 * c3 * c3) +
|
|
12 * (a1t * a1t * c1 * c1 + a2t * a2t * c2 * c2 + a3t * a3t * c3 * c3) +
|
|
48 * (a1t * a1 * c1t * c1 + a2t * a2 * c2t * c2 + a3t * a3 * c3t * c3) +
|
|
12 * (a1 * a1 * c1tt * c1 + a2 * a2 * c2tt * c2 + a3 * a3 * c3tt * c3) +
|
|
12 * (a1 * a1 * c1t * c1t + a2 * a2 * c2t * c2t + a3 * a3 * c3t * c3t)) *
|
|
coeffs[7];
|
|
val += (4 * (a1tt * c1 * c1 * c1 + a2tt * c2 * c2 * c2 + a3tt * c3 * c3 * c3) +
|
|
24 * (a1t * c1t * c1 * c1 + a2t * c2t * c2 * c2 + a3t * c3t * c3 * c3) +
|
|
12 * (a1 * c1tt * c1 * c1 + a2 * c2tt * c2 * c2 + a3 * c3tt * c3 * c3) +
|
|
24 * (a1 * c1t * c1t * c1 + a2 * c2t * c2t * c2 + a3 * c3t * c3t * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1tt * b1 * b1 * c1 + b2tt * b2 * b2 * c2 + b3tt * b3 * b3 * c3) +
|
|
24 * (b1t * b1t * b1 * c1 + b2t * b2t * b2 * c2 + b3t * b3t * b3 * c3) +
|
|
24 * (b1t * b1 * b1 * c1t + b2t * b2 * b2 * c2t + b3t * b3 * b3 * c3t) +
|
|
4 * (b1 * b1 * b1 * c1tt + b2 * b2 * b2 * c2tt + b3 * b3 * b3 * c3tt)) *
|
|
coeffs[9];
|
|
val += (12 * (b1tt * b1 * c1 * c1 + b2tt * b2 * c2 * c2 + b3tt * b3 * c3 * c3) +
|
|
12 * (b1t * b1t * c1 * c1 + b2t * b2t * c2 * c2 + b3t * b3t * c3 * c3) +
|
|
48 * (b1t * b1 * c1t * c1 + b2t * b2 * c2t * c2 + b3t * b3 * c3t * c3) +
|
|
12 * (b1 * b1 * c1tt * c1 + b2 * b2 * c2tt * c2 + b3 * b3 * c3tt * c3) +
|
|
12 * (b1 * b1 * c1t * c1t + b2 * b2 * c2t * c2t + b3 * b3 * c3t * c3t)) *
|
|
coeffs[10];
|
|
val += (4 * (b1tt * c1 * c1 * c1 + b2tt * c2 * c2 * c2 + b3tt * c3 * c3 * c3) +
|
|
24 * (b1t * c1t * c1 * c1 + b2t * c2t * c2 * c2 + b3t * c3t * c3 * c3) +
|
|
12 * (b1 * c1tt * c1 * c1 + b2 * c2tt * c2 * c2 + b3 * c3tt * c3 * c3) +
|
|
24 * (b1 * c1t * c1t * c1 + b2 * c2t * c2t * c2 + b3 * c3t * c3t * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1tt * a1 * b1 * c1 + a2tt * a2 * b2 * c2 + a3tt * a3 * b3 * c3) +
|
|
24 * (a1t * a1t * b1 * c1 + a2t * a2t * b2 * c2 + a3t * a3t * b3 * c3) +
|
|
48 * (a1t * a1 * b1t * c1 + a2t * a2 * b2t * c2 + a3t * a3 * b3t * c3) +
|
|
48 * (a1t * a1 * b1 * c1t + a2t * a2 * b2 * c2t + a3t * a3 * b3 * c3t) +
|
|
12 * (a1 * a1 * b1tt * c1 + a2 * a2 * b2tt * c2 + a3 * a3 * b3tt * c3) +
|
|
24 * (a1 * a1 * b1t * c1t + a2 * a2 * b2t * c2t + a3 * a3 * b3t * c3t) +
|
|
12 * (a1 * a1 * b1 * c1tt + a2 * a2 * b2 * c2tt + a3 * a3 * b3 * c3tt)) *
|
|
coeffs[12];
|
|
val += (12 * (a1tt * b1 * b1 * c1 + a2tt * b2 * b2 * c2 + a3tt * b3 * b3 * c3) +
|
|
48 * (a1t * b1t * b1 * c1 + a2t * b2t * b2 * c2 + a3t * b3t * b3 * c3) +
|
|
24 * (a1t * b1 * b1 * c1t + a2t * b2 * b2 * c2t + a3t * b3 * b3 * c3t) +
|
|
24 * (a1 * b1tt * b1 * c1 + a2 * b2tt * b2 * c2 + a3 * b3tt * b3 * c3) +
|
|
24 * (a1 * b1t * b1t * c1 + a2 * b2t * b2t * c2 + a3 * b3t * b3t * c3) +
|
|
48 * (a1 * b1t * b1 * c1t + a2 * b2t * b2 * c2t + a3 * b3t * b3 * c3t) +
|
|
12 * (a1 * b1 * b1 * c1tt + a2 * b2 * b2 * c2tt + a3 * b3 * b3 * c3tt)) *
|
|
coeffs[13];
|
|
val += (12 * (a1tt * b1 * c1 * c1 + a2tt * b2 * c2 * c2 + a3tt * b3 * c3 * c3) +
|
|
24 * (a1t * b1t * c1 * c1 + a2t * b2t * c2 * c2 + a3t * b3t * c3 * c3) +
|
|
48 * (a1t * b1 * c1t * c1 + a2t * b2 * c2t * c2 + a3t * b3 * c3t * c3) +
|
|
12 * (a1 * b1tt * c1 * c1 + a2 * b2tt * c2 * c2 + a3 * b3tt * c3 * c3) +
|
|
48 * (a1 * b1t * c1t * c1 + a2 * b2t * c2t * c2 + a3 * b3t * c3t * c3) +
|
|
24 * (a1 * b1 * c1tt * c1 + a2 * b2 * c2tt * c2 + a3 * b3 * c3tt * c3) +
|
|
24 * (a1 * b1 * c1t * c1t + a2 * b2 * c2t * c2t + a3 * b3 * c3t * c3t)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
static double hess11(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = (4 * (a1pp * a1 * a1 * a1 + a2pp * a2 * a2 * a2 + a3pp * a3 * a3 * a3) +
|
|
12 * (a1p * a1p * a1 * a1 + a2p * a2p * a2 * a2 + a3p * a3p * a3 * a3)) *
|
|
coeffs[0];
|
|
val += (4 * (b1pp * b1 * b1 * b1 + b2pp * b2 * b2 * b2 + b3pp * b3 * b3 * b3) +
|
|
12 * (b1p * b1p * b1 * b1 + b2p * b2p * b2 * b2 + b3p * b3p * b3 * b3)) *
|
|
coeffs[1];
|
|
val += (4 * (c1pp * c1 * c1 * c1 + c2pp * c2 * c2 * c2 + c3pp * c3 * c3 * c3) +
|
|
12 * (c1p * c1p * c1 * c1 + c2p * c2p * c2 * c2 + c3p * c3p * c3 * c3)) *
|
|
coeffs[2];
|
|
val += (12 * (a1pp * a1 * a1 * b1 + a2pp * a2 * a2 * b2 + a3pp * a3 * a3 * b3) +
|
|
24 * (a1p * a1p * a1 * b1 + a2p * a2p * a2 * b2 + a3p * a3p * a3 * b3) +
|
|
24 * (a1p * a1 * a1 * b1p + a2p * a2 * a2 * b2p + a3p * a3 * a3 * b3p) +
|
|
4 * (a1 * a1 * a1 * b1pp + a2 * a2 * a2 * b2pp + a3 * a3 * a3 * b3pp)) *
|
|
coeffs[3];
|
|
val += (12 * (a1pp * a1 * b1 * b1 + a2pp * a2 * b2 * b2 + a3pp * a3 * b3 * b3) +
|
|
12 * (a1p * a1p * b1 * b1 + a2p * a2p * b2 * b2 + a3p * a3p * b3 * b3) +
|
|
48 * (a1p * a1 * b1p * b1 + a2p * a2 * b2p * b2 + a3p * a3 * b3p * b3) +
|
|
12 * (a1 * a1 * b1pp * b1 + a2 * a2 * b2pp * b2 + a3 * a3 * b3pp * b3) +
|
|
12 * (a1 * a1 * b1p * b1p + a2 * a2 * b2p * b2p + a3 * a3 * b3p * b3p)) *
|
|
coeffs[4];
|
|
val += (4 * (a1pp * b1 * b1 * b1 + a2pp * b2 * b2 * b2 + a3pp * b3 * b3 * b3) +
|
|
24 * (a1p * b1p * b1 * b1 + a2p * b2p * b2 * b2 + a3p * b3p * b3 * b3) +
|
|
12 * (a1 * b1pp * b1 * b1 + a2 * b2pp * b2 * b2 + a3 * b3pp * b3 * b3) +
|
|
24 * (a1 * b1p * b1p * b1 + a2 * b2p * b2p * b2 + a3 * b3p * b3p * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1pp * a1 * a1 * c1 + a2pp * a2 * a2 * c2 + a3pp * a3 * a3 * c3) +
|
|
24 * (a1p * a1p * a1 * c1 + a2p * a2p * a2 * c2 + a3p * a3p * a3 * c3) +
|
|
24 * (a1p * a1 * a1 * c1p + a2p * a2 * a2 * c2p + a3p * a3 * a3 * c3p) +
|
|
4 * (a1 * a1 * a1 * c1pp + a2 * a2 * a2 * c2pp + a3 * a3 * a3 * c3pp)) *
|
|
coeffs[6];
|
|
val += (12 * (a1pp * a1 * c1 * c1 + a2pp * a2 * c2 * c2 + a3pp * a3 * c3 * c3) +
|
|
12 * (a1p * a1p * c1 * c1 + a2p * a2p * c2 * c2 + a3p * a3p * c3 * c3) +
|
|
48 * (a1p * a1 * c1p * c1 + a2p * a2 * c2p * c2 + a3p * a3 * c3p * c3) +
|
|
12 * (a1 * a1 * c1pp * c1 + a2 * a2 * c2pp * c2 + a3 * a3 * c3pp * c3) +
|
|
12 * (a1 * a1 * c1p * c1p + a2 * a2 * c2p * c2p + a3 * a3 * c3p * c3p)) *
|
|
coeffs[7];
|
|
val += (4 * (a1pp * c1 * c1 * c1 + a2pp * c2 * c2 * c2 + a3pp * c3 * c3 * c3) +
|
|
24 * (a1p * c1p * c1 * c1 + a2p * c2p * c2 * c2 + a3p * c3p * c3 * c3) +
|
|
12 * (a1 * c1pp * c1 * c1 + a2 * c2pp * c2 * c2 + a3 * c3pp * c3 * c3) +
|
|
24 * (a1 * c1p * c1p * c1 + a2 * c2p * c2p * c2 + a3 * c3p * c3p * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1pp * b1 * b1 * c1 + b2pp * b2 * b2 * c2 + b3pp * b3 * b3 * c3) +
|
|
24 * (b1p * b1p * b1 * c1 + b2p * b2p * b2 * c2 + b3p * b3p * b3 * c3) +
|
|
24 * (b1p * b1 * b1 * c1p + b2p * b2 * b2 * c2p + b3p * b3 * b3 * c3p) +
|
|
4 * (b1 * b1 * b1 * c1pp + b2 * b2 * b2 * c2pp + b3 * b3 * b3 * c3pp)) *
|
|
coeffs[9];
|
|
val += (12 * (b1pp * b1 * c1 * c1 + b2pp * b2 * c2 * c2 + b3pp * b3 * c3 * c3) +
|
|
12 * (b1p * b1p * c1 * c1 + b2p * b2p * c2 * c2 + b3p * b3p * c3 * c3) +
|
|
48 * (b1p * b1 * c1p * c1 + b2p * b2 * c2p * c2 + b3p * b3 * c3p * c3) +
|
|
12 * (b1 * b1 * c1pp * c1 + b2 * b2 * c2pp * c2 + b3 * b3 * c3pp * c3) +
|
|
12 * (b1 * b1 * c1p * c1p + b2 * b2 * c2p * c2p + b3 * b3 * c3p * c3p)) *
|
|
coeffs[10];
|
|
val += (4 * (b1pp * c1 * c1 * c1 + b2pp * c2 * c2 * c2 + b3pp * c3 * c3 * c3) +
|
|
24 * (b1p * c1p * c1 * c1 + b2p * c2p * c2 * c2 + b3p * c3p * c3 * c3) +
|
|
12 * (b1 * c1pp * c1 * c1 + b2 * c2pp * c2 * c2 + b3 * c3pp * c3 * c3) +
|
|
24 * (b1 * c1p * c1p * c1 + b2 * c2p * c2p * c2 + b3 * c3p * c3p * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1pp * a1 * b1 * c1 + a2pp * a2 * b2 * c2 + a3pp * a3 * b3 * c3) +
|
|
24 * (a1p * a1p * b1 * c1 + a2p * a2p * b2 * c2 + a3p * a3p * b3 * c3) +
|
|
48 * (a1p * a1 * b1p * c1 + a2p * a2 * b2p * c2 + a3p * a3 * b3p * c3) +
|
|
48 * (a1p * a1 * b1 * c1p + a2p * a2 * b2 * c2p + a3p * a3 * b3 * c3p) +
|
|
12 * (a1 * a1 * b1pp * c1 + a2 * a2 * b2pp * c2 + a3 * a3 * b3pp * c3) +
|
|
24 * (a1 * a1 * b1p * c1p + a2 * a2 * b2p * c2p + a3 * a3 * b3p * c3p) +
|
|
12 * (a1 * a1 * b1 * c1pp + a2 * a2 * b2 * c2pp + a3 * a3 * b3 * c3pp)) *
|
|
coeffs[12];
|
|
val += (12 * (a1pp * b1 * b1 * c1 + a2pp * b2 * b2 * c2 + a3pp * b3 * b3 * c3) +
|
|
48 * (a1p * b1p * b1 * c1 + a2p * b2p * b2 * c2 + a3p * b3p * b3 * c3) +
|
|
24 * (a1p * b1 * b1 * c1p + a2p * b2 * b2 * c2p + a3p * b3 * b3 * c3p) +
|
|
24 * (a1 * b1pp * b1 * c1 + a2 * b2pp * b2 * c2 + a3 * b3pp * b3 * c3) +
|
|
24 * (a1 * b1p * b1p * c1 + a2 * b2p * b2p * c2 + a3 * b3p * b3p * c3) +
|
|
48 * (a1 * b1p * b1 * c1p + a2 * b2p * b2 * c2p + a3 * b3p * b3 * c3p) +
|
|
12 * (a1 * b1 * b1 * c1pp + a2 * b2 * b2 * c2pp + a3 * b3 * b3 * c3pp)) *
|
|
coeffs[13];
|
|
val += (12 * (a1pp * b1 * c1 * c1 + a2pp * b2 * c2 * c2 + a3pp * b3 * c3 * c3) +
|
|
24 * (a1p * b1p * c1 * c1 + a2p * b2p * c2 * c2 + a3p * b3p * c3 * c3) +
|
|
48 * (a1p * b1 * c1p * c1 + a2p * b2 * c2p * c2 + a3p * b3 * c3p * c3) +
|
|
12 * (a1 * b1pp * c1 * c1 + a2 * b2pp * c2 * c2 + a3 * b3pp * c3 * c3) +
|
|
48 * (a1 * b1p * c1p * c1 + a2 * b2p * c2p * c2 + a3 * b3p * c3p * c3) +
|
|
24 * (a1 * b1 * c1pp * c1 + a2 * b2 * c2pp * c2 + a3 * b3 * c3pp * c3) +
|
|
24 * (a1 * b1 * c1p * c1p + a2 * b2 * c2p * c2p + a3 * b3 * c3p * c3p)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
static double hess22(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = (4 * (a1gg * a1 * a1 * a1 + a2gg * a2 * a2 * a2 + a3gg * a3 * a3 * a3) +
|
|
12 * (a1g * a1g * a1 * a1 + a2g * a2g * a2 * a2 + a3g * a3g * a3 * a3)) *
|
|
coeffs[0];
|
|
val += (4 * (b1gg * b1 * b1 * b1 + b2gg * b2 * b2 * b2 + b3gg * b3 * b3 * b3) +
|
|
12 * (b1g * b1g * b1 * b1 + b2g * b2g * b2 * b2 + b3g * b3g * b3 * b3)) *
|
|
coeffs[1];
|
|
val += (4 * (c1gg * c1 * c1 * c1 + c2gg * c2 * c2 * c2 + c3gg * c3 * c3 * c3) +
|
|
12 * (c1g * c1g * c1 * c1 + c2g * c2g * c2 * c2 + c3g * c3g * c3 * c3)) *
|
|
coeffs[2];
|
|
val += (12 * (a1gg * a1 * a1 * b1 + a2gg * a2 * a2 * b2 + a3gg * a3 * a3 * b3) +
|
|
24 * (a1g * a1g * a1 * b1 + a2g * a2g * a2 * b2 + a3g * a3g * a3 * b3) +
|
|
24 * (a1g * a1 * a1 * b1g + a2g * a2 * a2 * b2g + a3g * a3 * a3 * b3g) +
|
|
4 * (a1 * a1 * a1 * b1gg + a2 * a2 * a2 * b2gg + a3 * a3 * a3 * b3gg)) *
|
|
coeffs[3];
|
|
val += (12 * (a1gg * a1 * b1 * b1 + a2gg * a2 * b2 * b2 + a3gg * a3 * b3 * b3) +
|
|
12 * (a1g * a1g * b1 * b1 + a2g * a2g * b2 * b2 + a3g * a3g * b3 * b3) +
|
|
48 * (a1g * a1 * b1g * b1 + a2g * a2 * b2g * b2 + a3g * a3 * b3g * b3) +
|
|
12 * (a1 * a1 * b1gg * b1 + a2 * a2 * b2gg * b2 + a3 * a3 * b3gg * b3) +
|
|
12 * (a1 * a1 * b1g * b1g + a2 * a2 * b2g * b2g + a3 * a3 * b3g * b3g)) *
|
|
coeffs[4];
|
|
val += (4 * (a1gg * b1 * b1 * b1 + a2gg * b2 * b2 * b2 + a3gg * b3 * b3 * b3) +
|
|
24 * (a1g * b1g * b1 * b1 + a2g * b2g * b2 * b2 + a3g * b3g * b3 * b3) +
|
|
12 * (a1 * b1gg * b1 * b1 + a2 * b2gg * b2 * b2 + a3 * b3gg * b3 * b3) +
|
|
24 * (a1 * b1g * b1g * b1 + a2 * b2g * b2g * b2 + a3 * b3g * b3g * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1gg * a1 * a1 * c1 + a2gg * a2 * a2 * c2 + a3gg * a3 * a3 * c3) +
|
|
24 * (a1g * a1g * a1 * c1 + a2g * a2g * a2 * c2 + a3g * a3g * a3 * c3) +
|
|
24 * (a1g * a1 * a1 * c1g + a2g * a2 * a2 * c2g + a3g * a3 * a3 * c3g) +
|
|
4 * (a1 * a1 * a1 * c1gg + a2 * a2 * a2 * c2gg + a3 * a3 * a3 * c3gg)) *
|
|
coeffs[6];
|
|
val += (12 * (a1gg * a1 * c1 * c1 + a2gg * a2 * c2 * c2 + a3gg * a3 * c3 * c3) +
|
|
12 * (a1g * a1g * c1 * c1 + a2g * a2g * c2 * c2 + a3g * a3g * c3 * c3) +
|
|
48 * (a1g * a1 * c1g * c1 + a2g * a2 * c2g * c2 + a3g * a3 * c3g * c3) +
|
|
12 * (a1 * a1 * c1gg * c1 + a2 * a2 * c2gg * c2 + a3 * a3 * c3gg * c3) +
|
|
12 * (a1 * a1 * c1g * c1g + a2 * a2 * c2g * c2g + a3 * a3 * c3g * c3g)) *
|
|
coeffs[7];
|
|
val += (4 * (a1gg * c1 * c1 * c1 + a2gg * c2 * c2 * c2 + a3gg * c3 * c3 * c3) +
|
|
24 * (a1g * c1g * c1 * c1 + a2g * c2g * c2 * c2 + a3g * c3g * c3 * c3) +
|
|
12 * (a1 * c1gg * c1 * c1 + a2 * c2gg * c2 * c2 + a3 * c3gg * c3 * c3) +
|
|
24 * (a1 * c1g * c1g * c1 + a2 * c2g * c2g * c2 + a3 * c3g * c3g * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1gg * b1 * b1 * c1 + b2gg * b2 * b2 * c2 + b3gg * b3 * b3 * c3) +
|
|
24 * (b1g * b1g * b1 * c1 + b2g * b2g * b2 * c2 + b3g * b3g * b3 * c3) +
|
|
24 * (b1g * b1 * b1 * c1g + b2g * b2 * b2 * c2g + b3g * b3 * b3 * c3g) +
|
|
4 * (b1 * b1 * b1 * c1gg + b2 * b2 * b2 * c2gg + b3 * b3 * b3 * c3gg)) *
|
|
coeffs[9];
|
|
val += (12 * (b1gg * b1 * c1 * c1 + b2gg * b2 * c2 * c2 + b3gg * b3 * c3 * c3) +
|
|
12 * (b1g * b1g * c1 * c1 + b2g * b2g * c2 * c2 + b3g * b3g * c3 * c3) +
|
|
48 * (b1g * b1 * c1g * c1 + b2g * b2 * c2g * c2 + b3g * b3 * c3g * c3) +
|
|
12 * (b1 * b1 * c1gg * c1 + b2 * b2 * c2gg * c2 + b3 * b3 * c3gg * c3) +
|
|
12 * (b1 * b1 * c1g * c1g + b2 * b2 * c2g * c2g + b3 * b3 * c3g * c3g)) *
|
|
coeffs[10];
|
|
val += (4 * (b1gg * c1 * c1 * c1 + b2gg * c2 * c2 * c2 + b3gg * c3 * c3 * c3) +
|
|
24 * (b1g * c1g * c1 * c1 + b2g * c2g * c2 * c2 + b3g * c3g * c3 * c3) +
|
|
12 * (b1 * c1gg * c1 * c1 + b2 * c2gg * c2 * c2 + b3 * c3gg * c3 * c3) +
|
|
24 * (b1 * c1g * c1g * c1 + b2 * c2g * c2g * c2 + b3 * c3g * c3g * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1gg * a1 * b1 * c1 + a2gg * a2 * b2 * c2 + a3gg * a3 * b3 * c3) +
|
|
24 * (a1g * a1g * b1 * c1 + a2g * a2g * b2 * c2 + a3g * a3g * b3 * c3) +
|
|
48 * (a1g * a1 * b1g * c1 + a2g * a2 * b2g * c2 + a3g * a3 * b3g * c3) +
|
|
48 * (a1g * a1 * b1 * c1g + a2g * a2 * b2 * c2g + a3g * a3 * b3 * c3g) +
|
|
12 * (a1 * a1 * b1gg * c1 + a2 * a2 * b2gg * c2 + a3 * a3 * b3gg * c3) +
|
|
24 * (a1 * a1 * b1g * c1g + a2 * a2 * b2g * c2g + a3 * a3 * b3g * c3g) +
|
|
12 * (a1 * a1 * b1 * c1gg + a2 * a2 * b2 * c2gg + a3 * a3 * b3 * c3gg)) *
|
|
coeffs[12];
|
|
val += (12 * (a1gg * b1 * b1 * c1 + a2gg * b2 * b2 * c2 + a3gg * b3 * b3 * c3) +
|
|
48 * (a1g * b1g * b1 * c1 + a2g * b2g * b2 * c2 + a3g * b3g * b3 * c3) +
|
|
24 * (a1g * b1 * b1 * c1g + a2g * b2 * b2 * c2g + a3g * b3 * b3 * c3g) +
|
|
24 * (a1 * b1gg * b1 * c1 + a2 * b2gg * b2 * c2 + a3 * b3gg * b3 * c3) +
|
|
24 * (a1 * b1g * b1g * c1 + a2 * b2g * b2g * c2 + a3 * b3g * b3g * c3) +
|
|
48 * (a1 * b1g * b1 * c1g + a2 * b2g * b2 * c2g + a3 * b3g * b3 * c3g) +
|
|
12 * (a1 * b1 * b1 * c1gg + a2 * b2 * b2 * c2gg + a3 * b3 * b3 * c3gg)) *
|
|
coeffs[13];
|
|
val += (12 * (a1gg * b1 * c1 * c1 + a2gg * b2 * c2 * c2 + a3gg * b3 * c3 * c3) +
|
|
24 * (a1g * b1g * c1 * c1 + a2g * b2g * c2 * c2 + a3g * b3g * c3 * c3) +
|
|
48 * (a1g * b1 * c1g * c1 + a2g * b2 * c2g * c2 + a3g * b3 * c3g * c3) +
|
|
12 * (a1 * b1gg * c1 * c1 + a2 * b2gg * c2 * c2 + a3 * b3gg * c3 * c3) +
|
|
48 * (a1 * b1g * c1g * c1 + a2 * b2g * c2g * c2 + a3 * b3g * c3g * c3) +
|
|
24 * (a1 * b1 * c1gg * c1 + a2 * b2 * c2gg * c2 + a3 * b3 * c3gg * c3) +
|
|
24 * (a1 * b1 * c1g * c1g + a2 * b2 * c2g * c2g + a3 * b3 * c3g * c3g)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
static double hess01(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = (4 * (a1tp * a1 * a1 * a1 + a2tp * a2 * a2 * a2 + a3tp * a3 * a3 * a3) +
|
|
12 * (a1t * a1p * a1 * a1 + a2t * a2p * a2 * a2 + a3t * a3p * a3 * a3)) *
|
|
coeffs[0];
|
|
val += (4 * (b1tp * b1 * b1 * b1 + b2tp * b2 * b2 * b2 + b3tp * b3 * b3 * b3) +
|
|
12 * (b1t * b1p * b1 * b1 + b2t * b2p * b2 * b2 + b3t * b3p * b3 * b3)) *
|
|
coeffs[1];
|
|
val += (4 * (c1tp * c1 * c1 * c1 + c2tp * c2 * c2 * c2 + c3tp * c3 * c3 * c3) +
|
|
12 * (c1t * c1p * c1 * c1 + c2t * c2p * c2 * c2 + c3t * c3p * c3 * c3)) *
|
|
coeffs[2];
|
|
val += (12 * (a1tp * a1 * a1 * b1 + a2tp * a2 * a2 * b2 + a3tp * a3 * a3 * b3) +
|
|
24 * (a1t * a1p * a1 * b1 + a2t * a2p * a2 * b2 + a3t * a3p * a3 * b3) +
|
|
12 * (a1t * a1 * a1 * b1p + a2t * a2 * a2 * b2p + a3t * a3 * a3 * b3p) +
|
|
12 * (a1p * a1 * a1 * b1t + a2p * a2 * a2 * b2t + a3p * a3 * a3 * b3t) +
|
|
4 * (a1 * a1 * a1 * b1tp + a2 * a2 * a2 * b2tp + a3 * a3 * a3 * b3tp)) *
|
|
coeffs[3];
|
|
val += (12 * (a1tp * a1 * b1 * b1 + a2tp * a2 * b2 * b2 + a3tp * a3 * b3 * b3) +
|
|
12 * (a1t * a1p * b1 * b1 + a2t * a2p * b2 * b2 + a3t * a3p * b3 * b3) +
|
|
24 * (a1t * a1 * b1p * b1 + a2t * a2 * b2p * b2 + a3t * a3 * b3p * b3) +
|
|
24 * (a1p * a1 * b1t * b1 + a2p * a2 * b2t * b2 + a3p * a3 * b3t * b3) +
|
|
12 * (a1 * a1 * b1tp * b1 + a2 * a2 * b2tp * b2 + a3 * a3 * b3tp * b3) +
|
|
12 * (a1 * a1 * b1t * b1p + a2 * a2 * b2t * b2p + a3 * a3 * b3t * b3p)) *
|
|
coeffs[4];
|
|
val += (4 * (a1tp * b1 * b1 * b1 + a2tp * b2 * b2 * b2 + a3tp * b3 * b3 * b3) +
|
|
12 * (a1t * b1p * b1 * b1 + a2t * b2p * b2 * b2 + a3t * b3p * b3 * b3) +
|
|
12 * (a1p * b1t * b1 * b1 + a2p * b2t * b2 * b2 + a3p * b3t * b3 * b3) +
|
|
12 * (a1 * b1tp * b1 * b1 + a2 * b2tp * b2 * b2 + a3 * b3tp * b3 * b3) +
|
|
24 * (a1 * b1t * b1p * b1 + a2 * b2t * b2p * b2 + a3 * b3t * b3p * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1tp * a1 * a1 * c1 + a2tp * a2 * a2 * c2 + a3tp * a3 * a3 * c3) +
|
|
24 * (a1t * a1p * a1 * c1 + a2t * a2p * a2 * c2 + a3t * a3p * a3 * c3) +
|
|
12 * (a1t * a1 * a1 * c1p + a2t * a2 * a2 * c2p + a3t * a3 * a3 * c3p) +
|
|
12 * (a1p * a1 * a1 * c1t + a2p * a2 * a2 * c2t + a3p * a3 * a3 * c3t) +
|
|
4 * (a1 * a1 * a1 * c1tp + a2 * a2 * a2 * c2tp + a3 * a3 * a3 * c3tp)) *
|
|
coeffs[6];
|
|
val += (12 * (a1tp * a1 * c1 * c1 + a2tp * a2 * c2 * c2 + a3tp * a3 * c3 * c3) +
|
|
12 * (a1t * a1p * c1 * c1 + a2t * a2p * c2 * c2 + a3t * a3p * c3 * c3) +
|
|
24 * (a1t * a1 * c1p * c1 + a2t * a2 * c2p * c2 + a3t * a3 * c3p * c3) +
|
|
24 * (a1p * a1 * c1t * c1 + a2p * a2 * c2t * c2 + a3p * a3 * c3t * c3) +
|
|
12 * (a1 * a1 * c1tp * c1 + a2 * a2 * c2tp * c2 + a3 * a3 * c3tp * c3) +
|
|
12 * (a1 * a1 * c1t * c1p + a2 * a2 * c2t * c2p + a3 * a3 * c3t * c3p)) *
|
|
coeffs[7];
|
|
val += (4 * (a1tp * c1 * c1 * c1 + a2tp * c2 * c2 * c2 + a3tp * c3 * c3 * c3) +
|
|
12 * (a1t * c1p * c1 * c1 + a2t * c2p * c2 * c2 + a3t * c3p * c3 * c3) +
|
|
12 * (a1p * c1t * c1 * c1 + a2p * c2t * c2 * c2 + a3p * c3t * c3 * c3) +
|
|
12 * (a1 * c1tp * c1 * c1 + a2 * c2tp * c2 * c2 + a3 * c3tp * c3 * c3) +
|
|
24 * (a1 * c1t * c1p * c1 + a2 * c2t * c2p * c2 + a3 * c3t * c3p * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1tp * b1 * b1 * c1 + b2tp * b2 * b2 * c2 + b3tp * b3 * b3 * c3) +
|
|
24 * (b1t * b1p * b1 * c1 + b2t * b2p * b2 * c2 + b3t * b3p * b3 * c3) +
|
|
12 * (b1t * b1 * b1 * c1p + b2t * b2 * b2 * c2p + b3t * b3 * b3 * c3p) +
|
|
12 * (b1p * b1 * b1 * c1t + b2p * b2 * b2 * c2t + b3p * b3 * b3 * c3t) +
|
|
4 * (b1 * b1 * b1 * c1tp + b2 * b2 * b2 * c2tp + b3 * b3 * b3 * c3tp)) *
|
|
coeffs[9];
|
|
val += (12 * (b1tp * b1 * c1 * c1 + b2tp * b2 * c2 * c2 + b3tp * b3 * c3 * c3) +
|
|
12 * (b1t * b1p * c1 * c1 + b2t * b2p * c2 * c2 + b3t * b3p * c3 * c3) +
|
|
24 * (b1t * b1 * c1p * c1 + b2t * b2 * c2p * c2 + b3t * b3 * c3p * c3) +
|
|
24 * (b1p * b1 * c1t * c1 + b2p * b2 * c2t * c2 + b3p * b3 * c3t * c3) +
|
|
12 * (b1 * b1 * c1tp * c1 + b2 * b2 * c2tp * c2 + b3 * b3 * c3tp * c3) +
|
|
12 * (b1 * b1 * c1t * c1p + b2 * b2 * c2t * c2p + b3 * b3 * c3t * c3p)) *
|
|
coeffs[10];
|
|
val += (4 * (b1tp * c1 * c1 * c1 + b2tp * c2 * c2 * c2 + b3tp * c3 * c3 * c3) +
|
|
12 * (b1t * c1p * c1 * c1 + b2t * c2p * c2 * c2 + b3t * c3p * c3 * c3) +
|
|
12 * (b1p * c1t * c1 * c1 + b2p * c2t * c2 * c2 + b3p * c3t * c3 * c3) +
|
|
12 * (b1 * c1tp * c1 * c1 + b2 * c2tp * c2 * c2 + b3 * c3tp * c3 * c3) +
|
|
24 * (b1 * c1t * c1p * c1 + b2 * c2t * c2p * c2 + b3 * c3t * c3p * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1tp * a1 * b1 * c1 + a2tp * a2 * b2 * c2 + a3tp * a3 * b3 * c3) +
|
|
24 * (a1t * a1p * b1 * c1 + a2t * a2p * b2 * c2 + a3t * a3p * b3 * c3) +
|
|
24 * (a1t * a1 * b1p * c1 + a2t * a2 * b2p * c2 + a3t * a3 * b3p * c3) +
|
|
24 * (a1p * a1 * b1t * c1 + a2p * a2 * b2t * c2 + a3p * a3 * b3t * c3) +
|
|
24 * (a1t * a1 * b1 * c1p + a2t * a2 * b2 * c2p + a3t * a3 * b3 * c3p) +
|
|
24 * (a1p * a1 * b1 * c1t + a2p * a2 * b2 * c2t + a3p * a3 * b3 * c3t) +
|
|
12 * (a1 * a1 * b1tp * c1 + a2 * a2 * b2tp * c2 + a3 * a3 * b3tp * c3) +
|
|
12 * (a1 * a1 * b1t * c1p + a2 * a2 * b2t * c2p + a3 * a3 * b3t * c3p) +
|
|
12 * (a1 * a1 * b1p * c1t + a2 * a2 * b2p * c2t + a3 * a3 * b3p * c3t) +
|
|
12 * (a1 * a1 * b1 * c1tp + a2 * a2 * b2 * c2tp + a3 * a3 * b3 * c3tp)) *
|
|
coeffs[12];
|
|
val += (12 * (a1tp * b1 * b1 * c1 + a2tp * b2 * b2 * c2 + a3tp * b3 * b3 * c3) +
|
|
24 * (a1t * b1p * b1 * c1 + a2t * b2p * b2 * c2 + a3t * b3p * b3 * c3) +
|
|
24 * (a1p * b1t * b1 * c1 + a2p * b2t * b2 * c2 + a3p * b3t * b3 * c3) +
|
|
12 * (a1t * b1 * b1 * c1p + a2t * b2 * b2 * c2p + a3t * b3 * b3 * c3p) +
|
|
12 * (a1p * b1 * b1 * c1t + a2p * b2 * b2 * c2t + a3p * b3 * b3 * c3t) +
|
|
24 * (a1 * b1tp * b1 * c1 + a2 * b2tp * b2 * c2 + a3 * b3tp * b3 * c3) +
|
|
24 * (a1 * b1t * b1p * c1 + a2 * b2t * b2p * c2 + a3 * b3t * b3p * c3) +
|
|
24 * (a1 * b1t * b1 * c1p + a2 * b2t * b2 * c2p + a3 * b3t * b3 * c3p) +
|
|
24 * (a1 * b1p * b1 * c1t + a2 * b2p * b2 * c2t + a3 * b3p * b3 * c3t) +
|
|
12 * (a1 * b1 * b1 * c1tp + a2 * b2 * b2 * c2tp + a3 * b3 * b3 * c3tp)) *
|
|
coeffs[13];
|
|
val += (12 * (a1tp * b1 * c1 * c1 + a2tp * b2 * c2 * c2 + a3tp * b3 * c3 * c3) +
|
|
12 * (a1t * b1p * c1 * c1 + a2t * b2p * c2 * c2 + a3t * b3p * c3 * c3) +
|
|
12 * (a1p * b1t * c1 * c1 + a2p * b2t * c2 * c2 + a3p * b3t * c3 * c3) +
|
|
24 * (a1t * b1 * c1p * c1 + a2t * b2 * c2p * c2 + a3t * b3 * c3p * c3) +
|
|
24 * (a1p * b1 * c1t * c1 + a2p * b2 * c2t * c2 + a3p * b3 * c3t * c3) +
|
|
12 * (a1 * b1tp * c1 * c1 + a2 * b2tp * c2 * c2 + a3 * b3tp * c3 * c3) +
|
|
24 * (a1 * b1t * c1p * c1 + a2 * b2t * c2p * c2 + a3 * b3t * c3p * c3) +
|
|
24 * (a1 * b1p * c1t * c1 + a2 * b2p * c2t * c2 + a3 * b3p * c3t * c3) +
|
|
24 * (a1 * b1 * c1tp * c1 + a2 * b2 * c2tp * c2 + a3 * b3 * c3tp * c3) +
|
|
24 * (a1 * b1 * c1t * c1p + a2 * b2 * c2t * c2p + a3 * b3 * c3t * c3p)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
static double hess02(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = (4 * (a1tg * a1 * a1 * a1 + a2tg * a2 * a2 * a2 + a3tg * a3 * a3 * a3) +
|
|
12 * (a1t * a1g * a1 * a1 + a2t * a2g * a2 * a2 + a3t * a3g * a3 * a3)) *
|
|
coeffs[0];
|
|
val += (4 * (b1tg * b1 * b1 * b1 + b2tg * b2 * b2 * b2 + b3tg * b3 * b3 * b3) +
|
|
12 * (b1t * b1g * b1 * b1 + b2t * b2g * b2 * b2 + b3t * b3g * b3 * b3)) *
|
|
coeffs[1];
|
|
val += (4 * (c1tg * c1 * c1 * c1 + c2tg * c2 * c2 * c2 + c3tg * c3 * c3 * c3) +
|
|
12 * (c1t * c1g * c1 * c1 + c2t * c2g * c2 * c2 + c3t * c3g * c3 * c3)) *
|
|
coeffs[2];
|
|
val += (12 * (a1tg * a1 * a1 * b1 + a2tg * a2 * a2 * b2 + a3tg * a3 * a3 * b3) +
|
|
24 * (a1t * a1g * a1 * b1 + a2t * a2g * a2 * b2 + a3t * a3g * a3 * b3) +
|
|
12 * (a1t * a1 * a1 * b1g + a2t * a2 * a2 * b2g + a3t * a3 * a3 * b3g) +
|
|
12 * (a1g * a1 * a1 * b1t + a2g * a2 * a2 * b2t + a3g * a3 * a3 * b3t) +
|
|
4 * (a1 * a1 * a1 * b1tg + a2 * a2 * a2 * b2tg + a3 * a3 * a3 * b3tg)) *
|
|
coeffs[3];
|
|
val += (12 * (a1tg * a1 * b1 * b1 + a2tg * a2 * b2 * b2 + a3tg * a3 * b3 * b3) +
|
|
12 * (a1t * a1g * b1 * b1 + a2t * a2g * b2 * b2 + a3t * a3g * b3 * b3) +
|
|
24 * (a1t * a1 * b1g * b1 + a2t * a2 * b2g * b2 + a3t * a3 * b3g * b3) +
|
|
24 * (a1g * a1 * b1t * b1 + a2g * a2 * b2t * b2 + a3g * a3 * b3t * b3) +
|
|
12 * (a1 * a1 * b1tg * b1 + a2 * a2 * b2tg * b2 + a3 * a3 * b3tg * b3) +
|
|
12 * (a1 * a1 * b1t * b1g + a2 * a2 * b2t * b2g + a3 * a3 * b3t * b3g)) *
|
|
coeffs[4];
|
|
val += (4 * (a1tg * b1 * b1 * b1 + a2tg * b2 * b2 * b2 + a3tg * b3 * b3 * b3) +
|
|
12 * (a1t * b1g * b1 * b1 + a2t * b2g * b2 * b2 + a3t * b3g * b3 * b3) +
|
|
12 * (a1g * b1t * b1 * b1 + a2g * b2t * b2 * b2 + a3g * b3t * b3 * b3) +
|
|
12 * (a1 * b1tg * b1 * b1 + a2 * b2tg * b2 * b2 + a3 * b3tg * b3 * b3) +
|
|
24 * (a1 * b1t * b1g * b1 + a2 * b2t * b2g * b2 + a3 * b3t * b3g * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1tg * a1 * a1 * c1 + a2tg * a2 * a2 * c2 + a3tg * a3 * a3 * c3) +
|
|
24 * (a1t * a1g * a1 * c1 + a2t * a2g * a2 * c2 + a3t * a3g * a3 * c3) +
|
|
12 * (a1t * a1 * a1 * c1g + a2t * a2 * a2 * c2g + a3t * a3 * a3 * c3g) +
|
|
12 * (a1g * a1 * a1 * c1t + a2g * a2 * a2 * c2t + a3g * a3 * a3 * c3t) +
|
|
4 * (a1 * a1 * a1 * c1tg + a2 * a2 * a2 * c2tg + a3 * a3 * a3 * c3tg)) *
|
|
coeffs[6];
|
|
val += (12 * (a1tg * a1 * c1 * c1 + a2tg * a2 * c2 * c2 + a3tg * a3 * c3 * c3) +
|
|
12 * (a1t * a1g * c1 * c1 + a2t * a2g * c2 * c2 + a3t * a3g * c3 * c3) +
|
|
24 * (a1t * a1 * c1g * c1 + a2t * a2 * c2g * c2 + a3t * a3 * c3g * c3) +
|
|
24 * (a1g * a1 * c1t * c1 + a2g * a2 * c2t * c2 + a3g * a3 * c3t * c3) +
|
|
12 * (a1 * a1 * c1tg * c1 + a2 * a2 * c2tg * c2 + a3 * a3 * c3tg * c3) +
|
|
12 * (a1 * a1 * c1t * c1g + a2 * a2 * c2t * c2g + a3 * a3 * c3t * c3g)) *
|
|
coeffs[7];
|
|
val += (4 * (a1tg * c1 * c1 * c1 + a2tg * c2 * c2 * c2 + a3tg * c3 * c3 * c3) +
|
|
12 * (a1t * c1g * c1 * c1 + a2t * c2g * c2 * c2 + a3t * c3g * c3 * c3) +
|
|
12 * (a1g * c1t * c1 * c1 + a2g * c2t * c2 * c2 + a3g * c3t * c3 * c3) +
|
|
12 * (a1 * c1tg * c1 * c1 + a2 * c2tg * c2 * c2 + a3 * c3tg * c3 * c3) +
|
|
24 * (a1 * c1t * c1g * c1 + a2 * c2t * c2g * c2 + a3 * c3t * c3g * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1tg * b1 * b1 * c1 + b2tg * b2 * b2 * c2 + b3tg * b3 * b3 * c3) +
|
|
24 * (b1t * b1g * b1 * c1 + b2t * b2g * b2 * c2 + b3t * b3g * b3 * c3) +
|
|
12 * (b1t * b1 * b1 * c1g + b2t * b2 * b2 * c2g + b3t * b3 * b3 * c3g) +
|
|
12 * (b1g * b1 * b1 * c1t + b2g * b2 * b2 * c2t + b3g * b3 * b3 * c3t) +
|
|
4 * (b1 * b1 * b1 * c1tg + b2 * b2 * b2 * c2tg + b3 * b3 * b3 * c3tg)) *
|
|
coeffs[9];
|
|
val += (12 * (b1tg * b1 * c1 * c1 + b2tg * b2 * c2 * c2 + b3tg * b3 * c3 * c3) +
|
|
12 * (b1t * b1g * c1 * c1 + b2t * b2g * c2 * c2 + b3t * b3g * c3 * c3) +
|
|
24 * (b1t * b1 * c1g * c1 + b2t * b2 * c2g * c2 + b3t * b3 * c3g * c3) +
|
|
24 * (b1g * b1 * c1t * c1 + b2g * b2 * c2t * c2 + b3g * b3 * c3t * c3) +
|
|
12 * (b1 * b1 * c1tg * c1 + b2 * b2 * c2tg * c2 + b3 * b3 * c3tg * c3) +
|
|
12 * (b1 * b1 * c1t * c1g + b2 * b2 * c2t * c2g + b3 * b3 * c3t * c3g)) *
|
|
coeffs[10];
|
|
val += (4 * (b1tg * c1 * c1 * c1 + b2tg * c2 * c2 * c2 + b3tg * c3 * c3 * c3) +
|
|
12 * (b1t * c1g * c1 * c1 + b2t * c2g * c2 * c2 + b3t * c3g * c3 * c3) +
|
|
12 * (b1g * c1t * c1 * c1 + b2g * c2t * c2 * c2 + b3g * c3t * c3 * c3) +
|
|
12 * (b1 * c1tg * c1 * c1 + b2 * c2tg * c2 * c2 + b3 * c3tg * c3 * c3) +
|
|
24 * (b1 * c1t * c1g * c1 + b2 * c2t * c2g * c2 + b3 * c3t * c3g * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1tg * a1 * b1 * c1 + a2tg * a2 * b2 * c2 + a3tg * a3 * b3 * c3) +
|
|
24 * (a1t * a1g * b1 * c1 + a2t * a2g * b2 * c2 + a3t * a3g * b3 * c3) +
|
|
24 * (a1t * a1 * b1g * c1 + a2t * a2 * b2g * c2 + a3t * a3 * b3g * c3) +
|
|
24 * (a1t * a1 * b1 * c1g + a2t * a2 * b2 * c2g + a3t * a3 * b3 * c3g) +
|
|
24 * (a1g * a1 * b1t * c1 + a2g * a2 * b2t * c2 + a3g * a3 * b3t * c3) +
|
|
24 * (a1g * a1 * b1 * c1t + a2g * a2 * b2 * c2t + a3g * a3 * b3 * c3t) +
|
|
12 * (a1 * a1 * b1tg * c1 + a2 * a2 * b2tg * c2 + a3 * a3 * b3tg * c3) +
|
|
12 * (a1 * a1 * b1t * c1g + a2 * a2 * b2t * c2g + a3 * a3 * b3t * c3g) +
|
|
12 * (a1 * a1 * b1g * c1t + a2 * a2 * b2g * c2t + a3 * a3 * b3g * c3t) +
|
|
12 * (a1 * a1 * b1 * c1tg + a2 * a2 * b2 * c2tg + a3 * a3 * b3 * c3tg)) *
|
|
coeffs[12];
|
|
val += (12 * (a1tg * b1 * b1 * c1 + a2tg * b2 * b2 * c2 + a3tg * b3 * b3 * c3) +
|
|
24 * (a1t * b1g * b1 * c1 + a2t * b2g * b2 * c2 + a3t * b3g * b3 * c3) +
|
|
24 * (a1g * b1t * b1 * c1 + a2g * b2t * b2 * c2 + a3g * b3t * b3 * c3) +
|
|
12 * (a1t * b1 * b1 * c1g + a2t * b2 * b2 * c2g + a3t * b3 * b3 * c3g) +
|
|
12 * (a1g * b1 * b1 * c1t + a2g * b2 * b2 * c2t + a3g * b3 * b3 * c3t) +
|
|
24 * (a1 * b1tg * b1 * c1 + a2 * b2tg * b2 * c2 + a3 * b3tg * b3 * c3) +
|
|
24 * (a1 * b1t * b1g * c1 + a2 * b2t * b2g * c2 + a3 * b3t * b3g * c3) +
|
|
24 * (a1 * b1t * b1 * c1g + a2 * b2t * b2 * c2g + a3 * b3t * b3 * c3g) +
|
|
24 * (a1 * b1g * b1 * c1t + a2 * b2g * b2 * c2t + a3 * b3g * b3 * c3t) +
|
|
12 * (a1 * b1 * b1 * c1tg + a2 * b2 * b2 * c2tg + a3 * b3 * b3 * c3tg)) *
|
|
coeffs[13];
|
|
val += (12 * (a1tg * b1 * c1 * c1 + a2tg * b2 * c2 * c2 + a3tg * b3 * c3 * c3) +
|
|
12 * (a1t * b1g * c1 * c1 + a2t * b2g * c2 * c2 + a3t * b3g * c3 * c3) +
|
|
12 * (a1g * b1t * c1 * c1 + a2g * b2t * c2 * c2 + a3g * b3t * c3 * c3) +
|
|
24 * (a1t * b1 * c1g * c1 + a2t * b2 * c2g * c2 + a3t * b3 * c3g * c3) +
|
|
24 * (a1g * b1 * c1t * c1 + a2g * b2 * c2t * c2 + a3g * b3 * c3t * c3) +
|
|
12 * (a1 * b1tg * c1 * c1 + a2 * b2tg * c2 * c2 + a3 * b3tg * c3 * c3) +
|
|
24 * (a1 * b1t * c1g * c1 + a2 * b2t * c2g * c2 + a3 * b3t * c3g * c3) +
|
|
24 * (a1 * b1g * c1t * c1 + a2 * b2g * c2t * c2 + a3 * b3g * c3t * c3) +
|
|
24 * (a1 * b1 * c1tg * c1 + a2 * b2 * c2tg * c2 + a3 * b3 * c3tg * c3) +
|
|
24 * (a1 * b1 * c1t * c1g + a2 * b2 * c2t * c2g + a3 * b3 * c3t * c3g)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
static double hess12(double *coeffs)
|
|
{
|
|
double val;
|
|
|
|
val = (4 * (a1pg * a1 * a1 * a1 + a2pg * a2 * a2 * a2 + a3pg * a3 * a3 * a3) +
|
|
12 * (a1p * a1g * a1 * a1 + a2p * a2g * a2 * a2 + a3p * a3g * a3 * a3)) *
|
|
coeffs[0];
|
|
val += (4 * (b1pg * b1 * b1 * b1 + b2pg * b2 * b2 * b2 + b3pg * b3 * b3 * b3) +
|
|
12 * (b1p * b1g * b1 * b1 + b2p * b2g * b2 * b2 + b3p * b3g * b3 * b3)) *
|
|
coeffs[1];
|
|
val += (4 * (c1pg * c1 * c1 * c1 + c2pg * c2 * c2 * c2 + c3pg * c3 * c3 * c3) +
|
|
12 * (c1p * c1g * c1 * c1 + c2p * c2g * c2 * c2 + c3p * c3g * c3 * c3)) *
|
|
coeffs[2];
|
|
val += (12 * (a1pg * a1 * a1 * b1 + a2pg * a2 * a2 * b2 + a3pg * a3 * a3 * b3) +
|
|
24 * (a1p * a1g * a1 * b1 + a2p * a2g * a2 * b2 + a3p * a3g * a3 * b3) +
|
|
12 * (a1p * a1 * a1 * b1g + a2p * a2 * a2 * b2g + a3p * a3 * a3 * b3g) +
|
|
12 * (a1g * a1 * a1 * b1p + a2g * a2 * a2 * b2p + a3g * a3 * a3 * b3p) +
|
|
4 * (a1 * a1 * a1 * b1pg + a2 * a2 * a2 * b2pg + a3 * a3 * a3 * b3pg)) *
|
|
coeffs[3];
|
|
val += (12 * (a1pg * a1 * b1 * b1 + a2pg * a2 * b2 * b2 + a3pg * a3 * b3 * b3) +
|
|
12 * (a1p * a1g * b1 * b1 + a2p * a2g * b2 * b2 + a3p * a3g * b3 * b3) +
|
|
24 * (a1p * a1 * b1g * b1 + a2p * a2 * b2g * b2 + a3p * a3 * b3g * b3) +
|
|
24 * (a1g * a1 * b1p * b1 + a2g * a2 * b2p * b2 + a3g * a3 * b3p * b3) +
|
|
12 * (a1 * a1 * b1pg * b1 + a2 * a2 * b2pg * b2 + a3 * a3 * b3pg * b3) +
|
|
12 * (a1 * a1 * b1p * b1g + a2 * a2 * b2p * b2g + a3 * a3 * b3p * b3g)) *
|
|
coeffs[4];
|
|
val += (4 * (a1pg * b1 * b1 * b1 + a2pg * b2 * b2 * b2 + a3pg * b3 * b3 * b3) +
|
|
12 * (a1p * b1g * b1 * b1 + a2p * b2g * b2 * b2 + a3p * b3g * b3 * b3) +
|
|
12 * (a1g * b1p * b1 * b1 + a2g * b2p * b2 * b2 + a3g * b3p * b3 * b3) +
|
|
12 * (a1 * b1pg * b1 * b1 + a2 * b2pg * b2 * b2 + a3 * b3pg * b3 * b3) +
|
|
24 * (a1 * b1p * b1g * b1 + a2 * b2p * b2g * b2 + a3 * b3p * b3g * b3)) *
|
|
coeffs[5];
|
|
val += (12 * (a1pg * a1 * a1 * c1 + a2pg * a2 * a2 * c2 + a3pg * a3 * a3 * c3) +
|
|
24 * (a1p * a1g * a1 * c1 + a2p * a2g * a2 * c2 + a3p * a3g * a3 * c3) +
|
|
12 * (a1p * a1 * a1 * c1g + a2p * a2 * a2 * c2g + a3p * a3 * a3 * c3g) +
|
|
12 * (a1g * a1 * a1 * c1p + a2g * a2 * a2 * c2p + a3g * a3 * a3 * c3p) +
|
|
4 * (a1 * a1 * a1 * c1pg + a2 * a2 * a2 * c2pg + a3 * a3 * a3 * c3pg)) *
|
|
coeffs[6];
|
|
val += (12 * (a1pg * a1 * c1 * c1 + a2pg * a2 * c2 * c2 + a3pg * a3 * c3 * c3) +
|
|
12 * (a1p * a1g * c1 * c1 + a2p * a2g * c2 * c2 + a3p * a3g * c3 * c3) +
|
|
24 * (a1p * a1 * c1g * c1 + a2p * a2 * c2g * c2 + a3p * a3 * c3g * c3) +
|
|
24 * (a1g * a1 * c1p * c1 + a2g * a2 * c2p * c2 + a3g * a3 * c3p * c3) +
|
|
12 * (a1 * a1 * c1pg * c1 + a2 * a2 * c2pg * c2 + a3 * a3 * c3pg * c3) +
|
|
12 * (a1 * a1 * c1p * c1g + a2 * a2 * c2p * c2g + a3 * a3 * c3p * c3g)) *
|
|
coeffs[7];
|
|
val += (4 * (a1pg * c1 * c1 * c1 + a2pg * c2 * c2 * c2 + a3pg * c3 * c3 * c3) +
|
|
12 * (a1p * c1g * c1 * c1 + a2p * c2g * c2 * c2 + a3p * c3g * c3 * c3) +
|
|
12 * (a1g * c1p * c1 * c1 + a2g * c2p * c2 * c2 + a3g * c3p * c3 * c3) +
|
|
12 * (a1 * c1pg * c1 * c1 + a2 * c2pg * c2 * c2 + a3 * c3pg * c3 * c3) +
|
|
24 * (a1 * c1p * c1g * c1 + a2 * c2p * c2g * c2 + a3 * c3p * c3g * c3)) *
|
|
coeffs[8];
|
|
val += (12 * (b1pg * b1 * b1 * c1 + b2pg * b2 * b2 * c2 + b3pg * b3 * b3 * c3) +
|
|
24 * (b1p * b1g * b1 * c1 + b2p * b2g * b2 * c2 + b3p * b3g * b3 * c3) +
|
|
12 * (b1p * b1 * b1 * c1g + b2p * b2 * b2 * c2g + b3p * b3 * b3 * c3g) +
|
|
12 * (b1g * b1 * b1 * c1p + b2g * b2 * b2 * c2p + b3g * b3 * b3 * c3p) +
|
|
4 * (b1 * b1 * b1 * c1pg + b2 * b2 * b2 * c2pg + b3 * b3 * b3 * c3pg)) *
|
|
coeffs[9];
|
|
val += (12 * (b1pg * b1 * c1 * c1 + b2pg * b2 * c2 * c2 + b3pg * b3 * c3 * c3) +
|
|
12 * (b1p * b1g * c1 * c1 + b2p * b2g * c2 * c2 + b3p * b3g * c3 * c3) +
|
|
24 * (b1p * b1 * c1g * c1 + b2p * b2 * c2g * c2 + b3p * b3 * c3g * c3) +
|
|
24 * (b1g * b1 * c1p * c1 + b2g * b2 * c2p * c2 + b3g * b3 * c3p * c3) +
|
|
12 * (b1 * b1 * c1pg * c1 + b2 * b2 * c2pg * c2 + b3 * b3 * c3pg * c3) +
|
|
12 * (b1 * b1 * c1p * c1g + b2 * b2 * c2p * c2g + b3 * b3 * c3p * c3g)) *
|
|
coeffs[10];
|
|
val += (4 * (b1pg * c1 * c1 * c1 + b2pg * c2 * c2 * c2 + b3pg * c3 * c3 * c3) +
|
|
12 * (b1p * c1g * c1 * c1 + b2p * c2g * c2 * c2 + b3p * c3g * c3 * c3) +
|
|
12 * (b1g * c1p * c1 * c1 + b2g * c2p * c2 * c2 + b3g * c3p * c3 * c3) +
|
|
12 * (b1 * c1pg * c1 * c1 + b2 * c2pg * c2 * c2 + b3 * c3pg * c3 * c3) +
|
|
24 * (b1 * c1p * c1g * c1 + b2 * c2p * c2g * c2 + b3 * c3p * c3g * c3)) *
|
|
coeffs[11];
|
|
val += (24 * (a1pg * a1 * b1 * c1 + a2pg * a2 * b2 * c2 + a3pg * a3 * b3 * c3) +
|
|
24 * (a1p * a1g * b1 * c1 + a2p * a2g * b2 * c2 + a3p * a3g * b3 * c3) +
|
|
24 * (a1p * a1 * b1g * c1 + a2p * a2 * b2g * c2 + a3p * a3 * b3g * c3) +
|
|
24 * (a1g * a1 * b1p * c1 + a2g * a2 * b2p * c2 + a3g * a3 * b3p * c3) +
|
|
24 * (a1p * a1 * b1 * c1g + a2p * a2 * b2 * c2g + a3p * a3 * b3 * c3g) +
|
|
24 * (a1g * a1 * b1 * c1p + a2g * a2 * b2 * c2p + a3g * a3 * b3 * c3p) +
|
|
12 * (a1 * a1 * b1pg * c1 + a2 * a2 * b2pg * c2 + a3 * a3 * b3pg * c3) +
|
|
12 * (a1 * a1 * b1p * c1g + a2 * a2 * b2p * c2g + a3 * a3 * b3p * c3g) +
|
|
12 * (a1 * a1 * b1g * c1p + a2 * a2 * b2g * c2p + a3 * a3 * b3g * c3p) +
|
|
12 * (a1 * a1 * b1 * c1pg + a2 * a2 * b2 * c2pg + a3 * a3 * b3 * c3pg)) *
|
|
coeffs[12];
|
|
val += (12 * (a1pg * b1 * b1 * c1 + a2pg * b2 * b2 * c2 + a3pg * b3 * b3 * c3) +
|
|
24 * (a1p * b1g * b1 * c1 + a2p * b2g * b2 * c2 + a3p * b3g * b3 * c3) +
|
|
24 * (a1g * b1p * b1 * c1 + a2g * b2p * b2 * c2 + a3g * b3p * b3 * c3) +
|
|
12 * (a1p * b1 * b1 * c1g + a2p * b2 * b2 * c2g + a3p * b3 * b3 * c3g) +
|
|
12 * (a1g * b1 * b1 * c1p + a2g * b2 * b2 * c2p + a3g * b3 * b3 * c3p) +
|
|
24 * (a1 * b1pg * b1 * c1 + a2 * b2pg * b2 * c2 + a3 * b3pg * b3 * c3) +
|
|
24 * (a1 * b1p * b1g * c1 + a2 * b2p * b2g * c2 + a3 * b3p * b3g * c3) +
|
|
24 * (a1 * b1p * b1 * c1g + a2 * b2p * b2 * c2g + a3 * b3p * b3 * c3g) +
|
|
24 * (a1 * b1g * b1 * c1p + a2 * b2g * b2 * c2p + a3 * b3g * b3 * c3p) +
|
|
12 * (a1 * b1 * b1 * c1pg + a2 * b2 * b2 * c2pg + a3 * b3 * b3 * c3pg)) *
|
|
coeffs[13];
|
|
val += (12 * (a1pg * b1 * c1 * c1 + a2pg * b2 * c2 * c2 + a3pg * b3 * c3 * c3) +
|
|
12 * (a1p * b1g * c1 * c1 + a2p * b2g * c2 * c2 + a3p * b3g * c3 * c3) +
|
|
12 * (a1g * b1p * c1 * c1 + a2g * b2p * c2 * c2 + a3g * b3p * c3 * c3) +
|
|
24 * (a1p * b1 * c1g * c1 + a2p * b2 * c2g * c2 + a3p * b3 * c3g * c3) +
|
|
24 * (a1g * b1 * c1p * c1 + a2g * b2 * c2p * c2 + a3g * b3 * c3p * c3) +
|
|
12 * (a1 * b1pg * c1 * c1 + a2 * b2pg * c2 * c2 + a3 * b3pg * c3 * c3) +
|
|
24 * (a1 * b1p * c1g * c1 + a2 * b2p * c2g * c2 + a3 * b3p * c3g * c3) +
|
|
24 * (a1 * b1g * c1p * c1 + a2 * b2g * c2p * c2 + a3 * b3g * c3p * c3) +
|
|
24 * (a1 * b1 * c1pg * c1 + a2 * b2 * c2pg * c2 + a3 * b3 * c3pg * c3) +
|
|
24 * (a1 * b1 * c1p * c1g + a2 * b2 * c2p * c2g + a3 * b3 * c3p * c3g)) *
|
|
coeffs[14];
|
|
return (val);
|
|
}
|
|
|
|
double constraint(double *coeffs2 /* coefficients for constraint eqn */
|
|
)
|
|
{
|
|
double val; /* value of constraint (should be zero) */
|
|
|
|
val = a1 * a2 * a3 * coeffs2[0];
|
|
val += b1 * b2 * b3 * coeffs2[1];
|
|
val += c1 * c2 * c3 * coeffs2[2];
|
|
val += (a1 * a2 * b3 + a1 * b2 * a3 + b1 * a2 * a3) * coeffs2[3];
|
|
val += (a1 * a2 * c3 + a1 * c2 * a3 + c1 * a2 * a3) * coeffs2[4];
|
|
val += (a1 * b2 * b3 + b1 * a2 * b3 + b1 * b2 * a3) * coeffs2[5];
|
|
val += (b1 * b2 * c3 + b1 * c2 * b3 + c1 * b2 * b3) * coeffs2[6];
|
|
val += (a1 * c2 * c3 + c1 * a2 * c3 + c1 * c2 * a3) * coeffs2[7];
|
|
val += (b1 * c2 * c3 + c1 * b2 * c3 + c1 * c2 * b3) * coeffs2[8];
|
|
val += (a1 * b2 * c3 + a1 * c2 * b3 + b1 * a2 * c3 + b1 * c2 * a3 + c1 * a2 * b3 + c1 * b2 * a3) *
|
|
coeffs2[9];
|
|
|
|
return (val * val);
|
|
}
|
|
|
|
static double gradcon0(double *coeffs2);
|
|
static double gradcon1(double *coeffs2);
|
|
static double gradcon2(double *coeffs2);
|
|
|
|
void gradcon(double *coeffs2, /* coefficients for constraint eqn */
|
|
double grad[3] /* gradient returned */
|
|
)
|
|
{
|
|
int i; /* loop counter */
|
|
|
|
cval = a1 * a2 * a3 * coeffs2[0];
|
|
cval += b1 * b2 * b3 * coeffs2[1];
|
|
cval += c1 * c2 * c3 * coeffs2[2];
|
|
cval += (a1 * a2 * b3 + a1 * b2 * a3 + b1 * a2 * a3) * coeffs2[3];
|
|
cval += (a1 * a2 * c3 + a1 * c2 * a3 + c1 * a2 * a3) * coeffs2[4];
|
|
cval += (a1 * b2 * b3 + b1 * a2 * b3 + b1 * b2 * a3) * coeffs2[5];
|
|
cval += (b1 * b2 * c3 + b1 * c2 * b3 + c1 * b2 * b3) * coeffs2[6];
|
|
cval += (a1 * c2 * c3 + c1 * a2 * c3 + c1 * c2 * a3) * coeffs2[7];
|
|
cval += (b1 * c2 * c3 + c1 * b2 * c3 + c1 * c2 * b3) * coeffs2[8];
|
|
cval +=
|
|
(a1 * b2 * c3 + a1 * c2 * b3 + b1 * a2 * c3 + b1 * c2 * a3 + c1 * a2 * b3 + c1 * b2 * a3) *
|
|
coeffs2[9];
|
|
|
|
cgrad[0] = gradcon0(coeffs2);
|
|
cgrad[1] = gradcon1(coeffs2);
|
|
cgrad[2] = gradcon2(coeffs2);
|
|
|
|
for (i = 0; i < 3; i++) {
|
|
grad[i] = 2 * cval * cgrad[i];
|
|
}
|
|
}
|
|
|
|
static double gradcon0(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1t * a2 * a3 + a1 * a2t * a3 + a1 * a2 * a3t) * coeffs2[0];
|
|
val += (b1t * b2 * b3 + b1 * b2t * b3 + b1 * b2 * b3t) * coeffs2[1];
|
|
val += (c1t * c2 * c3 + c1 * c2t * c3 + c1 * c2 * c3t) * coeffs2[2];
|
|
val += (a1t * a2 * b3 + a1t * b2 * a3 + b1t * a2 * a3 + a1 * a2t * b3 + a1 * b2t * a3 +
|
|
b1 * a2t * a3 + a1 * a2 * b3t + a1 * b2 * a3t + b1 * a2 * a3t) *
|
|
coeffs2[3];
|
|
val += (a1t * a2 * c3 + a1t * c2 * a3 + c1t * a2 * a3 + a1 * a2t * c3 + a1 * c2t * a3 +
|
|
c1 * a2t * a3 + a1 * a2 * c3t + a1 * c2 * a3t + c1 * a2 * a3t) *
|
|
coeffs2[4];
|
|
val += (a1t * b2 * b3 + b1t * a2 * b3 + b1t * b2 * a3 + a1 * b2t * b3 + b1 * a2t * b3 +
|
|
b1 * b2t * a3 + a1 * b2 * b3t + b1 * a2 * b3t + b1 * b2 * a3t) *
|
|
coeffs2[5];
|
|
val += (b1t * b2 * c3 + b1t * c2 * b3 + c1t * b2 * b3 + b1 * b2t * c3 + b1 * c2t * b3 +
|
|
c1 * b2t * b3 + b1 * b2 * c3t + b1 * c2 * b3t + c1 * b2 * b3t) *
|
|
coeffs2[6];
|
|
val += (a1t * c2 * c3 + c1t * a2 * c3 + c1t * c2 * a3 + a1 * c2t * c3 + c1 * a2t * c3 +
|
|
c1 * c2t * a3 + a1 * c2 * c3t + c1 * a2 * c3t + c1 * c2 * a3t) *
|
|
coeffs2[7];
|
|
val += (b1t * c2 * c3 + c1t * b2 * c3 + c1t * c2 * b3 + b1 * c2t * c3 + c1 * b2t * c3 +
|
|
c1 * c2t * b3 + b1 * c2 * c3t + c1 * b2 * c3t + c1 * c2 * b3t) *
|
|
coeffs2[8];
|
|
val += (a1t * b2 * c3 + a1t * c2 * b3 + b1t * a2 * c3 + a1 * b2t * c3 + a1 * c2t * b3 +
|
|
b1 * a2t * c3 + a1 * b2 * c3t + a1 * c2 * b3t + b1 * a2 * c3t + b1t * c2 * a3 +
|
|
c1t * a2 * b3 + c1t * b2 * a3 + b1 * c2t * a3 + c1 * a2t * b3 + c1 * b2t * a3 +
|
|
b1 * c2 * a3t + c1 * a2 * b3t + c1 * b2 * a3t) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|
|
static double gradcon1(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1p * a2 * a3 + a1 * a2p * a3 + a1 * a2 * a3p) * coeffs2[0];
|
|
val += (b1p * b2 * b3 + b1 * b2p * b3 + b1 * b2 * b3p) * coeffs2[1];
|
|
val += (c1p * c2 * c3 + c1 * c2p * c3 + c1 * c2 * c3p) * coeffs2[2];
|
|
val += (a1p * a2 * b3 + a1p * b2 * a3 + b1p * a2 * a3 + a1 * a2p * b3 + a1 * b2p * a3 +
|
|
b1 * a2p * a3 + a1 * a2 * b3p + a1 * b2 * a3p + b1 * a2 * a3p) *
|
|
coeffs2[3];
|
|
val += (a1p * a2 * c3 + a1p * c2 * a3 + c1p * a2 * a3 + a1 * a2p * c3 + a1 * c2p * a3 +
|
|
c1 * a2p * a3 + a1 * a2 * c3p + a1 * c2 * a3p + c1 * a2 * a3p) *
|
|
coeffs2[4];
|
|
val += (a1p * b2 * b3 + b1p * a2 * b3 + b1p * b2 * a3 + a1 * b2p * b3 + b1 * a2p * b3 +
|
|
b1 * b2p * a3 + a1 * b2 * b3p + b1 * a2 * b3p + b1 * b2 * a3p) *
|
|
coeffs2[5];
|
|
val += (b1p * b2 * c3 + b1p * c2 * b3 + c1p * b2 * b3 + b1 * b2p * c3 + b1 * c2p * b3 +
|
|
c1 * b2p * b3 + b1 * b2 * c3p + b1 * c2 * b3p + c1 * b2 * b3p) *
|
|
coeffs2[6];
|
|
val += (a1p * c2 * c3 + c1p * a2 * c3 + c1p * c2 * a3 + a1 * c2p * c3 + c1 * a2p * c3 +
|
|
c1 * c2p * a3 + a1 * c2 * c3p + c1 * a2 * c3p + c1 * c2 * a3p) *
|
|
coeffs2[7];
|
|
val += (b1p * c2 * c3 + c1p * b2 * c3 + c1p * c2 * b3 + b1 * c2p * c3 + c1 * b2p * c3 +
|
|
c1 * c2p * b3 + b1 * c2 * c3p + c1 * b2 * c3p + c1 * c2 * b3p) *
|
|
coeffs2[8];
|
|
val += (a1p * b2 * c3 + a1p * c2 * b3 + b1p * a2 * c3 + a1 * b2p * c3 + a1 * c2p * b3 +
|
|
b1 * a2p * c3 + a1 * b2 * c3p + a1 * c2 * b3p + b1 * a2 * c3p + b1p * c2 * a3 +
|
|
c1p * a2 * b3 + c1p * b2 * a3 + b1 * c2p * a3 + c1 * a2p * b3 + c1 * b2p * a3 +
|
|
b1 * c2 * a3p + c1 * a2 * b3p + c1 * b2 * a3p) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|
|
static double gradcon2(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1g * a2 * a3 + a1 * a2g * a3 + a1 * a2 * a3g) * coeffs2[0];
|
|
val += (b1g * b2 * b3 + b1 * b2g * b3 + b1 * b2 * b3g) * coeffs2[1];
|
|
val += (c1g * c2 * c3 + c1 * c2g * c3 + c1 * c2 * c3g) * coeffs2[2];
|
|
val += (a1g * a2 * b3 + a1g * b2 * a3 + b1g * a2 * a3 + a1 * a2g * b3 + a1 * b2g * a3 +
|
|
b1 * a2g * a3 + a1 * a2 * b3g + a1 * b2 * a3g + b1 * a2 * a3g) *
|
|
coeffs2[3];
|
|
val += (a1g * a2 * c3 + a1g * c2 * a3 + c1g * a2 * a3 + a1 * a2g * c3 + a1 * c2g * a3 +
|
|
c1 * a2g * a3 + a1 * a2 * c3g + a1 * c2 * a3g + c1 * a2 * a3g) *
|
|
coeffs2[4];
|
|
val += (a1g * b2 * b3 + b1g * a2 * b3 + b1g * b2 * a3 + a1 * b2g * b3 + b1 * a2g * b3 +
|
|
b1 * b2g * a3 + a1 * b2 * b3g + b1 * a2 * b3g + b1 * b2 * a3g) *
|
|
coeffs2[5];
|
|
val += (b1g * b2 * c3 + b1g * c2 * b3 + c1g * b2 * b3 + b1 * b2g * c3 + b1 * c2g * b3 +
|
|
c1 * b2g * b3 + b1 * b2 * c3g + b1 * c2 * b3g + c1 * b2 * b3g) *
|
|
coeffs2[6];
|
|
val += (a1g * c2 * c3 + c1g * a2 * c3 + c1g * c2 * a3 + a1 * c2g * c3 + c1 * a2g * c3 +
|
|
c1 * c2g * a3 + a1 * c2 * c3g + c1 * a2 * c3g + c1 * c2 * a3g) *
|
|
coeffs2[7];
|
|
val += (b1g * c2 * c3 + c1g * b2 * c3 + c1g * c2 * b3 + b1 * c2g * c3 + c1 * b2g * c3 +
|
|
c1 * c2g * b3 + b1 * c2 * c3g + c1 * b2 * c3g + c1 * c2 * b3g) *
|
|
coeffs2[8];
|
|
val += (a1g * b2 * c3 + a1g * c2 * b3 + b1g * a2 * c3 + a1 * b2g * c3 + a1 * c2g * b3 +
|
|
b1 * a2g * c3 + a1 * b2 * c3g + a1 * c2 * b3g + b1 * a2 * c3g + b1g * c2 * a3 +
|
|
c1g * a2 * b3 + c1g * b2 * a3 + b1 * c2g * a3 + c1 * a2g * b3 + c1 * b2g * a3 +
|
|
b1 * c2 * a3g + c1 * a2 * b3g + c1 * b2 * a3g) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|
|
static double hesscon00(double *coeffs2);
|
|
static double hesscon11(double *coeffs2);
|
|
static double hesscon22(double *coeffs2);
|
|
static double hesscon01(double *coeffs2);
|
|
static double hesscon02(double *coeffs2);
|
|
static double hesscon12(double *coeffs2);
|
|
|
|
void hesscon(double *coeffs2, /* coefficients for constraint eqn */
|
|
double hess[3][3] /* hessian returned */
|
|
)
|
|
{
|
|
int i, j; /* loop variables */
|
|
|
|
hess[0][0] = hesscon00(coeffs2);
|
|
hess[1][1] = hesscon11(coeffs2);
|
|
hess[2][2] = hesscon22(coeffs2);
|
|
hess[0][1] = hesscon01(coeffs2);
|
|
hess[0][2] = hesscon02(coeffs2);
|
|
hess[1][2] = hesscon12(coeffs2);
|
|
|
|
/* Now adjust for f^2 instead of f, and make Hessian symmetric. */
|
|
for (i = 0; i < 3; i++) {
|
|
for (j = i; j < 3; j++) {
|
|
hess[i][j] = 2 * (cval * hess[i][j] + cgrad[i] * cgrad[j]);
|
|
}
|
|
}
|
|
hess[1][0] = hess[0][1];
|
|
hess[2][0] = hess[0][2];
|
|
hess[2][1] = hess[1][2];
|
|
}
|
|
|
|
static double hesscon00(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1tt * a2 * a3 + a1t * a2t * a3 + a1t * a2 * a3t + a1t * a2t * a3 + a1 * a2tt * a3 +
|
|
a1 * a2t * a3t + a1t * a2 * a3t + a1 * a2t * a3t + a1 * a2 * a3tt) *
|
|
coeffs2[0];
|
|
val += (b1tt * b2 * b3 + b1t * b2t * b3 + b1t * b2 * b3t + b1t * b2t * b3 + b1 * b2tt * b3 +
|
|
b1 * b2t * b3t + b1t * b2 * b3t + b1 * b2t * b3t + b1 * b2 * b3tt) *
|
|
coeffs2[1];
|
|
val += (c1tt * c2 * c3 + c1t * c2t * c3 + c1t * c2 * c3t + c1t * c2t * c3 + c1 * c2tt * c3 +
|
|
c1 * c2t * c3t + c1t * c2 * c3t + c1 * c2t * c3t + c1 * c2 * c3tt) *
|
|
coeffs2[2];
|
|
val += (a1tt * a2 * b3 + a1tt * b2 * a3 + b1tt * a2 * a3 + a1t * a2t * b3 + a1t * b2t * a3 +
|
|
b1t * a2t * a3 + a1t * a2 * b3t + a1t * b2 * a3t + b1t * a2 * a3t + a1t * a2t * b3 +
|
|
a1t * b2t * a3 + b1t * a2t * a3 + a1 * a2tt * b3 + a1 * b2tt * a3 + b1 * a2tt * a3 +
|
|
a1 * a2t * b3t + a1 * b2t * a3t + b1 * a2t * a3t + a1t * a2 * b3t + a1t * b2 * a3t +
|
|
b1t * a2 * a3t + a1 * a2t * b3t + a1 * b2t * a3t + b1 * a2t * a3t + a1 * a2 * b3tt +
|
|
a1 * b2 * a3tt + b1 * a2 * a3tt) *
|
|
coeffs2[3];
|
|
val += (a1tt * a2 * c3 + a1tt * c2 * a3 + c1tt * a2 * a3 + a1t * a2t * c3 + a1t * c2t * a3 +
|
|
c1t * a2t * a3 + a1t * a2 * c3t + a1t * c2 * a3t + c1t * a2 * a3t + a1t * a2t * c3 +
|
|
a1t * c2t * a3 + c1t * a2t * a3 + a1 * a2tt * c3 + a1 * c2tt * a3 + c1 * a2tt * a3 +
|
|
a1 * a2t * c3t + a1 * c2t * a3t + c1 * a2t * a3t + a1t * a2 * c3t + a1t * c2 * a3t +
|
|
c1t * a2 * a3t + a1 * a2t * c3t + a1 * c2t * a3t + c1 * a2t * a3t + a1 * a2 * c3tt +
|
|
a1 * c2 * a3tt + c1 * a2 * a3tt) *
|
|
coeffs2[4];
|
|
val += (a1tt * b2 * b3 + b1tt * a2 * b3 + b1tt * b2 * a3 + a1t * b2t * b3 + b1t * a2t * b3 +
|
|
b1t * b2t * a3 + a1t * b2 * b3t + b1t * a2 * b3t + b1t * b2 * a3t + a1t * b2t * b3 +
|
|
b1t * a2t * b3 + b1t * b2t * a3 + a1 * b2tt * b3 + b1 * a2tt * b3 + b1 * b2tt * a3 +
|
|
a1 * b2t * b3t + b1 * a2t * b3t + b1 * b2t * a3t + a1t * b2 * b3t + b1t * a2 * b3t +
|
|
b1t * b2 * a3t + a1 * b2t * b3t + b1 * a2t * b3t + b1 * b2t * a3t + a1 * b2 * b3tt +
|
|
b1 * a2 * b3tt + b1 * b2 * a3tt) *
|
|
coeffs2[5];
|
|
val += (b1tt * b2 * c3 + b1tt * c2 * b3 + c1tt * b2 * b3 + b1t * b2t * c3 + b1t * c2t * b3 +
|
|
c1t * b2t * b3 + b1t * b2 * c3t + b1t * c2 * b3t + c1t * b2 * b3t + b1t * b2t * c3 +
|
|
b1t * c2t * b3 + c1t * b2t * b3 + b1 * b2tt * c3 + b1 * c2tt * b3 + c1 * b2tt * b3 +
|
|
b1 * b2t * c3t + b1 * c2t * b3t + c1 * b2t * b3t + b1t * b2 * c3t + b1t * c2 * b3t +
|
|
c1t * b2 * b3t + b1 * b2t * c3t + b1 * c2t * b3t + c1 * b2t * b3t + b1 * b2 * c3tt +
|
|
b1 * c2 * b3tt + c1 * b2 * b3tt) *
|
|
coeffs2[6];
|
|
val += (a1tt * c2 * c3 + c1tt * a2 * c3 + c1tt * c2 * a3 + a1t * c2t * c3 + c1t * a2t * c3 +
|
|
c1t * c2t * a3 + a1t * c2 * c3t + c1t * a2 * c3t + c1t * c2 * a3t + a1t * c2t * c3 +
|
|
c1t * a2t * c3 + c1t * c2t * a3 + a1 * c2tt * c3 + c1 * a2tt * c3 + c1 * c2tt * a3 +
|
|
a1 * c2t * c3t + c1 * a2t * c3t + c1 * c2t * a3t + a1t * c2 * c3t + c1t * a2 * c3t +
|
|
c1t * c2 * a3t + a1 * c2t * c3t + c1 * a2t * c3t + c1 * c2t * a3t + a1 * c2 * c3tt +
|
|
c1 * a2 * c3tt + c1 * c2 * a3tt) *
|
|
coeffs2[7];
|
|
val += (b1tt * c2 * c3 + c1tt * b2 * c3 + c1tt * c2 * b3 + b1t * c2t * c3 + c1t * b2t * c3 +
|
|
c1t * c2t * b3 + b1t * c2 * c3t + c1t * b2 * c3t + c1t * c2 * b3t + b1t * c2t * c3 +
|
|
c1t * b2t * c3 + c1t * c2t * b3 + b1 * c2tt * c3 + c1 * b2tt * c3 + c1 * c2tt * b3 +
|
|
b1 * c2t * c3t + c1 * b2t * c3t + c1 * c2t * b3t + b1t * c2 * c3t + c1t * b2 * c3t +
|
|
c1t * c2 * b3t + b1 * c2t * c3t + c1 * b2t * c3t + c1 * c2t * b3t + b1 * c2 * c3tt +
|
|
c1 * b2 * c3tt + c1 * c2 * b3tt) *
|
|
coeffs2[8];
|
|
val += (a1tt * b2 * c3 + a1tt * c2 * b3 + b1tt * a2 * c3 + a1t * b2t * c3 + a1t * c2t * b3 +
|
|
b1t * a2t * c3 + a1t * b2 * c3t + a1t * c2 * b3t + b1t * a2 * c3t + a1t * b2t * c3 +
|
|
a1t * c2t * b3 + b1t * a2t * c3 + a1 * b2tt * c3 + a1 * c2tt * b3 + b1 * a2tt * c3 +
|
|
a1 * b2t * c3t + a1 * c2t * b3t + b1 * a2t * c3t + a1t * b2 * c3t + a1t * c2 * b3t +
|
|
b1t * a2 * c3t + a1 * b2t * c3t + a1 * c2t * b3t + b1 * a2t * c3t + a1 * b2 * c3tt +
|
|
a1 * c2 * b3tt + b1 * a2 * c3tt + b1tt * c2 * a3 + c1tt * a2 * b3 + c1tt * b2 * a3 +
|
|
b1t * c2t * a3 + c1t * a2t * b3 + c1t * b2t * a3 + b1t * c2 * a3t + c1t * a2 * b3t +
|
|
c1t * b2 * a3t + b1t * c2t * a3 + c1t * a2t * b3 + c1t * b2t * a3 + b1 * c2tt * a3 +
|
|
c1 * a2tt * b3 + c1 * b2tt * a3 + b1 * c2t * a3t + c1 * a2t * b3t + c1 * b2t * a3t +
|
|
b1t * c2 * a3t + c1t * a2 * b3t + c1t * b2 * a3t + b1 * c2t * a3t + c1 * a2t * b3t +
|
|
c1 * b2t * a3t + b1 * c2 * a3tt + c1 * a2 * b3tt + c1 * b2 * a3tt) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|
|
static double hesscon11(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1pp * a2 * a3 + a1p * a2p * a3 + a1p * a2 * a3p + a1p * a2p * a3 + a1 * a2pp * a3 +
|
|
a1 * a2p * a3p + a1p * a2 * a3p + a1 * a2p * a3p + a1 * a2 * a3pp) *
|
|
coeffs2[0];
|
|
val += (b1pp * b2 * b3 + b1p * b2p * b3 + b1p * b2 * b3p + b1p * b2p * b3 + b1 * b2pp * b3 +
|
|
b1 * b2p * b3p + b1p * b2 * b3p + b1 * b2p * b3p + b1 * b2 * b3pp) *
|
|
coeffs2[1];
|
|
val += (c1pp * c2 * c3 + c1p * c2p * c3 + c1p * c2 * c3p + c1p * c2p * c3 + c1 * c2pp * c3 +
|
|
c1 * c2p * c3p + c1p * c2 * c3p + c1 * c2p * c3p + c1 * c2 * c3pp) *
|
|
coeffs2[2];
|
|
val += (a1pp * a2 * b3 + a1pp * b2 * a3 + b1pp * a2 * a3 + a1p * a2p * b3 + a1p * b2p * a3 +
|
|
b1p * a2p * a3 + a1p * a2 * b3p + a1p * b2 * a3p + b1p * a2 * a3p + a1p * a2p * b3 +
|
|
a1p * b2p * a3 + b1p * a2p * a3 + a1 * a2pp * b3 + a1 * b2pp * a3 + b1 * a2pp * a3 +
|
|
a1 * a2p * b3p + a1 * b2p * a3p + b1 * a2p * a3p + a1p * a2 * b3p + a1p * b2 * a3p +
|
|
b1p * a2 * a3p + a1 * a2p * b3p + a1 * b2p * a3p + b1 * a2p * a3p + a1 * a2 * b3pp +
|
|
a1 * b2 * a3pp + b1 * a2 * a3pp) *
|
|
coeffs2[3];
|
|
val += (a1pp * a2 * c3 + a1pp * c2 * a3 + c1pp * a2 * a3 + a1p * a2p * c3 + a1p * c2p * a3 +
|
|
c1p * a2p * a3 + a1p * a2 * c3p + a1p * c2 * a3p + c1p * a2 * a3p + a1p * a2p * c3 +
|
|
a1p * c2p * a3 + c1p * a2p * a3 + a1 * a2pp * c3 + a1 * c2pp * a3 + c1 * a2pp * a3 +
|
|
a1 * a2p * c3p + a1 * c2p * a3p + c1 * a2p * a3p + a1p * a2 * c3p + a1p * c2 * a3p +
|
|
c1p * a2 * a3p + a1 * a2p * c3p + a1 * c2p * a3p + c1 * a2p * a3p + a1 * a2 * c3pp +
|
|
a1 * c2 * a3pp + c1 * a2 * a3pp) *
|
|
coeffs2[4];
|
|
val += (a1pp * b2 * b3 + b1pp * a2 * b3 + b1pp * b2 * a3 + a1p * b2p * b3 + b1p * a2p * b3 +
|
|
b1p * b2p * a3 + a1p * b2 * b3p + b1p * a2 * b3p + b1p * b2 * a3p + a1p * b2p * b3 +
|
|
b1p * a2p * b3 + b1p * b2p * a3 + a1 * b2pp * b3 + b1 * a2pp * b3 + b1 * b2pp * a3 +
|
|
a1 * b2p * b3p + b1 * a2p * b3p + b1 * b2p * a3p + a1p * b2 * b3p + b1p * a2 * b3p +
|
|
b1p * b2 * a3p + a1 * b2p * b3p + b1 * a2p * b3p + b1 * b2p * a3p + a1 * b2 * b3pp +
|
|
b1 * a2 * b3pp + b1 * b2 * a3pp) *
|
|
coeffs2[5];
|
|
val += (b1pp * b2 * c3 + b1pp * c2 * b3 + c1pp * b2 * b3 + b1p * b2p * c3 + b1p * c2p * b3 +
|
|
c1p * b2p * b3 + b1p * b2 * c3p + b1p * c2 * b3p + c1p * b2 * b3p + b1p * b2p * c3 +
|
|
b1p * c2p * b3 + c1p * b2p * b3 + b1 * b2pp * c3 + b1 * c2pp * b3 + c1 * b2pp * b3 +
|
|
b1 * b2p * c3p + b1 * c2p * b3p + c1 * b2p * b3p + b1p * b2 * c3p + b1p * c2 * b3p +
|
|
c1p * b2 * b3p + b1 * b2p * c3p + b1 * c2p * b3p + c1 * b2p * b3p + b1 * b2 * c3pp +
|
|
b1 * c2 * b3pp + c1 * b2 * b3pp) *
|
|
coeffs2[6];
|
|
val += (a1pp * c2 * c3 + c1pp * a2 * c3 + c1pp * c2 * a3 + a1p * c2p * c3 + c1p * a2p * c3 +
|
|
c1p * c2p * a3 + a1p * c2 * c3p + c1p * a2 * c3p + c1p * c2 * a3p + a1p * c2p * c3 +
|
|
c1p * a2p * c3 + c1p * c2p * a3 + a1 * c2pp * c3 + c1 * a2pp * c3 + c1 * c2pp * a3 +
|
|
a1 * c2p * c3p + c1 * a2p * c3p + c1 * c2p * a3p + a1p * c2 * c3p + c1p * a2 * c3p +
|
|
c1p * c2 * a3p + a1 * c2p * c3p + c1 * a2p * c3p + c1 * c2p * a3p + a1 * c2 * c3pp +
|
|
c1 * a2 * c3pp + c1 * c2 * a3pp) *
|
|
coeffs2[7];
|
|
val += (b1pp * c2 * c3 + c1pp * b2 * c3 + c1pp * c2 * b3 + b1p * c2p * c3 + c1p * b2p * c3 +
|
|
c1p * c2p * b3 + b1p * c2 * c3p + c1p * b2 * c3p + c1p * c2 * b3p + b1p * c2p * c3 +
|
|
c1p * b2p * c3 + c1p * c2p * b3 + b1 * c2pp * c3 + c1 * b2pp * c3 + c1 * c2pp * b3 +
|
|
b1 * c2p * c3p + c1 * b2p * c3p + c1 * c2p * b3p + b1p * c2 * c3p + c1p * b2 * c3p +
|
|
c1p * c2 * b3p + b1 * c2p * c3p + c1 * b2p * c3p + c1 * c2p * b3p + b1 * c2 * c3pp +
|
|
c1 * b2 * c3pp + c1 * c2 * b3pp) *
|
|
coeffs2[8];
|
|
val += (a1pp * b2 * c3 + a1pp * c2 * b3 + b1pp * a2 * c3 + a1p * b2p * c3 + a1p * c2p * b3 +
|
|
b1p * a2p * c3 + a1p * b2 * c3p + a1p * c2 * b3p + b1p * a2 * c3p + a1p * b2p * c3 +
|
|
a1p * c2p * b3 + b1p * a2p * c3 + a1 * b2pp * c3 + a1 * c2pp * b3 + b1 * a2pp * c3 +
|
|
a1 * b2p * c3p + a1 * c2p * b3p + b1 * a2p * c3p + a1p * b2 * c3p + a1p * c2 * b3p +
|
|
b1p * a2 * c3p + a1 * b2p * c3p + a1 * c2p * b3p + b1 * a2p * c3p + a1 * b2 * c3pp +
|
|
a1 * c2 * b3pp + b1 * a2 * c3pp + b1pp * c2 * a3 + c1pp * a2 * b3 + c1pp * b2 * a3 +
|
|
b1p * c2p * a3 + c1p * a2p * b3 + c1p * b2p * a3 + b1p * c2 * a3p + c1p * a2 * b3p +
|
|
c1p * b2 * a3p + b1p * c2p * a3 + c1p * a2p * b3 + c1p * b2p * a3 + b1 * c2pp * a3 +
|
|
c1 * a2pp * b3 + c1 * b2pp * a3 + b1 * c2p * a3p + c1 * a2p * b3p + c1 * b2p * a3p +
|
|
b1p * c2 * a3p + c1p * a2 * b3p + c1p * b2 * a3p + b1 * c2p * a3p + c1 * a2p * b3p +
|
|
c1 * b2p * a3p + b1 * c2 * a3pp + c1 * a2 * b3pp + c1 * b2 * a3pp) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|
|
static double hesscon22(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1gg * a2 * a3 + a1g * a2g * a3 + a1g * a2 * a3g + a1g * a2g * a3 + a1 * a2gg * a3 +
|
|
a1 * a2g * a3g + a1g * a2 * a3g + a1 * a2g * a3g + a1 * a2 * a3gg) *
|
|
coeffs2[0];
|
|
val += (b1gg * b2 * b3 + b1g * b2g * b3 + b1g * b2 * b3g + b1g * b2g * b3 + b1 * b2gg * b3 +
|
|
b1 * b2g * b3g + b1g * b2 * b3g + b1 * b2g * b3g + b1 * b2 * b3gg) *
|
|
coeffs2[1];
|
|
val += (c1gg * c2 * c3 + c1g * c2g * c3 + c1g * c2 * c3g + c1g * c2g * c3 + c1 * c2gg * c3 +
|
|
c1 * c2g * c3g + c1g * c2 * c3g + c1 * c2g * c3g + c1 * c2 * c3gg) *
|
|
coeffs2[2];
|
|
val += (a1gg * a2 * b3 + a1gg * b2 * a3 + b1gg * a2 * a3 + a1g * a2g * b3 + a1g * b2g * a3 +
|
|
b1g * a2g * a3 + a1g * a2 * b3g + a1g * b2 * a3g + b1g * a2 * a3g + a1g * a2g * b3 +
|
|
a1g * b2g * a3 + b1g * a2g * a3 + a1 * a2gg * b3 + a1 * b2gg * a3 + b1 * a2gg * a3 +
|
|
a1 * a2g * b3g + a1 * b2g * a3g + b1 * a2g * a3g + a1g * a2 * b3g + a1g * b2 * a3g +
|
|
b1g * a2 * a3g + a1 * a2g * b3g + a1 * b2g * a3g + b1 * a2g * a3g + a1 * a2 * b3gg +
|
|
a1 * b2 * a3gg + b1 * a2 * a3gg) *
|
|
coeffs2[3];
|
|
val += (a1gg * a2 * c3 + a1gg * c2 * a3 + c1gg * a2 * a3 + a1g * a2g * c3 + a1g * c2g * a3 +
|
|
c1g * a2g * a3 + a1g * a2 * c3g + a1g * c2 * a3g + c1g * a2 * a3g + a1g * a2g * c3 +
|
|
a1g * c2g * a3 + c1g * a2g * a3 + a1 * a2gg * c3 + a1 * c2gg * a3 + c1 * a2gg * a3 +
|
|
a1 * a2g * c3g + a1 * c2g * a3g + c1 * a2g * a3g + a1g * a2 * c3g + a1g * c2 * a3g +
|
|
c1g * a2 * a3g + a1 * a2g * c3g + a1 * c2g * a3g + c1 * a2g * a3g + a1 * a2 * c3gg +
|
|
a1 * c2 * a3gg + c1 * a2 * a3gg) *
|
|
coeffs2[4];
|
|
val += (a1gg * b2 * b3 + b1gg * a2 * b3 + b1gg * b2 * a3 + a1g * b2g * b3 + b1g * a2g * b3 +
|
|
b1g * b2g * a3 + a1g * b2 * b3g + b1g * a2 * b3g + b1g * b2 * a3g + a1g * b2g * b3 +
|
|
b1g * a2g * b3 + b1g * b2g * a3 + a1 * b2gg * b3 + b1 * a2gg * b3 + b1 * b2gg * a3 +
|
|
a1 * b2g * b3g + b1 * a2g * b3g + b1 * b2g * a3g + a1g * b2 * b3g + b1g * a2 * b3g +
|
|
b1g * b2 * a3g + a1 * b2g * b3g + b1 * a2g * b3g + b1 * b2g * a3g + a1 * b2 * b3gg +
|
|
b1 * a2 * b3gg + b1 * b2 * a3gg) *
|
|
coeffs2[5];
|
|
val += (b1gg * b2 * c3 + b1gg * c2 * b3 + c1gg * b2 * b3 + b1g * b2g * c3 + b1g * c2g * b3 +
|
|
c1g * b2g * b3 + b1g * b2 * c3g + b1g * c2 * b3g + c1g * b2 * b3g + b1g * b2g * c3 +
|
|
b1g * c2g * b3 + c1g * b2g * b3 + b1 * b2gg * c3 + b1 * c2gg * b3 + c1 * b2gg * b3 +
|
|
b1 * b2g * c3g + b1 * c2g * b3g + c1 * b2g * b3g + b1g * b2 * c3g + b1g * c2 * b3g +
|
|
c1g * b2 * b3g + b1 * b2g * c3g + b1 * c2g * b3g + c1 * b2g * b3g + b1 * b2 * c3gg +
|
|
b1 * c2 * b3gg + c1 * b2 * b3gg) *
|
|
coeffs2[6];
|
|
val += (a1gg * c2 * c3 + c1gg * a2 * c3 + c1gg * c2 * a3 + a1g * c2g * c3 + c1g * a2g * c3 +
|
|
c1g * c2g * a3 + a1g * c2 * c3g + c1g * a2 * c3g + c1g * c2 * a3g + a1g * c2g * c3 +
|
|
c1g * a2g * c3 + c1g * c2g * a3 + a1 * c2gg * c3 + c1 * a2gg * c3 + c1 * c2gg * a3 +
|
|
a1 * c2g * c3g + c1 * a2g * c3g + c1 * c2g * a3g + a1g * c2 * c3g + c1g * a2 * c3g +
|
|
c1g * c2 * a3g + a1 * c2g * c3g + c1 * a2g * c3g + c1 * c2g * a3g + a1 * c2 * c3gg +
|
|
c1 * a2 * c3gg + c1 * c2 * a3gg) *
|
|
coeffs2[7];
|
|
val += (b1gg * c2 * c3 + c1gg * b2 * c3 + c1gg * c2 * b3 + b1g * c2g * c3 + c1g * b2g * c3 +
|
|
c1g * c2g * b3 + b1g * c2 * c3g + c1g * b2 * c3g + c1g * c2 * b3g + b1g * c2g * c3 +
|
|
c1g * b2g * c3 + c1g * c2g * b3 + b1 * c2gg * c3 + c1 * b2gg * c3 + c1 * c2gg * b3 +
|
|
b1 * c2g * c3g + c1 * b2g * c3g + c1 * c2g * b3g + b1g * c2 * c3g + c1g * b2 * c3g +
|
|
c1g * c2 * b3g + b1 * c2g * c3g + c1 * b2g * c3g + c1 * c2g * b3g + b1 * c2 * c3gg +
|
|
c1 * b2 * c3gg + c1 * c2 * b3gg) *
|
|
coeffs2[8];
|
|
val += (a1gg * b2 * c3 + a1gg * c2 * b3 + b1gg * a2 * c3 + a1g * b2g * c3 + a1g * c2g * b3 +
|
|
b1g * a2g * c3 + a1g * b2 * c3g + a1g * c2 * b3g + b1g * a2 * c3g + a1g * b2g * c3 +
|
|
a1g * c2g * b3 + b1g * a2g * c3 + a1 * b2gg * c3 + a1 * c2gg * b3 + b1 * a2gg * c3 +
|
|
a1 * b2g * c3g + a1 * c2g * b3g + b1 * a2g * c3g + a1g * b2 * c3g + a1g * c2 * b3g +
|
|
b1g * a2 * c3g + a1 * b2g * c3g + a1 * c2g * b3g + b1 * a2g * c3g + a1 * b2 * c3gg +
|
|
a1 * c2 * b3gg + b1 * a2 * c3gg + b1gg * c2 * a3 + c1gg * a2 * b3 + c1gg * b2 * a3 +
|
|
b1g * c2g * a3 + c1g * a2g * b3 + c1g * b2g * a3 + b1g * c2 * a3g + c1g * a2 * b3g +
|
|
c1g * b2 * a3g + b1g * c2g * a3 + c1g * a2g * b3 + c1g * b2g * a3 + b1 * c2gg * a3 +
|
|
c1 * a2gg * b3 + c1 * b2gg * a3 + b1 * c2g * a3g + c1 * a2g * b3g + c1 * b2g * a3g +
|
|
b1g * c2 * a3g + c1g * a2 * b3g + c1g * b2 * a3g + b1 * c2g * a3g + c1 * a2g * b3g +
|
|
c1 * b2g * a3g + b1 * c2 * a3gg + c1 * a2 * b3gg + c1 * b2 * a3gg) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|
|
static double hesscon01(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1tp * a2 * a3 + a1p * a2t * a3 + a1p * a2 * a3t + a1t * a2p * a3 + a1 * a2tp * a3 +
|
|
a1 * a2p * a3t + a1t * a2 * a3p + a1 * a2t * a3p + a1 * a2 * a3tp) *
|
|
coeffs2[0];
|
|
val += (b1tp * b2 * b3 + b1p * b2t * b3 + b1p * b2 * b3t + b1t * b2p * b3 + b1 * b2tp * b3 +
|
|
b1 * b2p * b3t + b1t * b2 * b3p + b1 * b2t * b3p + b1 * b2 * b3tp) *
|
|
coeffs2[1];
|
|
val += (c1tp * c2 * c3 + c1p * c2t * c3 + c1p * c2 * c3t + c1t * c2p * c3 + c1 * c2tp * c3 +
|
|
c1 * c2p * c3t + c1t * c2 * c3p + c1 * c2t * c3p + c1 * c2 * c3tp) *
|
|
coeffs2[2];
|
|
val += (a1tp * a2 * b3 + a1tp * b2 * a3 + b1tp * a2 * a3 + a1t * a2p * b3 + a1t * b2p * a3 +
|
|
b1t * a2p * a3 + a1t * a2 * b3p + a1t * b2 * a3p + b1t * a2 * a3p + a1p * a2t * b3 +
|
|
a1p * b2t * a3 + b1p * a2t * a3 + a1 * a2tp * b3 + a1 * b2tp * a3 + b1 * a2tp * a3 +
|
|
a1 * a2t * b3p + a1 * b2t * a3p + b1 * a2t * a3p + a1p * a2 * b3t + a1p * b2 * a3t +
|
|
b1p * a2 * a3t + a1 * a2p * b3t + a1 * b2p * a3t + b1 * a2p * a3t + a1 * a2 * b3tp +
|
|
a1 * b2 * a3tp + b1 * a2 * a3tp) *
|
|
coeffs2[3];
|
|
val += (a1tp * a2 * c3 + a1tp * c2 * a3 + c1tp * a2 * a3 + a1t * a2p * c3 + a1t * c2p * a3 +
|
|
c1t * a2p * a3 + a1t * a2 * c3p + a1t * c2 * a3p + c1t * a2 * a3p + a1p * a2t * c3 +
|
|
a1p * c2t * a3 + c1p * a2t * a3 + a1 * a2tp * c3 + a1 * c2tp * a3 + c1 * a2tp * a3 +
|
|
a1 * a2t * c3p + a1 * c2t * a3p + c1 * a2t * a3p + a1p * a2 * c3t + a1p * c2 * a3t +
|
|
c1p * a2 * a3t + a1 * a2p * c3t + a1 * c2p * a3t + c1 * a2p * a3t + a1 * a2 * c3tp +
|
|
a1 * c2 * a3tp + c1 * a2 * a3tp) *
|
|
coeffs2[4];
|
|
val += (a1tp * b2 * b3 + b1tp * a2 * b3 + b1tp * b2 * a3 + a1t * b2p * b3 + b1t * a2p * b3 +
|
|
b1t * b2p * a3 + a1t * b2 * b3p + b1t * a2 * b3p + b1t * b2 * a3p + a1p * b2t * b3 +
|
|
b1p * a2t * b3 + b1p * b2t * a3 + a1 * b2tp * b3 + b1 * a2tp * b3 + b1 * b2tp * a3 +
|
|
a1 * b2t * b3p + b1 * a2t * b3p + b1 * b2t * a3p + a1p * b2 * b3t + b1p * a2 * b3t +
|
|
b1p * b2 * a3t + a1 * b2p * b3t + b1 * a2p * b3t + b1 * b2p * a3t + a1 * b2 * b3tp +
|
|
b1 * a2 * b3tp + b1 * b2 * a3tp) *
|
|
coeffs2[5];
|
|
val += (b1tp * b2 * c3 + b1tp * c2 * b3 + c1tp * b2 * b3 + b1t * b2p * c3 + b1t * c2p * b3 +
|
|
c1t * b2p * b3 + b1t * b2 * c3p + b1t * c2 * b3p + c1t * b2 * b3p + b1p * b2t * c3 +
|
|
b1p * c2t * b3 + c1p * b2t * b3 + b1 * b2tp * c3 + b1 * c2tp * b3 + c1 * b2tp * b3 +
|
|
b1 * b2t * c3p + b1 * c2t * b3p + c1 * b2t * b3p + b1p * b2 * c3t + b1p * c2 * b3t +
|
|
c1p * b2 * b3t + b1 * b2p * c3t + b1 * c2p * b3t + c1 * b2p * b3t + b1 * b2 * c3tp +
|
|
b1 * c2 * b3tp + c1 * b2 * b3tp) *
|
|
coeffs2[6];
|
|
val += (a1tp * c2 * c3 + c1tp * a2 * c3 + c1tp * c2 * a3 + a1t * c2p * c3 + c1t * a2p * c3 +
|
|
c1t * c2p * a3 + a1t * c2 * c3p + c1t * a2 * c3p + c1t * c2 * a3p + a1p * c2t * c3 +
|
|
c1p * a2t * c3 + c1p * c2t * a3 + a1 * c2tp * c3 + c1 * a2tp * c3 + c1 * c2tp * a3 +
|
|
a1 * c2t * c3p + c1 * a2t * c3p + c1 * c2t * a3p + a1p * c2 * c3t + c1p * a2 * c3t +
|
|
c1p * c2 * a3t + a1 * c2p * c3t + c1 * a2p * c3t + c1 * c2p * a3t + a1 * c2 * c3tp +
|
|
c1 * a2 * c3tp + c1 * c2 * a3tp) *
|
|
coeffs2[7];
|
|
val += (b1tp * c2 * c3 + c1tp * b2 * c3 + c1tp * c2 * b3 + b1t * c2p * c3 + c1t * b2p * c3 +
|
|
c1t * c2p * b3 + b1t * c2 * c3p + c1t * b2 * c3p + c1t * c2 * b3p + b1p * c2t * c3 +
|
|
c1p * b2t * c3 + c1p * c2t * b3 + b1 * c2tp * c3 + c1 * b2tp * c3 + c1 * c2tp * b3 +
|
|
b1 * c2t * c3p + c1 * b2t * c3p + c1 * c2t * b3p + b1p * c2 * c3t + c1p * b2 * c3t +
|
|
c1p * c2 * b3t + b1 * c2p * c3t + c1 * b2p * c3t + c1 * c2p * b3t + b1 * c2 * c3tp +
|
|
c1 * b2 * c3tp + c1 * c2 * b3tp) *
|
|
coeffs2[8];
|
|
val += (a1tp * b2 * c3 + a1tp * c2 * b3 + b1tp * a2 * c3 + a1t * b2p * c3 + a1t * c2p * b3 +
|
|
b1t * a2p * c3 + a1t * b2 * c3p + a1t * c2 * b3p + b1t * a2 * c3p + a1p * b2t * c3 +
|
|
a1p * c2t * b3 + b1p * a2t * c3 + a1 * b2tp * c3 + a1 * c2tp * b3 + b1 * a2tp * c3 +
|
|
a1 * b2t * c3p + a1 * c2t * b3p + b1 * a2t * c3p + a1p * b2 * c3t + a1p * c2 * b3t +
|
|
b1p * a2 * c3t + a1 * b2p * c3t + a1 * c2p * b3t + b1 * a2p * c3t + a1 * b2 * c3tp +
|
|
a1 * c2 * b3tp + b1 * a2 * c3tp + b1tp * c2 * a3 + c1tp * a2 * b3 + c1tp * b2 * a3 +
|
|
b1t * c2p * a3 + c1t * a2p * b3 + c1t * b2p * a3 + b1t * c2 * a3p + c1t * a2 * b3p +
|
|
c1t * b2 * a3p + b1p * c2t * a3 + c1p * a2t * b3 + c1p * b2t * a3 + b1 * c2tp * a3 +
|
|
c1 * a2tp * b3 + c1 * b2tp * a3 + b1 * c2t * a3p + c1 * a2t * b3p + c1 * b2t * a3p +
|
|
b1p * c2 * a3t + c1p * a2 * b3t + c1p * b2 * a3t + b1 * c2p * a3t + c1 * a2p * b3t +
|
|
c1 * b2p * a3t + b1 * c2 * a3tp + c1 * a2 * b3tp + c1 * b2 * a3tp) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|
|
static double hesscon02(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1tg * a2 * a3 + a1g * a2t * a3 + a1g * a2 * a3t + a1t * a2g * a3 + a1 * a2tg * a3 +
|
|
a1 * a2g * a3t + a1t * a2 * a3g + a1 * a2t * a3g + a1 * a2 * a3tg) *
|
|
coeffs2[0];
|
|
val += (b1tg * b2 * b3 + b1g * b2t * b3 + b1g * b2 * b3t + b1t * b2g * b3 + b1 * b2tg * b3 +
|
|
b1 * b2g * b3t + b1t * b2 * b3g + b1 * b2t * b3g + b1 * b2 * b3tg) *
|
|
coeffs2[1];
|
|
val += (c1tg * c2 * c3 + c1g * c2t * c3 + c1g * c2 * c3t + c1t * c2g * c3 + c1 * c2tg * c3 +
|
|
c1 * c2g * c3t + c1t * c2 * c3g + c1 * c2t * c3g + c1 * c2 * c3tg) *
|
|
coeffs2[2];
|
|
val += (a1tg * a2 * b3 + a1tg * b2 * a3 + b1tg * a2 * a3 + a1t * a2g * b3 + a1t * b2g * a3 +
|
|
b1t * a2g * a3 + a1t * a2 * b3g + a1t * b2 * a3g + b1t * a2 * a3g + a1g * a2t * b3 +
|
|
a1g * b2t * a3 + b1g * a2t * a3 + a1 * a2tg * b3 + a1 * b2tg * a3 + b1 * a2tg * a3 +
|
|
a1 * a2t * b3g + a1 * b2t * a3g + b1 * a2t * a3g + a1g * a2 * b3t + a1g * b2 * a3t +
|
|
b1g * a2 * a3t + a1 * a2g * b3t + a1 * b2g * a3t + b1 * a2g * a3t + a1 * a2 * b3tg +
|
|
a1 * b2 * a3tg + b1 * a2 * a3tg) *
|
|
coeffs2[3];
|
|
val += (a1tg * a2 * c3 + a1tg * c2 * a3 + c1tg * a2 * a3 + a1t * a2g * c3 + a1t * c2g * a3 +
|
|
c1t * a2g * a3 + a1t * a2 * c3g + a1t * c2 * a3g + c1t * a2 * a3g + a1g * a2t * c3 +
|
|
a1g * c2t * a3 + c1g * a2t * a3 + a1 * a2tg * c3 + a1 * c2tg * a3 + c1 * a2tg * a3 +
|
|
a1 * a2t * c3g + a1 * c2t * a3g + c1 * a2t * a3g + a1g * a2 * c3t + a1g * c2 * a3t +
|
|
c1g * a2 * a3t + a1 * a2g * c3t + a1 * c2g * a3t + c1 * a2g * a3t + a1 * a2 * c3tg +
|
|
a1 * c2 * a3tg + c1 * a2 * a3tg) *
|
|
coeffs2[4];
|
|
val += (a1tg * b2 * b3 + b1tg * a2 * b3 + b1tg * b2 * a3 + a1t * b2g * b3 + b1t * a2g * b3 +
|
|
b1t * b2g * a3 + a1t * b2 * b3g + b1t * a2 * b3g + b1t * b2 * a3g + a1g * b2t * b3 +
|
|
b1g * a2t * b3 + b1g * b2t * a3 + a1 * b2tg * b3 + b1 * a2tg * b3 + b1 * b2tg * a3 +
|
|
a1 * b2t * b3g + b1 * a2t * b3g + b1 * b2t * a3g + a1g * b2 * b3t + b1g * a2 * b3t +
|
|
b1g * b2 * a3t + a1 * b2g * b3t + b1 * a2g * b3t + b1 * b2g * a3t + a1 * b2 * b3tg +
|
|
b1 * a2 * b3tg + b1 * b2 * a3tg) *
|
|
coeffs2[5];
|
|
val += (b1tg * b2 * c3 + b1tg * c2 * b3 + c1tg * b2 * b3 + b1t * b2g * c3 + b1t * c2g * b3 +
|
|
c1t * b2g * b3 + b1t * b2 * c3g + b1t * c2 * b3g + c1t * b2 * b3g + b1g * b2t * c3 +
|
|
b1g * c2t * b3 + c1g * b2t * b3 + b1 * b2tg * c3 + b1 * c2tg * b3 + c1 * b2tg * b3 +
|
|
b1 * b2t * c3g + b1 * c2t * b3g + c1 * b2t * b3g + b1g * b2 * c3t + b1g * c2 * b3t +
|
|
c1g * b2 * b3t + b1 * b2g * c3t + b1 * c2g * b3t + c1 * b2g * b3t + b1 * b2 * c3tg +
|
|
b1 * c2 * b3tg + c1 * b2 * b3tg) *
|
|
coeffs2[6];
|
|
val += (a1tg * c2 * c3 + c1tg * a2 * c3 + c1tg * c2 * a3 + a1t * c2g * c3 + c1t * a2g * c3 +
|
|
c1t * c2g * a3 + a1t * c2 * c3g + c1t * a2 * c3g + c1t * c2 * a3g + a1g * c2t * c3 +
|
|
c1g * a2t * c3 + c1g * c2t * a3 + a1 * c2tg * c3 + c1 * a2tg * c3 + c1 * c2tg * a3 +
|
|
a1 * c2t * c3g + c1 * a2t * c3g + c1 * c2t * a3g + a1g * c2 * c3t + c1g * a2 * c3t +
|
|
c1g * c2 * a3t + a1 * c2g * c3t + c1 * a2g * c3t + c1 * c2g * a3t + a1 * c2 * c3tg +
|
|
c1 * a2 * c3tg + c1 * c2 * a3tg) *
|
|
coeffs2[7];
|
|
val += (b1tg * c2 * c3 + c1tg * b2 * c3 + c1tg * c2 * b3 + b1t * c2g * c3 + c1t * b2g * c3 +
|
|
c1t * c2g * b3 + b1t * c2 * c3g + c1t * b2 * c3g + c1t * c2 * b3g + b1g * c2t * c3 +
|
|
c1g * b2t * c3 + c1g * c2t * b3 + b1 * c2tg * c3 + c1 * b2tg * c3 + c1 * c2tg * b3 +
|
|
b1 * c2t * c3g + c1 * b2t * c3g + c1 * c2t * b3g + b1g * c2 * c3t + c1g * b2 * c3t +
|
|
c1g * c2 * b3t + b1 * c2g * c3t + c1 * b2g * c3t + c1 * c2g * b3t + b1 * c2 * c3tg +
|
|
c1 * b2 * c3tg + c1 * c2 * b3tg) *
|
|
coeffs2[8];
|
|
val += (a1tg * b2 * c3 + a1tg * c2 * b3 + b1tg * a2 * c3 + a1t * b2g * c3 + a1t * c2g * b3 +
|
|
b1t * a2g * c3 + a1t * b2 * c3g + a1t * c2 * b3g + b1t * a2 * c3g + a1g * b2t * c3 +
|
|
a1g * c2t * b3 + b1g * a2t * c3 + a1 * b2tg * c3 + a1 * c2tg * b3 + b1 * a2tg * c3 +
|
|
a1 * b2t * c3g + a1 * c2t * b3g + b1 * a2t * c3g + a1g * b2 * c3t + a1g * c2 * b3t +
|
|
b1g * a2 * c3t + a1 * b2g * c3t + a1 * c2g * b3t + b1 * a2g * c3t + a1 * b2 * c3tg +
|
|
a1 * c2 * b3tg + b1 * a2 * c3tg + b1tg * c2 * a3 + c1tg * a2 * b3 + c1tg * b2 * a3 +
|
|
b1t * c2g * a3 + c1t * a2g * b3 + c1t * b2g * a3 + b1t * c2 * a3g + c1t * a2 * b3g +
|
|
c1t * b2 * a3g + b1g * c2t * a3 + c1g * a2t * b3 + c1g * b2t * a3 + b1 * c2tg * a3 +
|
|
c1 * a2tg * b3 + c1 * b2tg * a3 + b1 * c2t * a3g + c1 * a2t * b3g + c1 * b2t * a3g +
|
|
b1g * c2 * a3t + c1g * a2 * b3t + c1g * b2 * a3t + b1 * c2g * a3t + c1 * a2g * b3t +
|
|
c1 * b2g * a3t + b1 * c2 * a3tg + c1 * a2 * b3tg + c1 * b2 * a3tg) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|
|
static double hesscon12(double *coeffs2)
|
|
{
|
|
double val;
|
|
|
|
val = (a1pg * a2 * a3 + a1g * a2p * a3 + a1g * a2 * a3p + a1p * a2g * a3 + a1 * a2pg * a3 +
|
|
a1 * a2g * a3p + a1p * a2 * a3g + a1 * a2p * a3g + a1 * a2 * a3pg) *
|
|
coeffs2[0];
|
|
val += (b1pg * b2 * b3 + b1g * b2p * b3 + b1g * b2 * b3p + b1p * b2g * b3 + b1 * b2pg * b3 +
|
|
b1 * b2g * b3p + b1p * b2 * b3g + b1 * b2p * b3g + b1 * b2 * b3pg) *
|
|
coeffs2[1];
|
|
val += (c1pg * c2 * c3 + c1g * c2p * c3 + c1g * c2 * c3p + c1p * c2g * c3 + c1 * c2pg * c3 +
|
|
c1 * c2g * c3p + c1p * c2 * c3g + c1 * c2p * c3g + c1 * c2 * c3pg) *
|
|
coeffs2[2];
|
|
val += (a1pg * a2 * b3 + a1pg * b2 * a3 + b1pg * a2 * a3 + a1p * a2g * b3 + a1p * b2g * a3 +
|
|
b1p * a2g * a3 + a1p * a2 * b3g + a1p * b2 * a3g + b1p * a2 * a3g + a1g * a2p * b3 +
|
|
a1g * b2p * a3 + b1g * a2p * a3 + a1 * a2pg * b3 + a1 * b2pg * a3 + b1 * a2pg * a3 +
|
|
a1 * a2p * b3g + a1 * b2p * a3g + b1 * a2p * a3g + a1g * a2 * b3p + a1g * b2 * a3p +
|
|
b1g * a2 * a3p + a1 * a2g * b3p + a1 * b2g * a3p + b1 * a2g * a3p + a1 * a2 * b3pg +
|
|
a1 * b2 * a3pg + b1 * a2 * a3pg) *
|
|
coeffs2[3];
|
|
val += (a1pg * a2 * c3 + a1pg * c2 * a3 + c1pg * a2 * a3 + a1p * a2g * c3 + a1p * c2g * a3 +
|
|
c1p * a2g * a3 + a1p * a2 * c3g + a1p * c2 * a3g + c1p * a2 * a3g + a1g * a2p * c3 +
|
|
a1g * c2p * a3 + c1g * a2p * a3 + a1 * a2pg * c3 + a1 * c2pg * a3 + c1 * a2pg * a3 +
|
|
a1 * a2p * c3g + a1 * c2p * a3g + c1 * a2p * a3g + a1g * a2 * c3p + a1g * c2 * a3p +
|
|
c1g * a2 * a3p + a1 * a2g * c3p + a1 * c2g * a3p + c1 * a2g * a3p + a1 * a2 * c3pg +
|
|
a1 * c2 * a3pg + c1 * a2 * a3pg) *
|
|
coeffs2[4];
|
|
val += (a1pg * b2 * b3 + b1pg * a2 * b3 + b1pg * b2 * a3 + a1p * b2g * b3 + b1p * a2g * b3 +
|
|
b1p * b2g * a3 + a1p * b2 * b3g + b1p * a2 * b3g + b1p * b2 * a3g + a1g * b2p * b3 +
|
|
b1g * a2p * b3 + b1g * b2p * a3 + a1 * b2pg * b3 + b1 * a2pg * b3 + b1 * b2pg * a3 +
|
|
a1 * b2p * b3g + b1 * a2p * b3g + b1 * b2p * a3g + a1g * b2 * b3p + b1g * a2 * b3p +
|
|
b1g * b2 * a3p + a1 * b2g * b3p + b1 * a2g * b3p + b1 * b2g * a3p + a1 * b2 * b3pg +
|
|
b1 * a2 * b3pg + b1 * b2 * a3pg) *
|
|
coeffs2[5];
|
|
val += (b1pg * b2 * c3 + b1pg * c2 * b3 + c1pg * b2 * b3 + b1p * b2g * c3 + b1p * c2g * b3 +
|
|
c1p * b2g * b3 + b1p * b2 * c3g + b1p * c2 * b3g + c1p * b2 * b3g + b1g * b2p * c3 +
|
|
b1g * c2p * b3 + c1g * b2p * b3 + b1 * b2pg * c3 + b1 * c2pg * b3 + c1 * b2pg * b3 +
|
|
b1 * b2p * c3g + b1 * c2p * b3g + c1 * b2p * b3g + b1g * b2 * c3p + b1g * c2 * b3p +
|
|
c1g * b2 * b3p + b1 * b2g * c3p + b1 * c2g * b3p + c1 * b2g * b3p + b1 * b2 * c3pg +
|
|
b1 * c2 * b3pg + c1 * b2 * b3pg) *
|
|
coeffs2[6];
|
|
val += (a1pg * c2 * c3 + c1pg * a2 * c3 + c1pg * c2 * a3 + a1p * c2g * c3 + c1p * a2g * c3 +
|
|
c1p * c2g * a3 + a1p * c2 * c3g + c1p * a2 * c3g + c1p * c2 * a3g + a1g * c2p * c3 +
|
|
c1g * a2p * c3 + c1g * c2p * a3 + a1 * c2pg * c3 + c1 * a2pg * c3 + c1 * c2pg * a3 +
|
|
a1 * c2p * c3g + c1 * a2p * c3g + c1 * c2p * a3g + a1g * c2 * c3p + c1g * a2 * c3p +
|
|
c1g * c2 * a3p + a1 * c2g * c3p + c1 * a2g * c3p + c1 * c2g * a3p + a1 * c2 * c3pg +
|
|
c1 * a2 * c3pg + c1 * c2 * a3pg) *
|
|
coeffs2[7];
|
|
val += (b1pg * c2 * c3 + c1pg * b2 * c3 + c1pg * c2 * b3 + b1p * c2g * c3 + c1p * b2g * c3 +
|
|
c1p * c2g * b3 + b1p * c2 * c3g + c1p * b2 * c3g + c1p * c2 * b3g + b1g * c2p * c3 +
|
|
c1g * b2p * c3 + c1g * c2p * b3 + b1 * c2pg * c3 + c1 * b2pg * c3 + c1 * c2pg * b3 +
|
|
b1 * c2p * c3g + c1 * b2p * c3g + c1 * c2p * b3g + b1g * c2 * c3p + c1g * b2 * c3p +
|
|
c1g * c2 * b3p + b1 * c2g * c3p + c1 * b2g * c3p + c1 * c2g * b3p + b1 * c2 * c3pg +
|
|
c1 * b2 * c3pg + c1 * c2 * b3pg) *
|
|
coeffs2[8];
|
|
val += (a1pg * b2 * c3 + a1pg * c2 * b3 + b1pg * a2 * c3 + a1p * b2g * c3 + a1p * c2g * b3 +
|
|
b1p * a2g * c3 + a1p * b2 * c3g + a1p * c2 * b3g + b1p * a2 * c3g + a1g * b2p * c3 +
|
|
a1g * c2p * b3 + b1g * a2p * c3 + a1 * b2pg * c3 + a1 * c2pg * b3 + b1 * a2pg * c3 +
|
|
a1 * b2p * c3g + a1 * c2p * b3g + b1 * a2p * c3g + a1g * b2 * c3p + a1g * c2 * b3p +
|
|
b1g * a2 * c3p + a1 * b2g * c3p + a1 * c2g * b3p + b1 * a2g * c3p + a1 * b2 * c3pg +
|
|
a1 * c2 * b3pg + b1 * a2 * c3pg + b1pg * c2 * a3 + c1pg * a2 * b3 + c1pg * b2 * a3 +
|
|
b1p * c2g * a3 + c1p * a2g * b3 + c1p * b2g * a3 + b1p * c2 * a3g + c1p * a2 * b3g +
|
|
c1p * b2 * a3g + b1g * c2p * a3 + c1g * a2p * b3 + c1g * b2p * a3 + b1 * c2pg * a3 +
|
|
c1 * a2pg * b3 + c1 * b2pg * a3 + b1 * c2p * a3g + c1 * a2p * b3g + c1 * b2p * a3g +
|
|
b1g * c2 * a3p + c1g * a2 * b3p + c1g * b2 * a3p + b1 * c2g * a3p + c1 * a2g * b3p +
|
|
c1 * b2g * a3p + b1 * c2 * a3pg + c1 * a2 * b3pg + c1 * b2 * a3pg) *
|
|
coeffs2[9];
|
|
return (val);
|
|
}
|
|
|