#include <bits/stdc++.h>
using namespace std;
template <typename T>
int size(const T& c) {
  return int(c.size());
}
void getLine(double x1, double y1, double x2, double y2, double& a, double& b,
             double& c) {
  a = x2 - x1;
  b = y2 - y1;
  c = a * (x1 + x2) / 2 + b * (y1 + y2) / 2;
}
double det(double a11, double a12, double a21, double a22) {
  return a11 * a22 - a12 * a21;
}
double dist(double x1, double y1, double x2, double y2) {
  double dx = x2 - x1, dy = y2 - y1;
  return sqrt(dx * dx + dy * dy);
}
double angle(double a, double b, double c) {
  return acos((a * a + b * b - c * c) / (2 * a * b));
}
double sqr(double x) { return x * x; }
bool isInt(double x) { return fabs(x - int(x + 0.5)) < 1e-5; }
const double pi = 2 * acos(0.0);
int main() {
  double x1, y1, x2, y2, x3, y3;
  scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3);
  double a11, a12, b1, a21, a22, b2;
  getLine(x1, y1, x2, y2, a11, a12, b1);
  getLine(x2, y2, x3, y3, a21, a22, b2);
  double d = det(a11, a12, a21, a22);
  double cx = det(b1, a12, b2, a22) / d, cy = det(a11, b1, a21, b2) / d;
  double alfa =
      angle(dist(cx, cy, x1, y1), dist(cx, cy, x2, y2), dist(x1, y1, x2, y2));
  double beta =
      angle(dist(cx, cy, x2, y2), dist(cx, cy, x3, y3), dist(x2, y2, x3, y3));
  double res = 1e32;
  for (int n(3), _b(100); n <= _b; ++n) {
    double x = 2 * pi / n;
    if (isInt(alfa / x) && isInt(beta / x)) {
      double area = 0.5 * sqr(dist(cx, cy, x1, y1)) * sin(x) * n;
      res = min(res, area);
    }
  }
  printf("%.13lf\n", res);
  exit(0);
}
