% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/blockfit_solve.R
\name{.bf_lagrangian_project}
\alias{.bf_lagrangian_project}
\title{Lagrangian Projection for the Spline-Only Subproblem}
\usage{
.bf_lagrangian_project(
  Xy_adj,
  Ghalf_cur,
  GhalfA_cur,
  cv_spline,
  K,
  nc_spline,
  A_spline
)
}
\arguments{
\item{Xy_adj}{List of \eqn{K+1} adjusted cross-product vectors
(\eqn{nc_s \times 1}).}

\item{Ghalf_cur}{List of \eqn{K+1} \eqn{\mathbf{G}_s^{1/2}}
matrices (each \eqn{nc_s \times nc_s}).}

\item{GhalfA_cur}{\eqn{(nc_s \cdot (K+1)) \times nca_s} matrix
formed by row-stacking \eqn{\mathbf{G}_s^{1/2,(k)}
\mathbf{A}_s^{(k)}}.}

\item{cv_spline}{List of constraint right-hand-side vectors for
the spline subproblem (may be empty).}

\item{K}{Integer; number of interior knots.}

\item{nc_spline}{Integer; number of spline columns.}

\item{A_spline}{Spline-only constraint matrix.}
}
\value{
List of \eqn{K+1} coefficient vectors
  (\eqn{nc_s \times 1}).
}
\description{
Projects the adjusted cross-product \eqn{\mathbf{X}_s^{\top}
\tilde{\mathbf{y}}} through \eqn{\mathbf{G}_s^{1/2}} and
removes the component along \eqn{\mathbf{G}_s^{1/2}\mathbf{A}_s}
to enforce the smoothness constraints in the spline block.
When \code{cv_spline} contains nonzero values (e.g.\ from
\code{no_intercept}), the corresponding contribution is added
back after projection.
}
\keyword{internal}
