C++ アルゴリズムとデータ構造のライブラリ
#include "library/geometry/area_square.hpp"doubleは桁数表現11bitを除き、52bit程度の精度
18桁使うなら2で割らずlong longで返すこと
$O(1)$
double S = area_square(x1, y1, x2, y2, x3, y3, x4, y4);
#pragma once
template <typename T>
double area_square(T x1, T y1, T x2, T y2, T x3, T y3, T x4, T y4) {
return hypot(x1 - x3, y1 - y3) * hypot(x2 - x4, y2 - y4) / 2.0;
}#line 2 "library/geometry/area_square.hpp"
template <typename T>
double area_square(T x1, T y1, T x2, T y2, T x3, T y3, T x4, T y4) {
return hypot(x1 - x3, y1 - y3) * hypot(x2 - x4, y2 - y4) / 2.0;
}