Log In | Get Help   
Home My Page Projects Code Snippets Project Openings Mareframe
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files
[mareframe] View of /trunk/gadget/matrix.cc
[mareframe] / trunk / gadget / matrix.cc Repository:
ViewVC logotype

View of /trunk/gadget/matrix.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12 - (download) (annotate)
Fri Jul 24 18:36:24 2015 UTC (8 years, 10 months 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;
}

root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge