#ifdef NACHIA
#define _GLIBCXX_DEBUG
#else
#define NDEBUG
#endif
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <utility>
#include <queue>
#include <array>
#include <cmath>
#include <atcoder/modint>
using i64 = long long;
using u64 = unsigned long long;
#define rep(i,n) for(int i=0; i<int(n); i++)
#define repr(i,n) for(int i=int(n)-1; i>=0; i--)
const i64 INF = 1001001001001001001;
const char* yn(bool x){ return x ? "Yes" : "No"; }
template<typename A> void chmin(A& l, const A& r){ if(r < l) l = r; }
template<typename A> void chmax(A& l, const A& r){ if(l < r) l = r; }
template<typename A> using nega_queue = std::priority_queue<A,std::vector<A>,std::greater<A>>;
using Modint = atcoder::static_modint<998244353>;
//#include "nachia/vec.hpp"
using namespace std;

void testcase(){
    int dx[4] = {0,-1,0,1};
    int dy[4] = {1,0,-1,0};
    int a,b,c,d,e,f; cin >> a >> b >> c >> d >> e >> f;
    cout << fixed;
    cout.precision(1);
    int ans = 0;
    rep(i,4) rep(j,4) rep(k,4){
        int x1 = (c + dx[j]) - (a + dx[i]);
        int y1 = (d + dy[j]) - (b + dy[i]);
        int x2 = (e + dx[k]) - (a + dx[i]);
        int y2 = (f + dy[k]) - (b + dy[i]);
        int area = abs(x1 * y2 - x2 * y1);
        chmax(ans, area);
    }
    cout << (double(ans) * 0.5) << endl;
}

int main(){
    ios::sync_with_stdio(false); cin.tie(nullptr);
    testcase();
    return 0;
}