This file is indexed.

/usr/include/rheolef/gauss_lobatto_jacobi.icc is in librheolef-dev 6.5-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
/// This file is part of Rheolef.
///
/// Copyright (C) 2000-2009 Pierre Saramito 
///
/// Rheolef is free software; you can redistribute it and/or modify
/// it under the terms of the GNU General Public License as published by
/// the Free Software Foundation; either version 2 of the License, or
/// (at your option) any later version.
///
/// Rheolef 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 General Public License for more details.
///
/// You should have received a copy of the GNU General Public License
/// along with Rheolef; if not, write to the Free Software
/// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
/// lexer for qmg mesh files
/// =========================================================================
#include "rheolef/gamma.h"
#include "rheolef/jacobi.h"
#include "rheolef/jacobi_roots.h"
#include <iterator>
template <class Size, class OutputIterator1, class OutputIterator2>
void gauss_lobatto_jacobi (Size R,
    	typename std::iterator_traits<OutputIterator1>::value_type alpha,
    	typename std::iterator_traits<OutputIterator1>::value_type beta,
    	OutputIterator1 zeta, OutputIterator2 omega)
{
    	typedef typename std::iterator_traits<OutputIterator1>::value_type T;
	check_macro (R >= 2, "gauss_lobatto_jacobi: node number " << R << " may be >= 2");
	T num = pow(T(2), alpha+beta+1)/T(R-1);
	T w0  = pow(T(2), alpha+beta+1)*(beta+1);
	T wf  = pow(T(2), alpha+beta+1)*(alpha+1);
	if (alpha == T(int(alpha)) && beta == T(int(beta))) {
	  num *= T(R)/((alpha+T(R))*(beta+T(R)));
	  w0  *= 1/(T(R-1)*(alpha+T(R)));
	  wf  *= 1/(T(R-1)*(beta+T(R)));
	  for (Size k = 1; k <= size_t(int(beta)); k++) {
	    num *= T(R+k)/(alpha+T(R+k));
	    w0  *= T(sqr(k))/(T(R-1+k)*(alpha+T(R+k)));
	  }
	  for (Size k = 1; k <= size_t(int(alpha)); k++) {
	    wf  *= T(sqr(k))/(T(R-1+k)*(beta+T(R+k)));
	  }
        } else {
	  num *=  (my_gamma(alpha+T(R))/my_gamma(alpha+beta+T(R)+1))
	         *(my_gamma(beta+T(R))/my_gamma(T(R)));
	  w0  *=  (my_gamma(alpha+T(R))/my_gamma(alpha+beta+T(R)+1))
	         *(sqr(my_gamma(beta+1))*my_gamma(T(R-1))/my_gamma(beta+T(R)));
	  wf  *=  (my_gamma(beta+T(R))/my_gamma(alpha+beta+T(R)+1))
	         *(sqr(my_gamma(alpha+1))*my_gamma(T(R-1))/my_gamma(alpha+T(R)));
  	}
	zeta [0] = -1;
	omega[0] = w0;
	jacobi_roots (R-2, alpha+1, beta+1, zeta+1);
  	jacobi<T> P1 (R-1, alpha, beta);
  	for (Size r = 1; r < R-1; ++r)
      	    omega[r] = num/sqr(P1(zeta[r]));
	zeta [R-1] = 1;
	omega[R-1] = wf;
}