3
\brief Enter brief description of file here
9
namespace psi { namespace input {
11
FLOAT** create_matrix(int a, int b)
17
M = (FLOAT**) malloc(sizeof(FLOAT*)*a);
18
M[0] = (FLOAT *) malloc(sizeof(FLOAT)*a*b);
28
void delete_matrix(FLOAT** M)
36
void print_matrix(FLOAT** a, int m, int n, FILE* out)
50
for (i=ii; i <= nn; i++) fprintf(out," %5d",i);
52
for (i=0; i < m; i++) {
53
fprintf (out,"\n%5d",i+1);
54
for (j=ii-1; j < nn; j++) {
56
fprintf (out,"%12.7Lf",a[i][j]);
58
fprintf (out,"%12.7lf",a[i][j]);
70
FLOAT** convert_matrix(double **m, int a, int b, int transpose)
72
int nrow = transpose ? b : a;
73
int ncol = transpose ? a : b;
74
int nelem, elem, row, col;
78
FLOAT** M = create_matrix(nrow, ncol);
81
for(row=0; row<nrow; row++)
82
for(col=0; col<ncol; col++) {
83
(*Melem) = (FLOAT) m[row][col];
89
for(row=0; row<nrow; row++)
90
for(col=0; col<ncol; col++) {
91
(*Melem) = (FLOAT) m[col][row];
99
int matrix_mult(FLOAT** A, int arow, int acol, FLOAT** B, int brow, int bcol, FLOAT** C)
103
FLOAT *aelem, *belem;
108
for(row=0; row<arow; row++) {
109
for(col=0; col<bcol; col++) {
113
for(link=0; link<nlink; link++) {
114
tmp += (*aelem) * (*belem);
128
void lu_decom(FLOAT** a, int n, int* indx, FLOAT* d)
131
FLOAT big,dum,sum,temp;
132
FLOAT* vv = (FLOAT *) malloc(n*sizeof(FLOAT));
136
for (i=0; i < n ; i++) {
138
for (j=0; j < n; j++) {
139
if ((temp=FABS(a[i][j])) > big) big=temp;
147
for (j=0; j < n ; j++) {
148
for (i=0; i < j ; i++) {
150
for (k=0; k < i ; k++) sum -= a[i][k]*a[k][j];
154
for (i=j ; i < n ; i++) {
156
for (k=0; k < j ; k++) sum -= a[i][k]*a[k][j];
158
if ((dum=vv[i]*fabs(sum)) >= big) {
164
for (k=0; k < n; k++) {
173
if (a[j][j] == 0.0) a[j][j] = TINY;
176
for (i=j+1; i < n ; i++) a[i][j] *= dum;
182
}} // namespace psi::input