
/*****************************************************************************\

MODULE: mat_RR

SUMMARY:

Defines the class matrix(RR).

\*****************************************************************************/


#include "matrix.h"
#include "vec_vec_RR.h"

matrix_decl(RR)

void add(matrix(RR)& X, const matrix(RR)& A, const matrix(RR)& B); 
// X = A + B

void sub(matrix(RR)& X, const matrix(RR)& A, const matrix(RR)& B); 
// X = A - B

void mul(matrix(RR)& X, const matrix(RR)& A, const matrix(RR)& B); 
// X = A * B

void mul(vector(RR)& x, const matrix(RR)& A, const vector(RR)& b); 
// x = A * b

void mul(vector(RR)& x, const vector(RR)& a, const matrix(RR)& B); 
// x = a * B

void mul(matrix(RR)& X, const matrix(RR)& A, const RR& b);
// X = A * b


void determinant(RR& d, const matrix(RR)& A);
// d = determinant(A)

void transpose(matrix(RR)& X, const matrix(RR)& A);
// X = transpose of A

void solve(RR& d, vector(RR)& X,
           const matrix(RR)& A, const vector(RR)& b);
// A is an n x n matrix, b is a length n vector.
// Computes d = determinant(A).
// If d != 0, solves x*A = b.

void inv(RR& d, matrix(RR)& X, const matrix(RR)& A);
// A is an n x n matrix.
// Computes d = determinant(A).
// If d != 0, computes X = A^{-1}.

void ident(matrix(RR)& X, long n);
// X = n x n identity matrix

long IsIdent(const matrix(RR)& A, long n);
// test if A is the n x n identity matrix

void diag(matrix(RR)& X, long n, const RR& d);
// X = n x n diagonal matrix with d on diagonal

long IsDiag(const matrix(RR)& A, long n, const RR& d);
// test if X is an  n x n diagonal matrix with d on diagonal


