#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
const double EPS = 1e-5;
struct V {
  double x, y;
  inline V subt(const V o) { return V(x - o.x, y - o.y); }
  inline double distTo(const V o) { return hypot(x - o.x, y - o.y); }
  V() {}
  V(double _x, double _y) : x(_x), y(_y) {}
};
inline double toDeg(double rad) { return rad * 180.0 / PI; }
inline bool isIntDiv(double num, double den) {
  if (den > num + EPS) return false;
  double intDiv = floor((num / den) + EPS);
  return (fabs(num - intDiv * den) < EPS);
}
int main() {
  V a[3];
  for (int i = 0; i < 3; ++i) cin >> a[i].x >> a[i].y;
  double ang[3], d[3];
  for (int i = 0; i < 3; ++i) {
    V o = a[i], u = a[(i + 1) % 3], v = a[(i + 2) % 3];
    u = u.subt(o), v = v.subt(o);
    double angU = atan2(u.y, u.x);
    double angV = atan2(v.y, v.x);
    ang[i] = fabs(angU - angV);
    ang[i] = min(ang[i], 2 * PI - ang[i]) * 2.0;
    d[i] = u.distTo(v);
  }
  for (int n = 3; n <= 105; ++n) {
    double centAng = 2 * PI / (double)n;
    bool ok = true;
    ok &= isIntDiv(ang[0], centAng);
    ok &= isIntDiv(ang[1], centAng);
    ok &= isIntDiv(ang[2], centAng);
    if (ok) {
      double radius = d[0] / 2 / sin(ang[0] / 2.0);
      double area =
          n * radius * radius * sin(centAng / 2.0) * cos(centAng / 2.0);
      printf("%.6lf\n", area);
      return 0;
    }
  }
  printf("Answer not found.\n");
  return 0;
}
