check_true(__LINE__, af::max_absolute(r5) == -r5[1]);
  void exercise_reductions()  {    af::tiny<int, 3> a1(0,1,2);    af::tiny<int, 3> a2(3,4,5);    af::const_ref<int> r1 = a1.const_ref();    af::const_ref<int> r2 = a2.const_ref();    check_true(__LINE__, af::order(r1, r2) == -1);    check_true(__LINE__, af::order(r1, r1) == 0);    check_true(__LINE__, af::order(r2, r2) == 0);    check_true(__LINE__, af::order(r2, r1) == 1);    check_true(__LINE__, af::order(r1, 0) == 1);    check_true(__LINE__, af::order(r1, 1) == -1);    check_true(__LINE__, af::order(0, r1) == -1);    check_true(__LINE__, af::order(1, r1) == 1);    check_true(__LINE__, af::max_index(r1) == 2);    check_true(__LINE__, af::min_index(r1) == 0);    check_true(__LINE__, af::max(r1) == r1[2]);    check_true(__LINE__, af::min(r1) == r1[0]);    check_true(__LINE__, af::sum(r1) == r1[0] + r1[1] + r1[2]);    check_true(__LINE__, af::product(r1) == r1[0] * r1[1] * r1[2]);    check_true(__LINE__, af::mean(r1) == (r1[0] + r1[1] + r1[2]) / 3);    af::tiny<double, 3> a3(3,4,5);    af::tiny<double, 3> a4(4,5,6);    af::const_ref<double> r3 = a3.const_ref();    af::const_ref<double> r4 = a4.const_ref();    check_true(__LINE__, fn::absolute(      af::mean_sq(r3)      - (r3[0]*r3[0] + r3[1]*r3[1] + r3[2]*r3[2]) / 3) < 1.e-6);    check_true(__LINE__, fn::absolute(      af::mean_weighted(r3, r4)      - ((r3[0]*r4[0] + r3[1]*r4[1] + r3[2]*r4[2]) / af::sum(r4))) < 1.e-6);    check_true(__LINE__, fn::absolute(      af::mean_sq_weighted(r3, r4)      - ((  r3[0]*r3[0]*r4[0]          + r3[1]*r3[1]*r4[1]          + r3[2]*r3[2]*r4[2]) / af::sum(r4))) < 1.e-6);  }