#include <bits/stdc++.h>
using namespace std;
const long long N = 4;
double eps = 1e-2, pi = acos(-1), p, len[N], s, r, c[N], d;
struct data {
  double x, y;
} a[N];
double gcd(double x, double y) {
  if (fabs(y) < eps) return x;
  return gcd(y, fmod(x, y));
}
double dis(long long x, long long y) {
  return sqrt((a[x].x - a[y].x) * (a[x].x - a[y].x) +
              (a[x].y - a[y].y) * (a[x].y - a[y].y));
}
signed main() {
  for (long long i = 1; i <= 3; i++) scanf("%lf%lf", &a[i].x, &a[i].y);
  for (long long i = 1; i <= 3; i++)
    len[i] = dis(i, i == 3 ? 1 : i + 1), p += len[i];
  p /= 2, s = sqrt(p * (p - len[1]) * (p - len[2]) * (p - len[3]));
  r = len[1] * len[2] * len[3] / (4 * s);
  for (long long i = 1; i <= 2; i++)
    c[i] = acos(1 - len[i] * len[i] / (2 * r * r));
  c[3] = 2 * pi - c[1] - c[2], d = gcd(c[1], gcd(c[2], c[3]));
  printf("%.6lf\n", (pi * r * r * sin(d)) / d);
  return 0;
}
