#include <bits/stdc++.h>
using namespace std;
struct Y {
  double x, y;
};
Y P[5];
double S = 0, R, a, b, c, A, B, C, temp, n;
double dist(int k1, int k2, int l1, int l2) {
  return sqrt((P[k1].x - P[l1].x) * (P[k1].x - P[l1].x) +
              (P[k2].y - P[l2].y) * (P[k2].y - P[l2].y));
}
double gcd(double a, double b) {
  while (fabs(a) > 1e-4 && fabs(b) > 1e-4) {
    if (a > b)
      a -= floor(a / b) * b;
    else
      b -= floor(b / a) * a;
  }
  return a + b;
}
int main(int argc, char *argv[]) {
  for (int i = 1; i <= 3; i++) cin >> P[i].x >> P[i].y;
  P[4].x = P[1].x;
  P[4].y = P[1].y;
  for (int i = 1; i <= 3; i++) S += (P[i + 1].x * P[i].y - P[i + 1].y * P[i].x);
  S = fabs(S / 2.0);
  a = dist(1, 1, 2, 2);
  b = dist(1, 1, 3, 3);
  c = dist(2, 2, 3, 3);
  R = (a * b * c) / (4.0 * S);
  A = acos((b * b + c * c - a * a) / (2.0 * b * c));
  B = acos((a * a + c * c - b * b) / (2.0 * a * c));
  C = acos((a * a + b * b - c * c) / (2.0 * a * b));
  temp = gcd(A, B);
  temp = gcd(temp, C);
  n = acos(-1) / temp;
  S = n / 2 * R * R * sin(2 * acos(-1) / n);
  cout.precision(6);
  cout << fixed << S << endl;
  return 0;
}
