| 15 | using namespace af; |
| 16 | |
| 17 | int main(int argc, char** argv) { |
| 18 | try { |
| 19 | int device = argc > 1 ? atoi(argv[1]) : 0; |
| 20 | af::setDevice(device); |
| 21 | af::info(); |
| 22 | |
| 23 | printf( |
| 24 | "\n=== ArrayFire signed(s32) / unsigned(u32) Integer Example " |
| 25 | "===\n"); |
| 26 | |
| 27 | int h_A[] = {1, 2, 4, -1, 2, 0, 4, 2, 3}; |
| 28 | int h_B[] = {2, 3, -5, 6, 0, 10, -12, 0, 1}; |
| 29 | array A = array(3, 3, h_A); |
| 30 | array B = array(3, 3, h_B); |
| 31 | |
| 32 | printf("--\nSub-refencing and Sub-assignment\n"); |
| 33 | af_print(A); |
| 34 | af_print(A.col(0)); |
| 35 | af_print(A.row(0)); |
| 36 | A(0) = 11; |
| 37 | A(1) = 100; |
| 38 | af_print(A); |
| 39 | af_print(B); |
| 40 | A(1, span) = B(2, span); |
| 41 | af_print(A); |
| 42 | |
| 43 | printf("--Bit-wise operations\n"); |
| 44 | // Returns an array of type s32 |
| 45 | af_print(A & B); |
| 46 | af_print(A | B); |
| 47 | af_print(A ^ B); |
| 48 | |
| 49 | printf("\n--Logical operations\n"); |
| 50 | // Returns an array of type b8 |
| 51 | af_print(A && B); |
| 52 | af_print(A || B); |
| 53 | |
| 54 | printf("\n--Transpose\n"); |
| 55 | af_print(A); |
| 56 | af_print(A.T()); |
| 57 | |
| 58 | printf("\n--Flip Vertically / Horizontally\n"); |
| 59 | af_print(A); |
| 60 | af_print(flip(A, 0)); |
| 61 | af_print(flip(A, 1)); |
| 62 | |
| 63 | printf("\n--Sum along columns\n"); |
| 64 | af_print(A); |
| 65 | af_print(sum(A)); |
| 66 | |
| 67 | printf("\n--Product along columns\n"); |
| 68 | af_print(A); |
| 69 | af_print(product(A)); |
| 70 | |
| 71 | printf("\n--Minimum along columns\n"); |
| 72 | af_print(A); |
| 73 | af_print(min(A)); |
| 74 | |