#include <bits/stdc++.h>
using namespace std;
namespace gt {
struct point {
  long double x, y;
};
point readpct() {
  point x;
  cin >> x.x >> x.y;
  return x;
}
long double area(point o, point a, point b) {
  return fabs((a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x));
}
long double dist(point a, point b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
long double getangle(point a, point o, point b) {
  long double sinus = area(o, a, b) / (dist(o, a) * dist(o, b));
  return asin(sinus);
}
}  // namespace gt
long double fgcd(long double a, long double b) {
  if (a < b) return fgcd(b, a);
  if (b < 1e-3) return a;
  return fgcd(b, a - b);
}
int main() {
  gt::point a, b, c;
  a = gt::readpct();
  b = gt::readpct();
  c = gt::readpct();
  long double ang1, ang2, ang3;
  ang1 = gt::getangle(a, b, c) * 2;
  ang2 = gt::getangle(b, a, c) * 2;
  ang3 = (2 * 3.14159265359) - ang1 - ang2;
  long double r = gt::dist(a, b) * gt::dist(a, c) * gt::dist(b, c) /
                  (2 * gt::area(a, b, c));
  long double val = fgcd(fgcd(ang1, ang2), ang3);
  long double nr = (2 * 3.14159265359) / val;
  cout << fixed << setprecision(8) << nr * r * r * sin(val) / 2 << "\n";
  return 0;
}
