#include <bits/stdc++.h>
namespace fast_IO {
const int IN_LEN = 10000000, OUT_LEN = 10000000;
char ibuf[IN_LEN], obuf[OUT_LEN], *ih = ibuf + IN_LEN, *oh = obuf;
char *lastin = ibuf + IN_LEN;
const char *lastout = ibuf + OUT_LEN - 1;
inline char getchar_() {
  if (ih == lastin) lastin = ibuf + fread(ibuf, 1, IN_LEN, stdin), ih = ibuf;
  return (*ih++);
}
inline void putchar_(const char x) {
  if (ih == lastout) fwrite(obuf, 1, oh - obuf, stdout), oh = obuf;
  *oh++ = x;
}
inline void flush() { fwrite(obuf, 1, oh - obuf, stdout); }
}  // namespace fast_IO
using namespace fast_IO;
template <typename T>
inline T max(const T a, const T b) {
  return a > b ? a : b;
}
template <typename T>
inline T min(const T a, const T b) {
  return a < b ? a : b;
}
template <typename T>
inline T abs(const T a) {
  return a > 0 ? a : -a;
}
template <typename T>
inline void swap(T &a, T &b) {
  T c = a;
  a = b;
  b = c;
}
template <typename T>
inline T gcd(const T a, const T b) {
  if (a % b == 0) return b;
  return gcd(b, a % b);
}
template <typename T>
inline T square(const T a) {
  return a * a;
}
template <typename T, typename sum>
inline T pow(T x, const sum y) {
  T res = 1;
  for (register sum i = 1; i <= y; i <<= 1, x = x * x)
    if (i & y) res = res * x;
  return res;
}
template <typename T>
inline void read(T &x) {
  char cu = getchar();
  x = 0;
  bool fla = 0;
  while (!isdigit(cu)) {
    if (cu == '-') fla = 1;
    cu = getchar();
  }
  while (isdigit(cu)) x = x * 10 + cu - '0', cu = getchar();
  if (fla) x = -x;
}
template <typename T>
void printe(const T x) {
  if (x >= 10) printe(x / 10);
  putchar(x % 10 + '0');
}
template <typename T>
inline void print(const T x) {
  if (x < 0)
    putchar('-'), printe(-x);
  else
    printe(x);
}
const double PI = acos(-1.0), eps = 1e-2;
struct Point {
  double x, y;
};
inline double Length(const Point a, const Point b) {
  return sqrt(square(a.x - b.x) + square(a.y - b.y));
}
double fgcd(const double a, const double b) {
  if (abs(a) < eps) return b;
  if (abs(b) < eps) return a;
  return fgcd(b, fmod(a, b));
}
int main() {
  Point a, b, c;
  scanf("%lf%lf%lf%lf%lf%lf", &a.x, &a.y, &b.x, &b.y, &c.x, &c.y);
  const double len1 = Length(a, b), len2 = Length(a, c), len3 = Length(b, c);
  const double P = (len1 + len2 + len3) / 2,
               S = sqrt(P * (P - len1) * (P - len2) * (P - len3)),
               R = len1 * len2 * len3 / (4 * S);
  const double Ang1 = 2 * asin(len1 / (2 * R)) * 180 / PI,
               Ang2 = 2 * asin(len2 / (2 * R)) * 180 / PI,
               Ang3 = 360 - Ang1 - Ang2;
  const double e = 360 / fgcd(Ang1, fgcd(Ang2, Ang3)), Ang = 360 / e;
  printf("%.8f\n", sin(Ang * PI / 180) * R * R * e / 2);
  return flush(), 0;
}
