A lite library for operations in linear algebra

MATRIX_PRIMITIVE.h

Committer:
benson516
Date:
2017-02-10
Revision:
0:33b75d52d2a7

File content as of revision 0:33b75d52d2a7:

#ifndef MATRIX_PRIMITIVE_H
#define MATRIX_PRIMITIVE_H
//
#include <vector>
#include <math.h>

using std::vector;

// Namespace MATRIX_PRIMITIVE
//////////////////////////
namespace MATRIX_PRIMITIVE
{

// Utilities
///////////////////////////
void Mat_multiply_Vec(vector<float> &v_out, vector<vector<float> > &m_left, vector<float> &v_right); // v_out = m_left*v_right
vector<float> Mat_multiply_Vec(vector<vector<float> > &m_left, vector<float> &v_right); // v_out = m_left*v_right

// New function for matrix multiply matrix
vector<vector<float> > Mat_multiply_Mat(vector<vector<float> > &m_left, vector<vector<float> > &m_right); // m_out = m_left*m_right
vector<float> Get_VectorPlus(const vector<float> &v_a, const vector<float> &v_b, bool is_minus); // v_a + (or -) v_b
vector<float> Get_VectorScalarMultiply(const vector<float> &v_a, float scale); // scale*v_a

// Important!
// New function for scale-up a vector
// v_a *= scale
void Get_VectorScaleUp(vector<float> &v_a, float scale); // v_a *= scale

// Increment
void Get_VectorIncrement(vector<float> &v_a, const vector<float> &v_b, bool is_minus); // v_a += (or -=) v_b
/////////////////////////// end Utilities


// Matrix inversion, using Gauss method
/////////////////////////////////////////
bool SolveSingularityOnDiag(vector<vector<float> > &M, vector<vector<float> > &M_inv, size_t i);

vector<vector<float> > MatrixInversion(vector<vector<float> > M); // Note: we need a copy of M, don't use reference
///////////////////////////////////////// end Matrix inversion, using Gauss method

}
////////////////////////// end Namespace MATRIX_PRIMITIVE


#endif