Exemple #1
0
TMReal dot(const TMVec &a, const TVec &b) 
{
	Assert(a.Elts() == b.Elts(), "(Vec::dot) Vec sizes don't match");

	TMReal	sum = vl_zero;
	Int		i;
		
	for (i = 0; i < a.Elts(); i++) 
		sum += a[i] * b[i];
	
	return(sum);
}
Exemple #2
0
TMVec operator * (const TSparseMat &m, const TMVec &v)
{
	Assert(m.Cols() == v.Elts(), "(SparseMat::*v) matrix and vector sizes don't match");
	
	Int			i;
	TMVec		result(m.Rows());
	
	for (i = 0; i < m.Rows(); i++) 
		result[i] = dot(m[i], v);
	
	return(result);
}
Exemple #3
0
TMVec operator * (const TMVec &v, const TSparseMat &m)			// v * m
{
	Assert(v.Elts() == m.Rows(), "(Mat::v*m) vector/matrix sizes don't match");
	
	TMVec	 	result(m.Cols());
	Int			i, j;

	result = vl_zero;	

	// v * M = v[0] * m[0] + v[1] * m[1] + ...
	
	for (i = 0; i < m.Rows(); i++) 
		if (len(v[i]) > 0)
			for (j = 0; j < m[i].NumItems() - 1; j++)
				result[m[i][j].index] += v[i] * m[i][j].elt;
	
	return(result);
}