#include <stdio.h>
#include <cv.h>

int main( int argc, char **argv ) {
	//	行列を生成する
    CvMat *matrixA = cvCreateMat( 3, 3, CV_32F );
    CvMat *matrixAinv = cvCreateMat( 3, 3, CV_32F );
    CvMat *matrixB = cvCreateMat( 3, 1, CV_32F );
    CvMat *matrixX = cvCreateMat( 3, 1, CV_32F );

	//	行列に要素値を代入する
    cvmSet( matrixA, 0, 0, 1.0 );
    cvmSet( matrixA, 0, 1, 1.0 );
    cvmSet( matrixA, 0, 2, 1.0 );
    cvmSet( matrixA, 1, 0, 3.0 );
    cvmSet( matrixA, 1, 1, 1.0 );
    cvmSet( matrixA, 1, 2, 1.0 );
    cvmSet( matrixA, 2, 0, 5.0 );
    cvmSet( matrixA, 2, 1, 4.0 );
    cvmSet( matrixA, 2, 2, 1.0 );

    cvmSet( matrixB, 0, 0, 2.0 );
    cvmSet( matrixB, 1, 0, 4.0 );
    cvmSet( matrixB, 2, 0, 6.0 );
    
	//	行列の計算を行う
    cvInvert( matrixA, matrixAinv );
    cvMul( matrixAinv, matrixB, matrixX );
    
	//	メモリを解放する
    cvReleaseMat( &matrixA );
    cvReleaseMat( &matrixAinv );
    cvReleaseMat( &matrixB );
    cvReleaseMat( &matrixX );

    return 0;
}
 