[mareframe] View of /trunk/gadget/matrix.cc
View of /trunk/gadget/matrix.cc
Parent Directory
| Revision Log
Revision 12 -
( download)
( annotate)
Fri Jul 24 18:36:24 2015 UTC
(9 years ago)
by ulcessvp
File size: 1638 byte(s)
Subido seq_optimize_template.h. Actualizada manera de ejecutar. Agregados algunos comentaiors al codigo.
#include "matrix.h"
#include "mathfunc.h"
#include "gadget.h"
Matrix::Matrix(int nr, int nc, double value) {
m = new double[nr * nc];
nrow = nr;
ncol = nc;
int i, j;
for (i = 0; i < nr; i++) {
for (j = 0; j < nc; j++)
m[i*ncol+j] = value;
}
}
Matrix::~Matrix() {
int i;
if (m != 0) {
delete[] m;
m = 0;
ncol = nrow = 0;
}
}
void Matrix::AddRows(int add, int length, double value) {
if (add <= 0)
return;
int i, j;
if (m == 0) {
nrow = add;
ncol = length;
m = new double[nrow*ncol];
for (i = 0; i < nrow; i++) {
for (j = 0; j < length; j++)
m[i*ncol+j] = value;
}
} else {
int aux = nrow + add;
double* vnew = new double[aux*length];
for (i = 0; i < nrow; i++)
for (j = 0; j < length; j++)
vnew[i*ncol+j] = m[i*ncol+j];
for (i = nrow; i < nrow + add; i++) {
for (j = 0; j < length; j++)
vnew[i*ncol+j] = value;
}
delete[] m;
m = vnew;
nrow = aux;
}
}
void Matrix::Reset() {
if (nrow > 0) {
int i;
delete[] m;
m = 0;
nrow = 0;
ncol = 0;
}
}
void Matrix::Initialize(int nr, int nc, double initial) {
if (m != 0)
delete[] m;
m = new double[nr * nc];
nrow = nr;
ncol = nc;
int i, j;
for (i = 0; i < nr; i++) {
for (j = 0; j < nc; j++)
m[i*ncol+j] = initial;
}
}
void Matrix::Print(ofstream& outfile) const {
int i, j;
for (i = 0; i < nrow; i++) {
outfile << TAB;
for (j = 0; j < ncol; j++)
outfile << setw(smallwidth) << setprecision(smallprecision)
<< m[i*ncol+j] << sep;
outfile << endl;
}
}
void Matrix::setToZero() {
int i, j;
for (i = 0; i < nrow; i++)
for (j = 0; j < ncol; j++)
m[i*ncol+j] = 0.0;
}
|