#include
int main() {
int m = 5;
array double a[5][5] = { 1, 10, 100, 1000, 10000,
0.1, 1, 10, 100, 1000,
0.01, 0.1, 1, 10, 100,
0.001,0.01, 0.1, 1, 10,
0.0001,0.001,0.01, 0.1, 1};
int status;
array double b[m][m], d[m][m];
status = balance(a, b, d);
if (status == 0) {
printf("a =\n%f\n", a);
printf("b =\n%f\n", b);
printf("d =\n%f\n", d);
printf("inverse(d)*a*d - b =\n%f\n", inverse(d)*a*d-b);
}
else
printf("error: calculation error in balance().\n");
}
a =
1.000000 10.000000 100.000000 1000.000000 10000.000000
0.100000 1.000000 10.000000 100.000000 1000.000000
0.010000 0.100000 1.000000 10.000000 100.000000
0.001000 0.010000 0.100000 1.000000 10.000000
0.000100 0.001000 0.010000 0.100000 1.000000
b =
1.000000 1.000000 1.000000 1.000000 1.000000
1.000000 1.000000 1.000000 1.000000 1.000000
1.000000 1.000000 1.000000 1.000000 1.000000
1.000000 1.000000 1.000000 1.000000 1.000000
1.000000 1.000000 1.000000 1.000000 1.000000
d =
1000.000000 0.000000 0.000000 0.000000 0.000000
0.000000 100.000000 0.000000 0.000000 0.000000
0.000000 0.000000 10.000000 0.000000 0.000000
0.000000 0.000000 0.000000 1.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.100000
inverse(d)*a*d - b =
0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000
-0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000
-0.000000 0.000000 0.000000 0.000000 0.000000