#include <bits/stdc++.h>
using namespace std;
int main() {
  double ax, ay, bx, by, cx, cy;
  scanf("%lf %lf", &ax, &ay);
  scanf("%lf %lf", &bx, &by);
  scanf("%lf %lf", &cx, &cy);
  double d = 2.0 * (ax * (by - cy) + bx * (cy - ay) + cx * (ay - by));
  double ux = (((ax * ax) + (ay * ay)) * (by - cy) +
               ((bx * bx) + (by * by)) * (cy - ay) +
               ((cx * cx) + (cy * cy)) * (ay - by)) /
              d;
  double uy = (((ax * ax) + (ay * ay)) * (cx - bx) +
               ((bx * bx) + (by * by)) * (ax - cx) +
               ((cx * cx) + (cy * cy)) * (bx - ax)) /
              d;
  ax -= ux;
  ay -= uy;
  bx -= ux;
  by -= uy;
  cx -= ux;
  cy -= uy;
  double px = ax;
  double py = ay;
  bool bFound = false;
  bool cFound = false;
  int n = 3;
  for (; n <= 100; n++) {
    px = ax;
    py = ay;
    double angle = 2.0 * 3.14159265 / n;
    double pxp, pyp;
    bFound = false;
    cFound = false;
    for (int i = 1; i < n; i++) {
      pxp = px * cos(angle) - py * sin(angle);
      pyp = px * sin(angle) + py * cos(angle);
      px = pxp;
      py = pyp;
      if (!bFound) {
        bFound = (abs(px - bx) < 0.00001) && (abs(py - by) < 0.00001);
      }
      if (!cFound) {
        cFound = (abs(px - cx) < 0.00001) && (abs(py - cy) < 0.00001);
      }
    }
    if (bFound && cFound) {
      break;
    }
  }
  double R = sqrt(ax * ax + ay * ay);
  double area = 0.5 * (n * R * R) * sin(2.0 * 3.14159265 / n);
  printf("%f", area);
}
