This file is indexed.

/usr/include/linbox/blackbox/random-matrix.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
 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
/* -*- mode:C++ -*- */
/* File: random-matrix.h
 *  Author: Zhendong Wan
 */

#ifndef __LINBOX_RANDOM_MATRIX_H__
#define __LINBOX_RANDOM_MATRIX_H__

#include <linbox/blackbox/blackbox-interface.h>
#include <linbox/blackbox/dense.h>
#include <linbox/blackbox/sparse.h>

namespace LinBox {
	
	class RandomMatrix : public  BlackboxInterface {

	public:

         /** generates random matrices used in EGV and EGV+ algorithm

		  * [I, R] or [I, R]^t, where R is a random matrix.
		 General case.
		 */
		template <class Blackbox, class Field>
			static Blackbox*& randomMatrix (Blackbox* &, const Field& f, 
							int rowdim, int coldim);

		
		// constructor a random dense matrix, whose entries are random
		template<class Field>
			static DenseMatrix<Field>*& randomMatrix( DenseMatrix<Field>*& Ap,
								  const Field& f,
								  int rowdim, int coldim ) {
			
			Ap = new DenseMatrix<Field>(f, rowdim, coldim);
			typename DenseMatrix<Field>::RawIterator Ap_p;
			typename Field::Element zero, one, elt;
			f. init (one, 1); f. init (zero, 0);
			
			for (Ap_p = Ap -> rawBegin(); Ap_p != Ap -> rawEnd(); ++ Ap_p)
				f. assign (*Ap_p, zero);

			if (rowdim < coldim) 
				for (int i = 0; i < rowdim; ++ i) {
					Ap -> setEntry (i, i, one);
					for (int j = rowdim; j < coldim; ++ j){
						f. init (elt, rand()%10);
						Ap -> setEntry (i, j, elt);
					}
				}
			else 
				for (int i = 0; i < coldim; ++ i) {
					Ap -> setEntry (i, i, one);
					for (int j = coldim; j < rowdim; ++ j) {
						f. init (elt, rand()%10);
						Ap -> setEntry (j, i, elt);
					}
				}


			return Ap;
		}

		// constructor a very special random sparse matrix
		// [I, R] or [I, R}^t, where R is a sparse random matrix.
		template<class Field>
			static SparseMatrix<Field>*& randomMatrix( SparseMatrix<Field>*& Ap, 
								   const Field& f, 
								   int rowdim, int coldim) {
			
			Ap = new SparseMatrix<Field>(f, rowdim, coldim);
			
			const int m = rowdim < coldim ? rowdim : coldim;

			int i, j, k;

			typename Field::Element elt;

			f. init (elt, 1);

			for ( i = 0; i < m; ++ i) 
				
				Ap -> setEntry (i, i, elt);


			if ( m < rowdim ) {

				const int repeat = (rowdim - m) < 10 ? rowdim - m : 10;
				
				for ( i = m; i < rowdim; ++ i) {

					for ( k = 0; k < repeat; ++ k) {
						
						j = rand() % coldim;
						
						f.init(elt, rand() % 10 + 1);
						
						Ap -> setEntry (i, j, elt);
					}
				}
			}

			else if ( m < coldim ) {

				int offset = coldim - m;

				const int repeat = offset < 10 ? offset : 10;
				
				for ( i = 0; i < rowdim; ++ i){
			       
					for ( k = 0; k < repeat; ++ k) {
						
						j = rand() % offset + m;
							
						f.init(elt, rand() % 10 + 1);
						
						Ap -> setEntry (i, j, elt);
					}
				}
			}

			else {}
			
			return Ap;

		}
            
            template<typename _Tp1> 
            struct rebind 
            { typedef RandomMatrix other; };
            
	};
}

		
#endif