47 #include "AbstractLinAlgPack/src/AbstractLinAlgPack_MatrixSymOp.hpp"
48 #include "AbstractLinAlgPack/src/AbstractLinAlgPack_GenPermMatrixSlice.hpp"
49 #include "AbstractLinAlgPack/src/AbstractLinAlgPack_SpVectorClass.hpp"
53 namespace LinAlgOpPack {
58 namespace ConstrainedOptPack {
81 return n_ ?
n_ + 1 : 0;
123 y2 = b*y2 +
bigM_ * x2;
154 const SpVectorSlice::element_type
155 *x2_ele = x.lookup_element(
n_+1);
157 x2 = x2_ele ? x2_ele->value() : 0.0;
166 y2 = b*y2 +
bigM_ * x2;
178 namespace GPMSIP = AbstractLinAlgPack::GenPermMatrixSliceIteratorPack;
206 if( P.is_identity() )
209 const GenPermMatrixSlice
210 P1 = ( P.is_identity()
211 ? GenPermMatrixSlice(
n_,
n_, GenPermMatrixSlice::IDENTITY_MATRIX )
214 P2 = ( P.is_identity()
215 ? GenPermMatrixSlice(
218 , GenPermMatrixSlice::ZERO_MATRIX )
232 i = P_trans ==
no_trans ? P2.begin()->row_i() : P2.begin()->col_j();
233 (*y)(i) += a *
bigM_ * x2;
245 namespace GPMSIP = AbstractLinAlgPack::GenPermMatrixSliceIteratorPack;
273 if( P.is_identity() )
276 const GenPermMatrixSlice
277 P1 = ( P.is_identity()
278 ? GenPermMatrixSlice(
n_,
n_, GenPermMatrixSlice::IDENTITY_MATRIX )
281 P2 = ( P.is_identity()
282 ? GenPermMatrixSlice(
285 , GenPermMatrixSlice::ZERO_MATRIX )
291 const SpVectorSlice::element_type
292 *x2_ele = x.lookup_element(
n_+1);
294 x2 = x2_ele ? x2_ele->value() : 0.0;
301 i = P_trans ==
no_trans ? P2.begin()->row_i() : P2.begin()->col_j();
302 (*y)(i) += a *
bigM_ * x2;
327 const SpVectorSlice::element_type
328 *x12_ele = x1.lookup_element(
n_+1);
330 x12 = x12_ele ? x12_ele->value() : 0.0;
AbstractLinAlgPack::size_type size_type
void Vp_StPtMtV(VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOp &M_rhs2, BLAS_Cpp::Transp M_rhs2_trans, const Vector &v_rhs3, value_type beta=1.0)
v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * v_rhs3 + beta * v_rhs
void Vp_StV(VectorMutable *v_lhs, const value_type &alpha, const Vector &v_rhs)
v_lhs = alpha * v_rhs + v_lhs
size_type rows(size_type rows, size_type cols, BLAS_Cpp::Transp _trans)
Return rows of a possible transposed matrix.
MatrixHessianRelaxed()
Construct to uninitialized.
const f_int const f_int const f_int const f_dbl_prec const f_dbl_prec const f_dbl_prec const f_dbl_prec const f_dbl_prec * H
value_type transVtMtV(const Vector &v_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3)
result = v_rhs1' * op(M_rhs2) * v_rhs3
void initialize(const MatrixSymOp &H, value_type bigM)
Initialize.
void Vp_StMtV(VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta=1.0)
v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV)
void Vp_StMtV(DVectorSlice *vs_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const DVectorSlice &vs_rhs2, value_type beta) const
const f_int f_dbl_prec a[]
SparseVectorSlice< SparseElement< index_type, value_type > > SpVectorSlice
DenseLinAlgPack::VectorSliceTmpl< value_type > DVectorSlice
AbstractLinAlgPack::value_type value_type
void Vp_MtV_assert_sizes(size_type v_lhs_size, size_type m_rhs1_rows, size_type m_rhs1_cols, BLAS_Cpp::Transp trans_rhs1, size_type v_rhs2_size)
v_lhs += op(m_rhs1) * v_rhs2
void Vp_StPtMtV(DVectorSlice *vs_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const DVectorSlice &vs_rhs3, value_type beta) const
size_type cols(size_type rows, size_type cols, BLAS_Cpp::Transp _trans)
Return columns of a possible transposed matrix.
RangePack::Range1D Range1D
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
value_type transVtMtV(const SpVectorSlice &sv_rhs1, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3) const