#include <bits/stdc++.h>
using namespace std;
struct NODE {
  double x, y;
};
NODE pillar[3];
double dis(NODE a, NODE b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
double Heron(double a, double b, double c) {
  double p = (a + b + c) / 2;
  return sqrt(p * (p - a) * (p - b) * (p - c));
}
double Radius(double a, double b, double c) {
  double S = Heron(a, b, c);
  return a * b * c / (4 * S);
}
double fgcd(double a, double b) {
  if (fabs(b - 0) <= (1e-4)) return a;
  if (fabs(a - 0) <= (1e-4)) return b;
  return fgcd(b, fmod(a, b));
}
void gao() {
  double a, b, c;
  double p, S, R, A, B, C;
  double ansS;
  a = dis(pillar[0], pillar[1]);
  b = dis(pillar[1], pillar[2]);
  c = dis(pillar[2], pillar[0]);
  R = Radius(a, b, c);
  A = acos(1 - a * a / (2 * R * R));
  B = acos(1 - b * b / (2 * R * R));
  C = 2 * acos(-1.0) - A - B;
  double angle_fgcd = fgcd(A, fgcd(B, C));
  ansS = acos(-1.0) / angle_fgcd * R * R * sin(angle_fgcd);
  printf("%.8lf\n", ansS);
}
void READ() {
  int i;
  for (i = 0; i < 3; ++i) {
    scanf("%lf%lf", &pillar[i].x, &pillar[i].y);
  }
  gao();
}
int main() {
  READ();
  return 0;
}
