This file is indexed.

/usr/include/trilinos/AbstractLinAlgPack_MatrixSymDiagSparse.hpp is in libtrilinos-dev 10.4.0.dfsg-1ubuntu2.

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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// @HEADER
// ***********************************************************************
// 
// Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
//                  Copyright (2003) Sandia Corporation
// 
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
// license for use of this work by or on behalf of the U.S. Government.
// 
// This library is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of the
// License, or (at your option) any later version.
//  
// This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//  
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
// Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 
// 
// ***********************************************************************
// @HEADER
#ifndef SPARSE_LINALG_PACK_MATRIX_DIAGONAL_SPARSE_H
#define SPARSE_LINALG_PACK_MATRIX_DIAGONAL_SPARSE_H

#include "AbstractLinAlgPack_MatrixSymOpSerial.hpp"
#include "AbstractLinAlgPack_MatrixConvertToSparse.hpp"
#include "Teuchos_StandardMemberCompositionMacros.hpp"

namespace AbstractLinAlgPack {

/** \brief Abstract base class for all serial symmetric diagonal matrices with
 * significant zeros along the diagonal.
 */
class MatrixSymDiagSparse
  : virtual public MatrixSymOpSerial
  , virtual public MatrixConvertToSparse
{
public:

  /** \brief <<std member comp>> members for how many updates to compute
    * at once in the operation M_MtMtM(....).
    */
  STANDARD_MEMBER_COMPOSITION_MEMBERS( size_type, num_updates_at_once );

  /** \brief The default value of num_updates_at_once == 0 is set to allow
    * this class to determine the appropriate size internally.
    */
  MatrixSymDiagSparse();

  /** @name To be overridden by subclass */
  //@{

  /// Give access to the sparse diagonal
  virtual const SpVectorSlice diag() const = 0;

  //@}

  /** @name Overridden from MatrixBase */
  //@{

  /** \brief . */
  size_type rows() const;

  //@}

  /** @name Overridden from MatrixOp */
  //@{

  /** \brief . */
  std::ostream& output(std::ostream& out) const;

  //@}

  /** @name Overridden from MatrixOpSerial */
  //@{

  /** \brief . */
  void Vp_StMtV(DVectorSlice* vs_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1
    , const DVectorSlice& vs_rhs2, value_type beta) const;

  //@}

  /** @name Overridden from MatrixSymOpSerial */
  //@{

  /** \brief Computes the dense symmetric matrix B += a*op(A')*M*op(A).
   *
   * This matrix is computed using a set of rank-1 updates.
   *
   * Runtime ~ O( (m^2)*nz )
   *
   * Storage ~ O( num_updates_at_once * m )
   *
   * Where:<ul>
   * <li> <tt>n = A.rows() == this->rows()</tt>
   * <li> <tt>m = A.cols()</tt>
   * <li> <tt>nz = this->diag().nz()</tt>
   * </ul>
   *
   * Note that a necessary condition for \c B to be full rank is for
   * <tt>nz >= m</tt>.
   *
   * Also note that this default implementation is only for nonnegative
   * diagonal entries.
   */
  void Mp_StMtMtM( DMatrixSliceSym* sym_lhs, value_type alpha
    , EMatRhsPlaceHolder dummy_place_holder
    , const MatrixOpSerial& mwo_rhs, BLAS_Cpp::Transp mwo_rhs_trans
    , value_type beta ) const;

  //@}

  /** @name Overridden from MatrixConvertToSparse */
  //@{

  /** \brief . */
  index_type num_nonzeros(
    EExtractRegion        extract_region
    ,EElementUniqueness   element_uniqueness
    ) const;
  /** \brief . */
  void coor_extract_nonzeros(
    EExtractRegion                extract_region
    ,EElementUniqueness           element_uniqueness
    ,const index_type             len_Aval
    ,value_type                   Aval[]
    ,const index_type             len_Aij
    ,index_type                   Arow[]
    ,index_type                   Acol[]
    ,const index_type             row_offset
    ,const index_type             col_offset
    ) const;

  //@}

};	// end class MatrixSymDiagSparse

}	// end namespace AbstractLinAlgPack

#endif	// SPARSE_LINALG_PACK_MATRIX_DIAGONAL_SPARSE_H