check_true(__LINE__, af::max_absolute(a1) == a1[2]);
  exercise_reductions(    ArrayType1 const& a1,    ArrayType2 const& a2,    ArrayType3 const& a3,    ArrayType4 const& a4)  {#if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1200) // VC++ 6.0    check_true(__LINE__, af::order(a1, a2) == -1);    check_true(__LINE__, af::order(a1, a1) == 0);    check_true(__LINE__, af::order(a2, a2) == 0);    check_true(__LINE__, af::order(a2, a1) == 1);    check_true(__LINE__, af::order(a1, 0) == 1);    check_true(__LINE__, af::order(a1, 1) == -1);    check_true(__LINE__, af::order(0, a1) == -1);    check_true(__LINE__, af::order(1, a1) == 1);    check_true(__LINE__, af::max_index(a1) == 2);    check_true(__LINE__, af::min_index(a1) == 0);    check_true(__LINE__, af::max(a1) == a1[2]);    check_true(__LINE__, af::min(a1) == a1[0]);    check_true(__LINE__, af::sum(a1) == a1[0] + a1[1] + a1[2]);    check_true(__LINE__, af::product(a1) == a1[0] * a1[1] * a1[2]);    check_true(__LINE__, af::mean(a1) == (a1[0] + a1[1] + a1[2]) / 3);    check_true(__LINE__, fn::absolute(      af::mean_sq(a3)      - (a3[0]*a3[0] + a3[1]*a3[1] + a3[2]*a3[2]) / 3) < 1.e-6);    check_true(__LINE__, fn::absolute(      af::mean_weighted(a3, a4)      - ((a3[0]*a4[0] + a3[1]*a4[1] + a3[2]*a4[2]) / af::sum(a4))) < 1.e-6);    check_true(__LINE__, fn::absolute(      af::mean_sq_weighted(a3, a4)      - ((  a3[0]*a3[0]*a4[0]          + a3[1]*a3[1]*a4[1]          + a3[2]*a3[2]*a4[2]) / af::sum(a4))) < 1.e-6);#endif // !(defined(BOOST_MSVC) && BOOST_MSVC <= 1200)  }