#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-5;
const double pi = acos(-1.0);
struct point {
  double x, y;
  point() : x(0), y(0) {}
  point(double x, double y) : x(x), y(y) {}
  void get() { cin >> x >> y; }
  void debug() { cout << x << ' ' << y << '\n'; }
  point operator+(const point& a) const { return point(x + a.x, y + a.y); }
  point operator-(const point& a) const { return point(x - a.x, y - a.y); }
  point operator-() const { return point(-x, -y); }
  point& operator+=(const point& a) {
    x += a.x;
    y += a.y;
    return *this;
  }
  point& operator-=(const point& a) {
    x -= a.x;
    y -= a.y;
    return *this;
  }
  point operator*(double a) { return point(x * a, y * a); }
  point& operator*=(double a) {
    x *= a;
    y *= a;
    return *this;
  }
  point operator/(double a) const { return point(x / a, y / a); }
  double dot(const point& a) const { return x * a.x + y * a.y; }
  double norm() const { return x * x + y * y; }
  double length() const { return sqrt(norm()); }
  point rotate(double angle) const {
    return point(x * cos(angle) - y * sin(angle),
                 x * sin(angle) + y * cos(angle));
  }
  bool operator==(const point& a) const {
    return fabs(x - a.x) <= eps && fabs(y - a.y) <= eps;
  }
  bool operator!=(const point& a) const { return !(*this == a); }
};
struct line {
  double a, b, c;
  line() : a(0), b(0), c(0) {}
  line(double a, double b, double c) : a(a), b(b), c(c) {}
  line(const point& m, const point& n) {
    a = n.y - m.y;
    b = m.x - n.x;
    c = -(a * m.x + b * m.y);
  }
  void debug() { cout << a << ' ' << b << ' ' << c << '\n'; }
  point intersect(const line& l) {
    double a1 = a, b1 = b, c1 = -c;
    double a2 = l.a, b2 = l.b, c2 = -l.c;
    double d = a1 * b2 - a2 * b1;
    double dx = -b1 * c2 + b2 * c1;
    double dy = a1 * c2 - a2 * c1;
    return point(dx / d, dy / d);
  }
};
line mid_perpendicular(const point& a, const point& b) {
  point mid = (a + b) / 2.0;
  line d = line(a, b);
  return line(-d.b, d.a, d.b * mid.x - d.a * mid.y);
}
point center(const point& a, const point& b, const point& c) {
  line d = mid_perpendicular(a, b);
  line dd = mid_perpendicular(b, c);
  return d.intersect(dd);
}
point a, b, c, o;
bool check(int n) {
  point p = a;
  bool ok_b = false, ok_c = false;
  for (int i = 1; i <= n; ++i) {
    p = o + (p - o).rotate(2 * pi / n);
    ok_b |= (p == b);
    ok_c |= (p == c);
  }
  return ok_b && ok_c;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout << fixed << setprecision(9);
  a.get();
  b.get();
  c.get();
  assert(a != b && b != c);
  o = center(a, b, c);
  double radius = (o - a).norm();
  double ans = 1e9;
  for (int i = 3; i <= 100; ++i) {
    if (check(i)) {
      ans = min(ans, i * 0.5 * radius * sin(2 * pi / i));
    }
  }
  cout << fixed << setprecision(9) << ans << '\n';
  return 0;
}
