hahn1_functor Struct Reference
+ Inheritance diagram for hahn1_functor:

Public Member Functions

 hahn1_functor (void)
 
int operator() (const VectorXd &b, VectorXd &fvec)
 
int df (const VectorXd &b, MatrixXd &fjac)
 
 hahn1_functor (void)
 
int operator() (const VectorXd &b, VectorXd &fvec)
 
int df (const VectorXd &b, MatrixXd &fjac)
 
- Public Member Functions inherited from Eigen::DenseFunctor< double >
 DenseFunctor ()
 
 DenseFunctor (int inputs, int values)
 
int inputs () const
 
int values () const
 
- Public Member Functions inherited from Functor< double >
 Functor ()
 
 Functor (int inputs, int values)
 
 Functor ()
 
 Functor (int inputs_, int values_)
 
int inputs () const
 
int inputs () const
 
int values () const
 
int values () const
 

Static Public Attributes

static const double m_x [236]
 

Additional Inherited Members

- Public Types inherited from Eigen::DenseFunctor< double >
enum  
 
typedef double Scalar
 
typedef Matrix< Scalar, InputsAtCompileTime, 1 > InputType
 
typedef Matrix< Scalar, ValuesAtCompileTime, 1 > ValueType
 
typedef Matrix< Scalar, ValuesAtCompileTime, InputsAtCompileTimeJacobianType
 
typedef ColPivHouseholderQR< JacobianTypeQRSolver
 
- Public Types inherited from Functor< double >
enum  
 
enum  
 
typedef double Scalar
 
typedef double Scalar
 
typedef Matrix< Scalar, InputsAtCompileTime, 1 > InputType
 
typedef Matrix< Scalar, InputsAtCompileTime, 1 > InputType
 
typedef Matrix< Scalar, ValuesAtCompileTime, 1 > ValueType
 
typedef Matrix< Scalar, ValuesAtCompileTime, 1 > ValueType
 
typedef Matrix< Scalar, ValuesAtCompileTime, InputsAtCompileTimeJacobianType
 
typedef Matrix< Scalar, ValuesAtCompileTime, InputsAtCompileTimeJacobianType
 
- Public Attributes inherited from Eigen::DenseFunctor< double >
const int m_inputs
 
const int m_values
 
- Public Attributes inherited from Functor< double >
const int m_inputs
 
int m_inputs
 
const int m_values
 
int m_values
 

Constructor & Destructor Documentation

◆ hahn1_functor() [1/2]

hahn1_functor::hahn1_functor ( void  )
inline

◆ hahn1_functor() [2/2]

hahn1_functor::hahn1_functor ( void  )
inline

Member Function Documentation

◆ df() [1/2]

int hahn1_functor::df ( const VectorXd &  b,
MatrixXd &  fjac 
)
inline
438  {
439  assert(b.size() == 7);
440  assert(fjac.rows() == 236);
441  assert(fjac.cols() == 7);
442  for (int i = 0; i < 236; i++) {
443  double x = m_x[i], xx = x * x, xxx = xx * x;
444  double fact = 1. / (1. + b[4] * x + b[5] * xx + b[6] * xxx);
445  fjac(i, 0) = 1. * fact;
446  fjac(i, 1) = x * fact;
447  fjac(i, 2) = xx * fact;
448  fjac(i, 3) = xxx * fact;
449  fact = -(b[0] + b[1] * x + b[2] * xx + b[3] * xxx) * fact * fact;
450  fjac(i, 4) = x * fact;
451  fjac(i, 5) = xx * fact;
452  fjac(i, 6) = xxx * fact;
453  }
454  return 0;
455  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define assert(e,...)
Definition: Logger.h:744
Scalar * b
Definition: benchVecAdd.cpp:17
list x
Definition: plotDoE.py:28
static const double m_x[236]
Definition: levenberg_marquardt.cpp:400

References assert, b, i, m_x, and plotDoE::x.

◆ df() [2/2]

int hahn1_functor::df ( const VectorXd &  b,
MatrixXd &  fjac 
)
inline
779  {
780  assert(b.size() == 7);
781  assert(fjac.rows() == 236);
782  assert(fjac.cols() == 7);
783  for (int i = 0; i < 236; i++) {
784  double x = m_x[i], xx = x * x, xxx = xx * x;
785  double fact = 1. / (1. + b[4] * x + b[5] * xx + b[6] * xxx);
786  fjac(i, 0) = 1. * fact;
787  fjac(i, 1) = x * fact;
788  fjac(i, 2) = xx * fact;
789  fjac(i, 3) = xxx * fact;
790  fact = -(b[0] + b[1] * x + b[2] * xx + b[3] * xxx) * fact * fact;
791  fjac(i, 4) = x * fact;
792  fjac(i, 5) = xx * fact;
793  fjac(i, 6) = xxx * fact;
794  }
795  return 0;
796  }

References assert, b, i, m_x, and plotDoE::x.

◆ operator()() [1/2]

int hahn1_functor::operator() ( const VectorXd &  b,
VectorXd &  fvec 
)
inline
401  {
402  static const double m_y[236] = {
403  .591E0, 1.547E0, 2.902E0, 2.894E0, 4.703E0, 6.307E0, 7.03E0, 7.898E0, 9.470E0, 9.484E0, 10.072E0,
404  10.163E0, 11.615E0, 12.005E0, 12.478E0, 12.982E0, 12.970E0, 13.926E0, 14.452E0, 14.404E0, 15.190E0, 15.550E0,
405  15.528E0, 15.499E0, 16.131E0, 16.438E0, 16.387E0, 16.549E0, 16.872E0, 16.830E0, 16.926E0, 16.907E0, 16.966E0,
406  17.060E0, 17.122E0, 17.311E0, 17.355E0, 17.668E0, 17.767E0, 17.803E0, 17.765E0, 17.768E0, 17.736E0, 17.858E0,
407  17.877E0, 17.912E0, 18.046E0, 18.085E0, 18.291E0, 18.357E0, 18.426E0, 18.584E0, 18.610E0, 18.870E0, 18.795E0,
408  19.111E0, .367E0, .796E0, 0.892E0, 1.903E0, 2.150E0, 3.697E0, 5.870E0, 6.421E0, 7.422E0, 9.944E0,
409  11.023E0, 11.87E0, 12.786E0, 14.067E0, 13.974E0, 14.462E0, 14.464E0, 15.381E0, 15.483E0, 15.59E0, 16.075E0,
410  16.347E0, 16.181E0, 16.915E0, 17.003E0, 16.978E0, 17.756E0, 17.808E0, 17.868E0, 18.481E0, 18.486E0, 19.090E0,
411  16.062E0, 16.337E0, 16.345E0, 16.388E0, 17.159E0, 17.116E0, 17.164E0, 17.123E0, 17.979E0, 17.974E0, 18.007E0,
412  17.993E0, 18.523E0, 18.669E0, 18.617E0, 19.371E0, 19.330E0, 0.080E0, 0.248E0, 1.089E0, 1.418E0, 2.278E0,
413  3.624E0, 4.574E0, 5.556E0, 7.267E0, 7.695E0, 9.136E0, 9.959E0, 9.957E0, 11.600E0, 13.138E0, 13.564E0,
414  13.871E0, 13.994E0, 14.947E0, 15.473E0, 15.379E0, 15.455E0, 15.908E0, 16.114E0, 17.071E0, 17.135E0, 17.282E0,
415  17.368E0, 17.483E0, 17.764E0, 18.185E0, 18.271E0, 18.236E0, 18.237E0, 18.523E0, 18.627E0, 18.665E0, 19.086E0,
416  0.214E0, 0.943E0, 1.429E0, 2.241E0, 2.951E0, 3.782E0, 4.757E0, 5.602E0, 7.169E0, 8.920E0, 10.055E0,
417  12.035E0, 12.861E0, 13.436E0, 14.167E0, 14.755E0, 15.168E0, 15.651E0, 15.746E0, 16.216E0, 16.445E0, 16.965E0,
418  17.121E0, 17.206E0, 17.250E0, 17.339E0, 17.793E0, 18.123E0, 18.49E0, 18.566E0, 18.645E0, 18.706E0, 18.924E0,
419  19.1E0, 0.375E0, 0.471E0, 1.504E0, 2.204E0, 2.813E0, 4.765E0, 9.835E0, 10.040E0, 11.946E0, 12.596E0,
420  13.303E0, 13.922E0, 14.440E0, 14.951E0, 15.627E0, 15.639E0, 15.814E0, 16.315E0, 16.334E0, 16.430E0, 16.423E0,
421  17.024E0, 17.009E0, 17.165E0, 17.134E0, 17.349E0, 17.576E0, 17.848E0, 18.090E0, 18.276E0, 18.404E0, 18.519E0,
422  19.133E0, 19.074E0, 19.239E0, 19.280E0, 19.101E0, 19.398E0, 19.252E0, 19.89E0, 20.007E0, 19.929E0, 19.268E0,
423  19.324E0, 20.049E0, 20.107E0, 20.062E0, 20.065E0, 19.286E0, 19.972E0, 20.088E0, 20.743E0, 20.83E0, 20.935E0,
424  21.035E0, 20.93E0, 21.074E0, 21.085E0, 20.935E0};
425 
426  // int called=0; printf("call hahn1_functor with iflag=%d, called=%d\n", iflag, called); if (iflag==1)
427  // called++;
428 
429  assert(b.size() == 7);
430  assert(fvec.size() == 236);
431  for (int i = 0; i < 236; i++) {
432  double x = m_x[i], xx = x * x, xxx = xx * x;
433  fvec[i] = (b[0] + b[1] * x + b[2] * xx + b[3] * xxx) / (1. + b[4] * x + b[5] * xx + b[6] * xxx) - m_y[i];
434  }
435  return 0;
436  }

References assert, b, i, m_x, and plotDoE::x.

◆ operator()() [2/2]

int hahn1_functor::operator() ( const VectorXd &  b,
VectorXd &  fvec 
)
inline
742  {
743  static const double m_y[236] = {
744  .591E0, 1.547E0, 2.902E0, 2.894E0, 4.703E0, 6.307E0, 7.03E0, 7.898E0, 9.470E0, 9.484E0, 10.072E0,
745  10.163E0, 11.615E0, 12.005E0, 12.478E0, 12.982E0, 12.970E0, 13.926E0, 14.452E0, 14.404E0, 15.190E0, 15.550E0,
746  15.528E0, 15.499E0, 16.131E0, 16.438E0, 16.387E0, 16.549E0, 16.872E0, 16.830E0, 16.926E0, 16.907E0, 16.966E0,
747  17.060E0, 17.122E0, 17.311E0, 17.355E0, 17.668E0, 17.767E0, 17.803E0, 17.765E0, 17.768E0, 17.736E0, 17.858E0,
748  17.877E0, 17.912E0, 18.046E0, 18.085E0, 18.291E0, 18.357E0, 18.426E0, 18.584E0, 18.610E0, 18.870E0, 18.795E0,
749  19.111E0, .367E0, .796E0, 0.892E0, 1.903E0, 2.150E0, 3.697E0, 5.870E0, 6.421E0, 7.422E0, 9.944E0,
750  11.023E0, 11.87E0, 12.786E0, 14.067E0, 13.974E0, 14.462E0, 14.464E0, 15.381E0, 15.483E0, 15.59E0, 16.075E0,
751  16.347E0, 16.181E0, 16.915E0, 17.003E0, 16.978E0, 17.756E0, 17.808E0, 17.868E0, 18.481E0, 18.486E0, 19.090E0,
752  16.062E0, 16.337E0, 16.345E0, 16.388E0, 17.159E0, 17.116E0, 17.164E0, 17.123E0, 17.979E0, 17.974E0, 18.007E0,
753  17.993E0, 18.523E0, 18.669E0, 18.617E0, 19.371E0, 19.330E0, 0.080E0, 0.248E0, 1.089E0, 1.418E0, 2.278E0,
754  3.624E0, 4.574E0, 5.556E0, 7.267E0, 7.695E0, 9.136E0, 9.959E0, 9.957E0, 11.600E0, 13.138E0, 13.564E0,
755  13.871E0, 13.994E0, 14.947E0, 15.473E0, 15.379E0, 15.455E0, 15.908E0, 16.114E0, 17.071E0, 17.135E0, 17.282E0,
756  17.368E0, 17.483E0, 17.764E0, 18.185E0, 18.271E0, 18.236E0, 18.237E0, 18.523E0, 18.627E0, 18.665E0, 19.086E0,
757  0.214E0, 0.943E0, 1.429E0, 2.241E0, 2.951E0, 3.782E0, 4.757E0, 5.602E0, 7.169E0, 8.920E0, 10.055E0,
758  12.035E0, 12.861E0, 13.436E0, 14.167E0, 14.755E0, 15.168E0, 15.651E0, 15.746E0, 16.216E0, 16.445E0, 16.965E0,
759  17.121E0, 17.206E0, 17.250E0, 17.339E0, 17.793E0, 18.123E0, 18.49E0, 18.566E0, 18.645E0, 18.706E0, 18.924E0,
760  19.1E0, 0.375E0, 0.471E0, 1.504E0, 2.204E0, 2.813E0, 4.765E0, 9.835E0, 10.040E0, 11.946E0, 12.596E0,
761  13.303E0, 13.922E0, 14.440E0, 14.951E0, 15.627E0, 15.639E0, 15.814E0, 16.315E0, 16.334E0, 16.430E0, 16.423E0,
762  17.024E0, 17.009E0, 17.165E0, 17.134E0, 17.349E0, 17.576E0, 17.848E0, 18.090E0, 18.276E0, 18.404E0, 18.519E0,
763  19.133E0, 19.074E0, 19.239E0, 19.280E0, 19.101E0, 19.398E0, 19.252E0, 19.89E0, 20.007E0, 19.929E0, 19.268E0,
764  19.324E0, 20.049E0, 20.107E0, 20.062E0, 20.065E0, 19.286E0, 19.972E0, 20.088E0, 20.743E0, 20.83E0, 20.935E0,
765  21.035E0, 20.93E0, 21.074E0, 21.085E0, 20.935E0};
766 
767  // int called=0; printf("call hahn1_functor with iflag=%d, called=%d\n", iflag, called); if (iflag==1)
768  // called++;
769 
770  assert(b.size() == 7);
771  assert(fvec.size() == 236);
772  for (int i = 0; i < 236; i++) {
773  double x = m_x[i], xx = x * x, xxx = xx * x;
774  fvec[i] = (b[0] + b[1] * x + b[2] * xx + b[3] * xxx) / (1. + b[4] * x + b[5] * xx + b[6] * xxx) - m_y[i];
775  }
776  return 0;
777  }

References assert, b, i, m_x, and plotDoE::x.

Member Data Documentation

◆ m_x

const double hahn1_functor::m_x
static
Initial value:
= {
24.41E0, 34.82E0, 44.09E0, 45.07E0, 54.98E0, 65.51E0, 70.53E0, 75.70E0, 89.57E0, 91.14E0, 96.40E0,
97.19E0, 114.26E0, 120.25E0, 127.08E0, 133.55E0, 133.61E0, 158.67E0, 172.74E0, 171.31E0, 202.14E0, 220.55E0,
221.05E0, 221.39E0, 250.99E0, 268.99E0, 271.80E0, 271.97E0, 321.31E0, 321.69E0, 330.14E0, 333.03E0, 333.47E0,
340.77E0, 345.65E0, 373.11E0, 373.79E0, 411.82E0, 419.51E0, 421.59E0, 422.02E0, 422.47E0, 422.61E0, 441.75E0,
447.41E0, 448.7E0, 472.89E0, 476.69E0, 522.47E0, 522.62E0, 524.43E0, 546.75E0, 549.53E0, 575.29E0, 576.00E0,
625.55E0, 20.15E0, 28.78E0, 29.57E0, 37.41E0, 39.12E0, 50.24E0, 61.38E0, 66.25E0, 73.42E0, 95.52E0,
107.32E0, 122.04E0, 134.03E0, 163.19E0, 163.48E0, 175.70E0, 179.86E0, 211.27E0, 217.78E0, 219.14E0, 262.52E0,
268.01E0, 268.62E0, 336.25E0, 337.23E0, 339.33E0, 427.38E0, 428.58E0, 432.68E0, 528.99E0, 531.08E0, 628.34E0,
253.24E0, 273.13E0, 273.66E0, 282.10E0, 346.62E0, 347.19E0, 348.78E0, 351.18E0, 450.10E0, 450.35E0, 451.92E0,
455.56E0, 552.22E0, 553.56E0, 555.74E0, 652.59E0, 656.20E0, 14.13E0, 20.41E0, 31.30E0, 33.84E0, 39.70E0,
48.83E0, 54.50E0, 60.41E0, 72.77E0, 75.25E0, 86.84E0, 94.88E0, 96.40E0, 117.37E0, 139.08E0, 147.73E0,
158.63E0, 161.84E0, 192.11E0, 206.76E0, 209.07E0, 213.32E0, 226.44E0, 237.12E0, 330.90E0, 358.72E0, 370.77E0,
372.72E0, 396.24E0, 416.59E0, 484.02E0, 495.47E0, 514.78E0, 515.65E0, 519.47E0, 544.47E0, 560.11E0, 620.77E0,
18.97E0, 28.93E0, 33.91E0, 40.03E0, 44.66E0, 49.87E0, 55.16E0, 60.90E0, 72.08E0, 85.15E0, 97.06E0,
119.63E0, 133.27E0, 143.84E0, 161.91E0, 180.67E0, 198.44E0, 226.86E0, 229.65E0, 258.27E0, 273.77E0, 339.15E0,
350.13E0, 362.75E0, 371.03E0, 393.32E0, 448.53E0, 473.78E0, 511.12E0, 524.70E0, 548.75E0, 551.64E0, 574.02E0,
623.86E0, 21.46E0, 24.33E0, 33.43E0, 39.22E0, 44.18E0, 55.02E0, 94.33E0, 96.44E0, 118.82E0, 128.48E0,
141.94E0, 156.92E0, 171.65E0, 190.00E0, 223.26E0, 223.88E0, 231.50E0, 265.05E0, 269.44E0, 271.78E0, 273.46E0,
334.61E0, 339.79E0, 349.52E0, 358.18E0, 377.98E0, 394.77E0, 429.66E0, 468.22E0, 487.27E0, 519.54E0, 523.03E0,
612.99E0, 638.59E0, 641.36E0, 622.05E0, 631.50E0, 663.97E0, 646.9E0, 748.29E0, 749.21E0, 750.14E0, 647.04E0,
646.89E0, 746.9E0, 748.43E0, 747.35E0, 749.27E0, 647.61E0, 747.78E0, 750.51E0, 851.37E0, 845.97E0, 847.54E0,
849.93E0, 851.61E0, 849.75E0, 850.98E0, 848.23E0}

Referenced by df(), and operator()().


The documentation for this struct was generated from the following files: