This file is indexed.

/usr/include/trilinos/AbstractLinAlgPack_MatrixOpNonsing.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 ALAP_MATRIX_OP_NONSING_HPP
#define ALAP_MATRIX_OP_NONSING_HPP

#include "AbstractLinAlgPack_MatrixOp.hpp"
#include "AbstractLinAlgPack_MatrixNonsing.hpp"

namespace AbstractLinAlgPack {

/** \brief Abstract base class for all nonsingular polymorphic matrices
 * that can be used to compute matrix-vector products and solve
 * for linear systems efficiently.
 */
class MatrixOpNonsing
  : virtual public MatrixOp
  , virtual public MatrixNonsing
{
public:

  /** @name Public types */
  //@{

#ifndef DOXYGEN_COMPILE
  /** \brief . */
  typedef Teuchos::RCP<const MatrixOpNonsing>    mat_mwons_ptr_t;
  /** \brief . */
  typedef Teuchos::RCP<MatrixOpNonsing>          mat_mwons_mut_ptr_t;
#endif

  //@}

  /** @name Clone */
  //@{

  /** \brief Clone the non-const matrix object (if supported).
   *
   * The default implementation returns NULL which is perfectly acceptable.
   * A matrix object is not required to return a non-NULL value but almost
   * every good matrix implementation will.
   */
  virtual mat_mwons_mut_ptr_t clone_mwons();

  /** \brief Clone the const matrix object (if supported).
   *
   * The behavior of this method is the same as for the non-const version
   * above except it returns a smart pointer to a const matrix object.
   */
  virtual mat_mwons_ptr_t clone_mwons() const;

  //@}

  /** @name Condition number estimation */
  //@{

  /** \brief Compute an estimate of the condition number of this matrix.
   *
   * @param  requested_norm_type
   *                    [in] Determines the requested type of norm for the condition number.
   * @param  allow_replacement
   *                    [in] Determines if the requested norm in specified in <tt>norm_type</tt>
   *                    can be replaced with another norm that can be computde by the matrix.
   *
   * @return If a condition number is computed, then <tt>return.value</tt> gives the value of
   * the condition number in the norm of type <tt>return.type</tt>.
   *
   * Postconditions:<ul>
   * <li> If <tt>allow_replacement==true</tt>, the matrix object must return a computed
   *      condition number who's type is given in <tt>return.type</tt>.
   * <li> If <tt>allow_replacement==false</tt> and the underlying matrix object can not compute
   *      condition number for the norm requested in <tt>norm_type</tt>, then a
   *      <tt>MethodNotImplemented</tt> exception will be thrown.  If the matrix object can
   *      an estimate of the condition number for this norm, then <tt>return.type</tt>
   *      will be equal to <tt>requested_norm_type</tt>.
   * </ul>
   *
   * The default implementation of this method uses Algorithm 2.5 in
   * "Applied Numerical Linear Algebra" by James Demmel (1997) to
   * estimate ||inv(M)||1 or ||inv(M)||inf.  The algorithm uses some
   * of the refinements in the referenced algorithm by Highman.
   * This algorithm only requires solves and transposed solves so
   * every nonsingular matrix object can implement this method.  The
   * default arguments for this function will compute an estimate of
   * the condition number and will not thrown an exception.  The
   * default implementation will throw an exception for any other
   * norm type than <tt>requested_norm_type = MAT_NORM_1</tt> or
   * <tt>requested_norm_type = MAT_NORM_INF</tt>.
   */
  const MatNorm calc_cond_num(
    EMatNormType  requested_norm_type = MAT_NORM_1
    ,bool         allow_replacement   = false
    ) const;

  //@}

  /** @name Overridden from MatrixOp */
  //@{
  /// Returns <tt>this->clone_mwons()</tt>.
  mat_mut_ptr_t clone();
  /// Returns <tt>this->clone_mwons()</tt>.
  mat_ptr_t clone() const;
  //@}

  /** @name Overridden from MatrixNonsing */
  //@{
  /// Returns <tt>this->clone_mwons()</tt>.
  mat_mns_mut_ptr_t clone_mns();
  /// Returns <tt>this->clone_mwons()</tt>.
  mat_mns_ptr_t clone_mns() const;
  //@}

  /// Calls operator=(MatrixOp&)
  MatrixOpNonsing& operator=(const MatrixOpNonsing& M)
  { static_cast<MatrixOp*>(this)->operator=(M); return *this; }

}; // end class MatrixOpNonsing

}	// end namespace AbstractLinAlgPack

#endif	// ALAP_MATRIX_OP_NONSING_HPP