This file is indexed.

/usr/share/psi4/samples/matrix1/test.in is in psi4-data 1:1.1-5.

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
#! An example of using BLAS and LAPACK calls directly from the Psi input file, demonstrating
#! matrix multiplication, eigendecomposition, Cholesky decomposition and LU decomposition.
#! These operations are performed on vectors and matrices provided from the Psi library.

# Example of matrix multiplication
print_out('\n  ==> Matrix Multiplication <== \n\n')

n = 3
A = psi4.Matrix(n, n)
B = psi4.Matrix(n, n)
C = psi4.Matrix(n, n)
A.name = 'A'
B.name = 'B'
C.name = 'C'

# The matrix set method takes 4 arguments: irrep, row, col, value
# Values are initialized to 0 by default
B.set(0, 0, 1, 1.0)
B.set(0, 1, 0, 2.0)
B.set(0, 2, 0, 3.0)

A.set(0, 0, 0, 2.0)
A.set(0, 1, 1, 2.0)
A.set(0, 2, 2, 2.0)

A.print_out()
B.print_out()

psi4.DGEMM(0, 'N', 'N', n, n, n, 1.0, A, n, B, n, 0.0, C, n)
C.print_out()

mmultRef = psi4.Matrix(n, n)                                                                         #TEST
mmultRef.name = "Matrix-Matrix Multiplication Reference"                                            #TEST
mmultRef.set(0, 0, 0, 0.0000000); mmultRef.set(0, 0, 1, 2.0000000); mmultRef.set(0, 0, 2, 0.0000000)   #TEST
mmultRef.set(0, 1, 0, 4.0000000); mmultRef.set(0, 1, 1, 0.0000000); mmultRef.set(0, 1, 2, 0.0000000)   #TEST
mmultRef.set(0, 2, 0, 6.0000000); mmultRef.set(0, 2, 1, 0.0000000); mmultRef.set(0, 2, 2, 0.0000000)   #TEST
compare_matrices(mmultRef, C, 6, "Matrix multiplication")                                              #TEST

print_out('\n  ==> Eigendecomposition (Hilbert Matrix) <== \n\n')

n = 4;
A = psi4.Matrix(n,n)
for i in range(1,n+1):
    for j in range(1,n+1):
        A.set(0, i-1, j-1, 1.0/(i + j - 1))
A.name = 'Hilbert Matrix'
A.print_out();

# Allocate a work array and some storage for the eigenvalues
W = psi4.Vector(4*n);
D = psi4.Vector(n);
# On input, A is the matrix and on output it contains the eigenvectors
info = psi4.DSYEV(0, 'V','U', n, A, n, D, W, 4*n)
A.name = "Eigenvectors"

# Make first element of eigenvector positive if desired
for i in range(1,n):
    if A.get(i,0) < 0 :
        A.scale_row(0, i, -1)
evecRef = psi4.Matrix(n,n)                                         #TEST
evecRef.set(0, 0, 0,  0.0291933); evecRef.set(0, 0, 1, -0.3287121) #TEST
evecRef.set(0, 0, 2,  0.7914111); evecRef.set(0, 0, 3, -0.5145527) #TEST
evecRef.set(0, 1, 0,  0.1791863); evecRef.set(0, 1, 1, -0.7419178) #TEST
evecRef.set(0, 1, 2,  0.1002281); evecRef.set(0, 1, 3,  0.6382825) #TEST
evecRef.set(0, 2, 0,  0.5820757); evecRef.set(0, 2, 1, -0.3705022) #TEST
evecRef.set(0, 2, 2, -0.5095786); evecRef.set(0, 2, 3, -0.5140483) #TEST
evecRef.set(0, 3, 0,  0.7926083); evecRef.set(0, 3, 1,  0.4519231) #TEST
evecRef.set(0, 3, 2,  0.3224164); evecRef.set(0, 3, 3,  0.2521612) #TEST
evecRef.name = "Reference Eigenvectors"                            #TEST
compare_matrices(evecRef, A, 6, "Eigenvectors")                    #TEST
evalRef = psi4.Vector(n)                                           #TEST
evalRef.set(0, 0, 0.0000967); evalRef.set(0, 1, 0.0067383)         #TEST
evalRef.set(0, 2, 0.1691412); evalRef.set(0, 3, 1.5002143)         #TEST
compare_vectors(evalRef, D, 6, "Eigenvalues")                      #TEST

print_out('  Eigenvalues')
D.print_out()
A.print_out()


print_out('\n  ==> Cholesky Decomposition (Hilbert Matrix) <== \n\n')

n = 4
A = psi4.Matrix(n,n)
for i in range(1,n+1):
    for j in range(1,n+1):
        A.set(0, i-1, j-1, 1.0/(i + j - 1))

A.name = 'Hilbert Matrix'
A.print_out()

info = psi4.DPOTRF(0, 'U', n, A, n)
for i in range(0,n):
    for j in range(i+1,n):
        A.set(0, i, j, 0.0)

cholRef = psi4.Matrix(n, n)                                       #TEST
cholRef.set(0, 0, 0, 1.0000000); cholRef.set(0, 0, 1, 0.0000000); #TEST
cholRef.set(0, 0, 2, 0.0000000); cholRef.set(0, 0, 3, 0.0000000); #TEST
cholRef.set(0, 1, 0, 0.5000000); cholRef.set(0, 1, 1, 0.2886751); #TEST
cholRef.set(0, 1, 2, 0.0000000); cholRef.set(0, 1, 3, 0.0000000); #TEST
cholRef.set(0, 2, 0, 0.3333333); cholRef.set(0, 2, 1, 0.2886751); #TEST
cholRef.set(0, 2, 2, 0.0745356); cholRef.set(0, 2, 3, 0.0000000); #TEST
cholRef.set(0, 3, 0, 0.2500000); cholRef.set(0, 3, 1, 0.2598076); #TEST
cholRef.set(0, 3, 2, 0.1118034); cholRef.set(0, 3, 3, 0.0188982); #TEST
cholRef.name = "Cholesky Decomposition Reference"                 #TEST
compare_matrices(cholRef, A, 6, "Cholesky Decomposition")         #TEST

A.name = 'Hilbert Matrix Cholesky Decomposition (T)'
A.print_out()


print_out('\n  ==> LU Decomposition (Hilbert Matrix) <== \n\n')

n = 4;
A = psi4.Matrix(n,n)
piv = psi4.IntVector(n)
for i in range(1,n+1):
    for j in range(1,n+1):
        A.set(0, i-1, j-1, 1.0/(i + j - 1))

A.name = 'Hilbert Matrix'
A.print_out();

info = psi4.DGETRF(0, n, n, A, n, piv)

luRef = psi4.Matrix(n, n)                                     #TEST
luRef.set(0, 0, 0,  1.0000000); luRef.set(0, 0, 1,  0.3333333); #TEST
luRef.set(0, 0, 2,  0.5000000); luRef.set(0, 0, 3,  0.2500000); #TEST
luRef.set(0, 1, 0,  0.5000000); luRef.set(0, 1, 1,  0.0833333); #TEST 
luRef.set(0, 1, 2,  1.0000000); luRef.set(0, 1, 3,  0.9000000); #TEST
luRef.set(0, 2, 0,  0.3333333); luRef.set(0, 2, 1,  0.0888889); #TEST
luRef.set(0, 2, 2, -0.0055556); luRef.set(0, 2, 3, -0.6000000); #TEST
luRef.set(0, 3, 0,  0.2500000); luRef.set(0, 3, 1,  0.0833333); #TEST
luRef.set(0, 3, 2, -0.0083333); luRef.set(0, 3, 3,  0.0003571); #TEST
luRef.name = "LU Decomposition Reference"                       #TEST
compare_matrices(luRef, A, 6, "LU Decomposition")               #TEST

A.name = 'Hilbert Matrix LU Decomposition (T)'
A.print_out()