/usr/include/root/TQpDataSparse.h is in libroot-math-quadp-dev 5.34.14-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | // @(#)root/quadp:$Id$
// Author: Eddy Offermann May 2004
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
/*************************************************************************
* Parts of this file are copied from the OOQP distribution and *
* are subject to the following license: *
* *
* COPYRIGHT 2001 UNIVERSITY OF CHICAGO *
* *
* The copyright holder hereby grants you royalty-free rights to use, *
* reproduce, prepare derivative works, and to redistribute this software*
* to others, provided that any changes are clearly documented. This *
* software was authored by: *
* *
* E. MICHAEL GERTZ gertz@mcs.anl.gov *
* Mathematics and Computer Science Division *
* Argonne National Laboratory *
* 9700 S. Cass Avenue *
* Argonne, IL 60439-4844 *
* *
* STEPHEN J. WRIGHT swright@cs.wisc.edu *
* Computer Sciences Department *
* University of Wisconsin *
* 1210 West Dayton Street *
* Madison, WI 53706 FAX: (608)262-9777 *
* *
* Any questions or comments may be directed to one of the authors. *
* *
* ARGONNE NATIONAL LABORATORY (ANL), WITH FACILITIES IN THE STATES OF *
* ILLINOIS AND IDAHO, IS OWNED BY THE UNITED STATES GOVERNMENT, AND *
* OPERATED BY THE UNIVERSITY OF CHICAGO UNDER PROVISION OF A CONTRACT *
* WITH THE DEPARTMENT OF ENERGY. *
*************************************************************************/
#ifndef ROOT_TQpDataSparse
#define ROOT_TQpDataSparse
#ifndef ROOT_TQpDataBase
#include "TQpDataBase.h"
#endif
#ifndef ROOT_TQpVar
#include "TQpVar.h"
#endif
#ifndef ROOT_TMatrixDSparse
#include "TMatrixDSparse.h"
#endif
//////////////////////////////////////////////////////////////////////////
// //
// TQpDataSparse //
// //
// Data for the dense QP formulation //
// //
//////////////////////////////////////////////////////////////////////////
class TQpDataSparse : public TQpDataBase
{
protected:
// these variables will be "Used" not copied
TMatrixDSparse fQ; // quadratic part of Objective function
TMatrixDSparse fA; // Equality constraints
TMatrixDSparse fC; // Inequality constraints
public:
TQpDataSparse() {}
// data objects of the specified dimensions
TQpDataSparse(Int_t nx,Int_t my,Int_t mz);
// sets up pointers to the data objects that are passed as arguments
TQpDataSparse(TVectorD &c,TMatrixDSparse &Q,TVectorD &xlow,TVectorD &ixlow,TVectorD &xupp,
TVectorD &ixupp,TMatrixDSparse &A,TVectorD &bA,TMatrixDSparse &C,TVectorD &clow,
TVectorD &iclow,TVectorD &cupp,TVectorD &icupp);
TQpDataSparse(const TQpDataSparse &another);
virtual ~TQpDataSparse() {}
void SetNonZeros(Int_t nnzQ,Int_t nnzA,Int_t nnzC);
virtual void PutQIntoAt(TMatrixDBase &M,Int_t row,Int_t col);
// insert the Hessian Q into the matrix M for the fundamental
// linear system, where M is stored as a TMatrixDSparse
virtual void PutAIntoAt(TMatrixDBase &M,Int_t row,Int_t col);
// insert the constraint matrix A into the matrix M for the
// fundamental linear system, where M is stored as a TMatrixDSparse
virtual void PutCIntoAt(TMatrixDBase &M,Int_t row,Int_t col);
// insert the constraint matrix C into the matrix M for the
// fundamental linear system, where M is stored as a
// TMatrixDSparse
virtual void Qmult (Double_t beta,TVectorD& y,Double_t alpha,const TVectorD& x);
// y = beta * y + alpha * Q * x
virtual void Amult (Double_t beta,TVectorD& y,Double_t alpha,const TVectorD& x);
// y = beta * y + alpha * A * x
virtual void Cmult (Double_t beta,TVectorD& y,Double_t alpha,const TVectorD& x);
// y = beta * y + alpha * C * x
virtual void ATransmult(Double_t beta,TVectorD& y,Double_t alpha,const TVectorD& x);
// y = beta * y + alpha * A^T * x
virtual void CTransmult(Double_t beta,TVectorD& y,Double_t alpha,const TVectorD& x);
// y = beta * y + alpha * C^T * x
virtual void GetDiagonalOfQ(TVectorD &dQ); // extract the diagonal of Q and put it in the vector dQ
virtual Double_t DataNorm();
virtual void DataRandom(TVectorD &x,TVectorD &y,TVectorD &z,TVectorD &s);
// Create a random problem (x,y,z,s)
// the solution to the random problem
virtual void Print(Option_t *opt="") const;
virtual Double_t ObjectiveValue(TQpVar *vars);
TQpDataSparse &operator= (const TQpDataSparse &source);
ClassDef(TQpDataSparse,1) // Qp Data class for Sparse formulation
};
#endif
|