#include <bits/stdc++.h>
using namespace std;
const int maxn = 15 + 1007;
const int oo = 1e9 + 7;
const long double eps = 1e-4;
pair<long double, long double> p[maxn];
long double side[maxn];
long double a[maxn];
long double gcd(long double a, long double b) {
  while (abs(a) > eps && abs(b) > eps) {
    if (a > b)
      a -= floor(a / b) * b;
    else
      b -= floor(b / a) * a;
  }
  return a + b;
}
long double dist(pair<long double, long double> a,
                 pair<long double, long double> b) {
  long double tmp = (a.first - b.first) * (a.first - b.first) +
                    (a.second - b.second) * (a.second - b.second);
  return sqrt(tmp);
}
long double angle(long double a, long double b, long double c) {
  return (acos((b * b + c * c - a * a) / (2 * b * c)));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout << fixed << setprecision(9);
  for (int i = 1; i <= 3; i++) cin >> p[i].first >> p[i].second;
  p[4] = p[1];
  for (int i = 1; i <= 3; i++) side[i] = dist(p[i], p[i + 1]);
  side[0] = side[3];
  side[4] = side[1];
  long double p = 0;
  for (int i = 1; i <= 3; i++) p += side[i];
  p /= 2;
  long double S = p;
  for (int i = 1; i <= 3; i++) S *= p - side[i];
  S = sqrt(S);
  long double R = 1;
  for (int i = 1; i <= 3; i++) R *= side[i];
  R /= 4 * S;
  for (int i = 1; i <= 3; i++) a[i] = angle(side[i - 1], side[i + 1], side[i]);
  long double GCD = gcd(gcd(a[1], a[2]), a[3]);
  long double n =
      3.141592653589793238462643383279502884197169399375105820974944592307816406286 /
      GCD;
  long double res =
      n / 2 * R * R *
      sin(2 *
          3.141592653589793238462643383279502884197169399375105820974944592307816406286 /
          n);
  cout << res << "\n";
  return 0;
}
