302 {
303 double S, Q;
304 double b[3], B[2], d[4],
C[6];
305
308
309 b[0] = -0.397070;
310 b[1] = 0.400302;
311 b[2] = 1.060000;
312
313 B[0] = -0.171587;
314 B[1] = 2.392190;
315
316 d[0] = 0.0701309;
317 d[1] = 0.0118520;
318 d[2] = 0.00169937;
319 d[3] = -1.0200;
320
327
328 const double sum1 = loop_term<0>(T) + loop_term<1>(T) +
329 loop_term<2>(T) + loop_term<3>(T);
330
331 const double lambda_0 = std::sqrt(T) * sum1;
332 const double lambda_1 =
334 b[2] * std::exp(B[0] * (rho + B[1]) * (rho + B[1]));
335
336 const double dT = fabs(T - 1) +
C[3];
337 const double dT_pow_3_5 = std::pow(dT, 3. / 5.);
338 Q = 2 + (
C[4] / dT_pow_3_5);
339
340 if (T >= 1)
341 {
342 S = 1 / dT;
343 }
344 else
345 {
346 S =
C[5] / dT_pow_3_5;
347 }
348
349 const double rho_pow_9_5 = std::pow(rho, 9. / 5.);
350 const double rho_pow_Q = std::pow(rho, Q);
351 const double T_pow_3_2 =
T * std::sqrt(T);
352 const double lambda_2 =
353 (d[0] / mypow<10>(T) + d[1]) * rho_pow_9_5 *
354 std::exp(C[0] * (1 - rho * rho_pow_9_5)) +
355 d[2] * S * rho_pow_Q *
356 std::exp((Q / (1. + Q)) * (1 -
rho * rho_pow_Q)) +
357 d[3] * std::exp(C[1] * T_pow_3_2 + C[2] / mypow<5>(rho));
358
359 return lambda_0 + lambda_1 + lambda_2;
360 }
@ rho
density. For some models, rho substitutes p