#include <bits/stdc++.h>
const double eps = 1e-5;
double gcd(double x, double y) {
  while (x > eps && y > eps) {
    if (x > y)
      x = x - floor(x / y) * y;
    else
      y = y - floor(y / x) * x;
  }
  return x + y;
}
using namespace std;
int main() {
  double x1, y1;
  double x2, y2;
  double x3, y3;
  scanf("%lf %lf", &x1, &y1);
  scanf("%lf %lf", &x2, &y2);
  scanf("%lf %lf", &x3, &y3);
  double a = hypot(x1 - x2, y1 - y2);
  double b = hypot(x1 - x3, y1 - y3);
  double c = hypot(x2 - x3, y2 - y3);
  double a2 = a * a;
  double b2 = b * b;
  double c2 = c * c;
  double alpha = acos((b2 + c2 - a2) / (2 * b * c));
  double beta = acos((a2 + c2 - b2) / (2 * a * c));
  double gamma = acos((a2 + b2 - c2) / (2 * a * b));
  double angle = gcd(gcd(alpha, beta), gamma);
  double n = M_PI / angle;
  double R = a / (2 * sin(alpha));
  cout << setprecision(6) << fixed << 0.5 * n * R * R * sin(2 * M_PI / n)
       << endl;
  return 0;
}
