#include <bits/stdc++.h>
using namespace std;
struct Point {
  double x, y;
};
struct Line {
  Point a, b;
};
Point intersection(Line u, Line v) {
  Point ret = u.a;
  double t =
      ((u.a.x - v.a.x) * (v.a.y - v.b.y) - (u.a.y - v.a.y) * (v.a.x - v.b.x)) /
      ((u.a.x - u.b.x) * (v.a.y - v.b.y) - (u.a.y - u.b.y) * (v.a.x - v.b.x));
  ret.x += (u.b.x - u.a.x) * t;
  ret.y += (u.b.y - u.a.y) * t;
  return ret;
}
Point circumcenter(Point a, Point b, Point c) {
  Line u, v;
  u.a.x = (a.x + b.x) / 2;
  u.a.y = (a.y + b.y) / 2;
  u.b.x = u.a.x - a.y + b.y;
  u.b.y = u.a.y + a.x - b.x;
  v.a.x = (a.x + c.x) / 2;
  v.a.y = (a.y + c.y) / 2;
  v.b.x = v.a.x - a.y + c.y;
  v.b.y = v.a.y + a.x - c.x;
  return intersection(u, v);
}
double Distance(Point pa, Point pb) {
  double x = pa.x - pb.x;
  double y = pa.y - pb.y;
  return sqrt(x * x + y * 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() {
  Point pa, pb, pc;
  cin >> pa.x >> pa.y;
  cin >> pb.x >> pb.y;
  cin >> pc.x >> pc.y;
  Point pr = circumcenter(pa, pb, pc);
  double r = Distance(pr, pa);
  double a = Distance(pa, pb);
  double b = Distance(pa, pc);
  double c = Distance(pb, pc);
  double da = acos((b * b + c * c - a * a) / (2 * b * c));
  double db = acos((a * a + c * c - b * b) / (2 * a * c));
  double dc = acos((a * a + b * b - c * c) / (2 * a * b));
  double mindeg = gcd(da, gcd(db, dc));
  double n = acos(-1.0) / mindeg;
  double area = n / 2.0 * r * r * sin(2 * acos(-1.0) / n);
  printf("%.8f\n", area);
  return 0;
}
