This file is indexed.

/usr/include/libwildmagic/Wm5Matrix4.h is in libwildmagic-dev 5.13-1+b2.

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
// Geometric Tools, LLC
// Copyright (c) 1998-2014
// Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt
// http://www.geometrictools.com/License/Boost/LICENSE_1_0.txt
//
// File Version: 5.0.1 (2010/10/01)

#ifndef WM5MATRIX4_H
#define WM5MATRIX4_H

#include "Wm5MathematicsLIB.h"
#include "Wm5Table.h"
#include "Wm5Vector3.h"
#include "Wm5Vector4.h"

namespace Wm5
{

template <typename Real>
class Matrix4 : public Table<4,4,Real>
{
public:
    // If makeZero is 'true', create the zero matrix; otherwise, create the
    // identity matrix.
    Matrix4 (bool makeZero = true);

    // Copy constructor.
    Matrix4 (const Matrix4& mat);

    // Input mrc is in row r, column c.
    Matrix4 (
        Real m00, Real m01, Real m02, Real m03,
        Real m10, Real m11, Real m12, Real m13,
        Real m20, Real m21, Real m22, Real m23,
        Real m30, Real m31, Real m32, Real m33);

    // Create a matrix from an array of numbers.  The input array is
    // interpreted based on the bool input as
    //   true:  entry[0..15]={m00,m01,m02,m03,m10,m11,m12,m13,m20,m21,m22,
    //                        m23,m30,m31,m32,m33} [row major]
    //   false: entry[0..15]={m00,m10,m20,m30,m01,m11,m21,m31,m02,m12,m22,
    //                        m32,m03,m13,m23,m33} [col major]
    Matrix4 (const Real entry[16], bool rowMajor);

    // Assignment.
    Matrix4& operator= (const Matrix4& mat);

    // Create various matrices.
    void MakeZero ();
    void MakeIdentity ();

    // Arithmetic operations.
    Matrix4 operator+ (const Matrix4& mat) const;
    Matrix4 operator- (const Matrix4& mat) const;
    Matrix4 operator* (Real scalar) const;
    Matrix4 operator/ (Real scalar) const;
    Matrix4 operator- () const;

    // Arithmetic updates.
    Matrix4& operator+= (const Matrix4& mat);
    Matrix4& operator-= (const Matrix4& mat);
    Matrix4& operator*= (Real scalar);
    Matrix4& operator/= (Real scalar);

    // M*vec
    Vector4<Real> operator* (const Vector4<Real>& vec) const;

    // u^T*M*v
    Real QForm (const Vector4<Real>& u, const Vector4<Real>& v) const;

    // M^T
    Matrix4 Transpose () const;

    // M*mat
    Matrix4 operator* (const Matrix4& mat) const;

    // M^T*mat
    Matrix4 TransposeTimes (const Matrix4& mat) const;

    // M*mat^T
    Matrix4 TimesTranspose (const Matrix4& mat) const;

    // M^T*mat^T
    Matrix4 TransposeTimesTranspose (const Matrix4& mat) const;

    // Other operations.
    Matrix4 Inverse (const Real epsilon = (Real)0) const;
    Matrix4 Adjoint () const;
    Real Determinant () const;

    // Projection matrices onto a specified plane (containing an 'origin'
    // point and a unit-length 'normal').
    void MakeObliqueProjection (const Vector3<Real>& normal,
        const Vector3<Real>& origin, const Vector3<Real>& direction);

    void MakePerspectiveProjection (const Vector3<Real>& normal,
        const Vector3<Real>& origin, const Vector3<Real>& eye);

    // Reflection matrix through a specified plane.
    void MakeReflection (const Vector3<Real>& normal,
        const Vector3<Real>& origin);

    // Special matrices.
    WM5_MATHEMATICS_ITEM static const Matrix4 ZERO;
    WM5_MATHEMATICS_ITEM static const Matrix4 IDENTITY;

protected:
    using Table<4,4,Real>::mEntry;
};

// c * M
template <typename Real>
inline Matrix4<Real> operator* (Real scalar, const Matrix4<Real>& mat);

// v^T * M
template <typename Real>
inline Vector4<Real> operator* (const Vector4<Real>& vec,
    const Matrix4<Real>& mat);

#include "Wm5Matrix4.inl"

typedef Matrix4<float> Matrix4f;
typedef Matrix4<double> Matrix4d;

}

#endif