#include <stdio.h>
#include <arrayfire.h>
using namespace af;
int main(int argc, char ** argv)
{
try {
printf("\n=== ArrayFire signed(s32) / unsigned(u32) Integer Example ===\n");
int h_A[] = {1, 2, 4, -1, 2, 0, 4, 2, 3};
int h_B[] = {2, 3, -5, 6, 0, 10, -12, 0, 1};
array A = array(3, 3, h_A);
array B = array(3, 3, h_B);
printf("--\nSub-refencing and Sub-assignment\n");
print(A);
print(A.col(0));
print(A.row(0));
A(0) = 11;
A(1) = 100;
print(A);
print(B);
A(1,span) = B(2,span);
print(A);
printf("--Bit-wise operations\n");
print(A & B);
print(A | B);
print(A ^ B);
printf("\n--Logical operations\n");
print(A && B);
print(A || B);
printf("\n--Sorting\n");
array out, idx;
sort(out, idx, A);
print(A);
print(out);
print(idx);
printf("\n--Transpose\n");
print(A);
print(A.T());
printf("\n--Flip Vertically / Horizontally\n");
print(A);
print(flipv(A));
print(fliph(A));
printf("\n--Sum along rows\n");
print(A);
print(sum(A));
printf("\n--Product along rows\n");
print(A);
print(prod(A));
printf("\n--Minimum along rows\n");
print(A);
print(min(A));
printf("\n--Maximum along rows\n");
print(A);
print(max(A));
printf("\n--Minimum along rows with index\n");
print(A);
min(out, idx, A);
print(out);
print(idx);
} 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;
}