// Initialise matrix A, and vector b
double a[][3] = {
{1.0, 0.2, 0.1},
{0.6, 3.0, -0.1},
{0.2, 0.4, 6.1}
};
double b[] = {4.0, 5.3, 2.8};
// Calculate determinant of matrix A
double d = 0.0;
for (int i = 0; i < 3; i++) {
d += a[0][i] * (a[1][(i + 1) % 3] * a[2][(i + 2) % 3] - a[1][(i + 2) % 3] * a[2][(i + 1) % 3]);
}
// Find inverse of matrix A
double ia[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
ia[i][j] = ((a[(j + 1) % 3][(i + 1) % 3] * a[(j + 2) % 3][(i + 2) % 3])
- (a[(j + 1) % 3][(i + 2) % 3] * a[(j + 2) % 3][(i + 1) % 3])) / d;
}
}
// Solve matrix equation: Ax = b, via x = A^-1 * b
double x[3] = {0.0, 0.0, 0.0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
x[i] += ia[i][j] * b[j];
}
}