#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-4;
struct point {
  double x, y;
  void read() { scanf("%lf%lf", &x, &y); }
};
double dist(point A, point B) {
  return sqrt((A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y));
}
double gcd(double a, double b) {
  while (a > eps && b > eps) {
    if (a > b)
      a -= floor(a / b) * b;
    else
      b -= floor(b / a) * a;
  }
  return a + b;
}
int main() {
  point A, B, C;
  A.read();
  B.read();
  C.read();
  double l1 = dist(A, B);
  double l2 = dist(A, C);
  double l3 = dist(B, C);
  double u = (l1 + l2 + l3) / 2;
  double S = sqrt(u * (u - l1) * (u - l2) * (u - l3));
  double r = l1 * l2 * l3 / (4 * S);
  double a = acos((l1 * l1 + l2 * l2 - l3 * l3) / (2 * l1 * l2));
  double b = acos((l1 * l1 + l3 * l3 - l2 * l2) / (2 * l1 * l3));
  double c = acos((l3 * l3 + l2 * l2 - l1 * l1) / (2 * l3 * l2));
  double d = gcd(2 * a, gcd(2 * b, 2 * c));
  double n = 2 * M_PI / d;
  double res = n * r * r * sin(2 * M_PI / n) / 2;
  printf("%.8lf\n", res);
  exit(0);
}
