21 namespace TrackFindingCDC {
25 template<
class ANumber>
26 inline auto square(ANumber t) -> decltype(t* t) {
return t * t;}
35 inline double hypot2(
double x,
double y) {
return sqrt(x * x + y * y); }
38 inline double hypot3(
double x,
double y,
double z) {
return sqrt(x * x + y * y + z * z); }
48 inline std::pair<double, double> solveQuadraticABC(
const double a,
const double b,
const double c)
60 const double discriminant = b * b - 4 * a * c;
61 const double root = sqrt(discriminant);
62 const double bigSum = (b > 0) ? -b - root : -b + root;
64 const double bigSolution = bigSum / 2 / a;
65 const double smallSolution = 2 * c / bigSum;
67 return {bigSolution, smallSolution};