std::acos() will automatically select the correct version. acos() on the other hand will use double precision, which is bad if scalar_t is long double.