#include <bits/stdc++.h>
bool divisible(double alpha, double theta) {
  double abcd1 = alpha / theta;
  if (abcd1 - round(abcd1) < 0.0001 && abcd1 - round(abcd1) > -0.0001) {
    return true;
  }
  return false;
}
int main() {
  double x1, y1, x2, y2, x3, y3;
  double a1, b1, c1, a2, b2, c2;
  std::cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
  a1 = 2 * x2 - 2 * x1;
  b1 = 2 * y2 - 2 * y1;
  c1 = x2 * x2 + y2 * y2 - x1 * x1 - y1 * y1;
  a2 = 2 * x2 - 2 * x3;
  b2 = 2 * y2 - 2 * y3;
  c2 = x2 * x2 + y2 * y2 - x3 * x3 - y3 * y3;
  double xc, yc;
  xc = (c1 * b2 - c2 * b1) / (a1 * b2 - a2 * b1);
  yc = (a1 * c2 - a2 * c1) / (a1 * b2 - a2 * b1);
  double r = std::sqrt((xc - x1) * (xc - x1) + (yc - y1) * (yc - y1));
  double d1, d2, d3;
  d1 = std::sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
  d2 = std::sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
  d3 = std::sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3));
  double alpha1, alpha2, alpha3;
  alpha1 = 2 * asin(d1 / (2 * r));
  alpha2 = 2 * asin(d2 / (2 * r));
  alpha3 = 2 * asin(d3 / (2 * r));
  double theta;
  int sides;
  for (int n = 3; n < 101; n++) {
    theta = 2 * 3.1415926535 / (double)n;
    if (divisible(alpha1, theta) && divisible(alpha2, theta)) {
      sides = n;
      break;
    }
  }
  double x = 2 * r * sin(theta / 2);
  double area = (sides * x * std::sqrt(4 * r * r - x * x)) / (4);
  std::cout << std::fixed << std::setprecision(6) << area;
}
