int main() {
array double a[3][3] = {1, 2, 3,
4, 5, 6,
7, 8, 9};
array double a2[4][3] = {1, 2, 3,
4, 5, 6,
7, 8, 9,
4, 4, 4};
int n = min(4,3), k = 1;
array double d[n], d2[n-(abs(k))];
d = diagonal(a);
printf("diagonal(a) = %f\n", d);
d = diagonal(a2);
printf("diagonal(a2) = %f\n", d);
d2 = diagonal(a, k);
printf("diagonal(a, 1) = %f\n", d2);
d2 = diagonal(a2, k);
printf("diagonal(a2, 1) = %f\n", d2);
k = -1;
d2 = diagonal(a, k);
printf("diagonal(a, -1) = %f\n", d2);
d2 = diagonal(a2, k);
printf("diagonal(a2, -1) = %f\n", d2);
}
diagonal(a) = 1.000000 5.000000 9.000000
diagonal(a2) = 1.000000 5.000000 9.000000
diagonal(a, 1) = 2.000000 6.000000
diagonal(a2, 1) = 2.000000 6.000000
diagonal(a, -1) = 4.000000 8.000000
diagonal(a2, -1) = 4.000000 8.000000