private static double[,] AdjugateMatrix( double[,] a )
{
double[,] b = new double[3, 3];
b[0, 0] = Det2( a[1, 1], a[1, 2], a[2, 1], a[2, 2] );
b[1, 0] = Det2( a[1, 2], a[1, 0], a[2, 2], a[2, 0] );
b[2, 0] = Det2( a[1, 0], a[1, 1], a[2, 0], a[2, 1] );
b[0, 1] = Det2( a[2, 1], a[2, 2], a[0, 1], a[0, 2] );
b[1, 1] = Det2( a[2, 2], a[2, 0], a[0, 2], a[0, 0] );
b[2, 1] = Det2( a[2, 0], a[2, 1], a[0, 0], a[0, 1] );
b[0, 2] = Det2( a[0, 1], a[0, 2], a[1, 1], a[1, 2] );
b[1, 2] = Det2( a[0, 2], a[0, 0], a[1, 2], a[1, 0] );
b[2, 2] = Det2( a[0, 0], a[0, 1], a[1, 0], a[1, 1] );
return b;
}