#include <bits/stdc++.h>
double a[10][10];
struct {
  double x, y;
} p1, p2, p3;
int main() {
  scanf("%lf%lf%lf%lf%lf%lf", &p1.x, &p1.y, &p2.x, &p2.y, &p3.x, &p3.y);
  double c1 =
      (p1.y - p2.y) * (p1.y + p2.y) / 2 + (p1.x - p2.x) * (p1.x + p2.x) / 2;
  double c2 =
      (p1.y - p3.y) * (p1.y + p3.y) / 2 + (p1.x - p3.x) * (p1.x + p3.x) / 2;
  double tmp = (p1.x - p2.x) * (p1.y - p3.y) - (p1.x - p3.x) * (p1.y - p2.y);
  double x = (c1 * (p1.y - p3.y) - c2 * (p1.y - p2.y)) / tmp;
  double y = -(c1 * (p1.x - p3.x) - c2 * (p1.x - p2.x)) / tmp;
  int num;
  double tmpx, tmpy;
  double R = sqrt((p1.x - x) * (p1.x - x) + (p1.y - y) * (p1.y - y));
  p1.x = p1.x - x;
  p2.x = p2.x - x;
  p3.x = p3.x - x;
  p1.y = p1.y - y;
  p2.y = p2.y - y;
  p3.y = p3.y - y;
  x = 0;
  y = 0;
  double xx = p1.x;
  double yy = p1.y;
  for (int i = 3; i <= 100; i++) {
    num = 0;
    a[1][1] = cos(2 * acos(-1.0) / i);
    a[1][2] = -sin(2 * acos(-1.0) / i);
    a[2][1] = sin(2 * acos(-1.0) / i);
    a[2][2] = cos(2 * acos(-1.0) / i);
    for (int j = 1; j <= i; j++) {
      tmpx = xx * a[1][1] + yy * a[1][2];
      tmpy = xx * a[2][1] + yy * a[2][2];
      xx = tmpx;
      yy = tmpy;
      if ((fabs(xx - p1.x) < 1e-4 && fabs(yy - p1.y) < 1e-4) ||
          (fabs(xx - p2.x) < 1e-4 && fabs(yy - p2.y) < 1e-4) ||
          (fabs(xx - p3.x) < 1e-4 && fabs(yy - p3.y) < 1e-4))
        num++;
    }
    if (num == 3) {
      printf("%.8lf\n", R * R * sin(2 * acos(-1.0) / i) * i / 2);
      return 0;
    }
  }
  return 0;
}
