#include <bits/stdc++.h>
using namespace std;
double pi = acos(-1.0);
struct point {
  double x, y;
} p[5];
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 det(point a, point b) { return a.x * b.y - a.y * b.x; }
double area() {
  double ret = 0;
  p[3] = p[0];
  for (int i = 0; i < 3; i++) ret += det(p[i + 1], p[i]);
  return fabs(ret / 2);
}
double gcd(double x, double y) {
  while (fabs(x) > 1e-4 && fabs(y) > 1e-4) {
    if (x > y)
      x -= floor(x / y) * y;
    else
      y -= floor(y / x) * x;
  }
  return x + y;
}
int main() {
  for (int i = 0; i < 3; i++) scanf("%lf%lf", &p[i].x, &p[i].y);
  double a = dist(p[0], p[1]), b = dist(p[0], p[2]), c = dist(p[1], p[2]);
  double s = area(), r = a * b * c / (4 * s);
  double A = acos((b * b + c * c - a * a) / (2 * b * c));
  double B = acos((a * a + c * c - b * b) / (2 * a * c));
  double C = acos((a * a + b * b - c * c) / (2 * a * b));
  double n = pi / gcd(gcd(A, B), C);
  printf("%.8f\n", n / 2 * r * r * sin(2 * pi / n));
  return 0;
}
