#include <stdio.h>
#include <arrayfire.h>
using namespace af;
int main(int argc, char **argv)
{
try {
printf("\n======= ArrayFire DLA Examples =====\n\n");
printf("--ArrayFire Eigendecomposition\n\n");
int n = 3;
array in;
array val, vec;
in = randu(n, n);
print(eigen(in));
eigen(val, vec, in);
print(in);
print(val);
print(vec);
printf("--ArrayFire LU decomposition\n\n");
int m = 6;
n = 4;
array out;
array l, u, p;
in = randu(m, n);
out = lu(in);
lu(l, u, p, in);
print(in);
print(out);
print(l);
print(u);
print(p);
printf("--ArrayFire Solve\n\n");
n = 6;
array A = randu(n, n);
array B = randu(n, n);
array X = solve(A, B);
print(A);
print(B);
print(X);
float res = max<float>(abs(A * X - B));
printf("\nMaximum of abolute error: %f\n", res);
} catch (af::exception& e) {
fprintf(stderr, "%s\n", e.what());
}
#ifdef WIN32 // pause in Windows
if (!(argc == 2 && argv[1][0] == '-')) {
printf("hit [enter]...");
getchar();
}
#endif
return 0;
}