This file is indexed.

/usr/include/linbox/algorithms/lanczos.h is in liblinbox-dev 1.1.6~rc0-4.1.

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
/* -*- mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */

/* linbox/algorithms/lanczos.h
 * Copyright (C) 2002 Bradford Hovinen
 *
 * Written by Bradford Hovinen <hovinen@cis.udel.edu>
 *
 * ------------------------------------
 *
 * See COPYING for license information.
 */

#ifndef __LANCZOS_H
#define __LANCZOS_H

#include <vector>
#include <algorithm>

#include "linbox/blackbox/archetype.h"
#include "linbox/util/debug.h"
#include "linbox/vector/vector-domain.h"
#include "linbox/solutions/methods.h"

namespace LinBox 
{

/** 
 \brief Solve a linear system using the conjugate Lanczos iteration.
 * 
 * Lanczos system solver class.
 * This class encapsulates the functionality required for solving a linear
 * system through the conjugate Lanczos iteration
 */
template <class Field, class Vector> 
class LanczosSolver 
{
    public:

	/** Constructor
	 * @param F Field over which to operate
	 * @param traits @ref{SolverTraits} structure describing user
	 *               options for the solver 
	 */
	LanczosSolver (const Field &F, const LanczosTraits &traits)
		: _traits (traits), _F (F), _randiter (F), _VD (F)
	{}

	/** Constructor with a random iterator
	 * @param F Field over which to operate
	 * @param traits @ref{SolverTraits} structure describing user
	 *               options for the solver 
	 * @param r Random iterator to use for randomization
	 */
	LanczosSolver (const Field &F, const LanczosTraits &traits, typename Field::RandIter r)
		: _traits (traits), _F (F), _randiter (r), _VD (F)
	{}

	/** Solve the linear system Ax = b.
	 *
	 * If the system is nonsingular, this method computes the unique
	 * solution to the system Ax = b. If the system is singular, it computes
	 * a random solution.
	 *
	 * If the matrix A is nonsymmetric, this method preconditions the matrix
	 * A with the preconditioner D_1 A^T D_2 A D_1, where D_1 and D_2 are
	 * random nonsingular diagonal matrices. If the matrix A is symmetric,
	 * this method preconditions the system with A D, where D is a random
	 * diagonal matrix.
	 *
	 * @param A Black box for the matrix A
	 * @param x Vector in which to store solution
	 * @param b Right-hand side of system
	 * @return Reference to solution vector
	 */
	template <class Blackbox>
	Vector &solve (const Blackbox &A, Vector &x, const Vector &b);

    private:

	// Run the Lanczos iteration and return the result. Return false
	// if the method breaks down. Do not check that Ax = b in the end
	template<class Blackbox>
	bool iterate (const Blackbox &A, Vector &x, const Vector &b);

	const LanczosTraits &_traits;
	const Field                       &_F;
	typename Field::RandIter           _randiter;
	VectorDomain<Field>                _VD;

	Vector                    _w[2], _Aw; // Temporaries used in the Lanczos iteration
};

}

#include "linbox/algorithms/lanczos.inl"

#endif // __LANCZOS_H