Actual source code: linearimpl.h

  1: #pragma once
  2: #include <petsc/private/regressorimpl.h>
  3: #include <petscksp.h>
  4: #include <petsctao.h>

  6: /* We define this header, since it serves as a "base" for all linear models. */
  7: #define REGRESSOR_LINEAR_HEADER \
  8:   PetscRegressorLinearType type; \
  9:   /* Parameters of the fitted regression model */ \
 10:   Vec         coefficients; \
 11:   PetscScalar intercept; \
 12: \
 13:   Mat X;        /* Operator of the linear model; often the training data matrix, but might be a MATCOMPOSITE */ \
 14:   Mat C;        /* Centering matrix */ \
 15:   Vec rhs;      /* Right-hand side of the linear model; often the target vector, but may be the mean-centered version */ \
 16:   Vec residual; /* Residual for our model, or the loss vector */ \
 17:   /* Various options */ \
 18:   PetscBool fit_intercept; /* Calculate intercept ("bias" or "offset") if true. Assume centered data if false. */ \
 19:   PetscBool use_ksp        /* Use KSP for the model-fitting problem; otherwise we will use TAO. */

 21: typedef struct {
 22:   REGRESSOR_LINEAR_HEADER;

 24:   PetscInt ksp_its, ksp_tot_its;
 25:   KSP      ksp;
 26:   Mat      XtX; /* Normal matrix formed from X */
 27: } PetscRegressor_Linear;