#include <bits/stdc++.h>
using namespace std;
using ld = long double;
ld y1_, y2, yw, xb, yb, r;
int main(void) {
  cin >> y1_ >> y2 >> yw >> xb >> yb >> r;
  ld large = 0, small = 0;
  {
    ld A = yw - r - yb;
    ld up = atan(xb / A), dn = 0;
    for (int i = 0; i < 50; ++i) {
      ld the = (up + dn) / 2;
      ld tanth = tan(the);
      ld S = xb - (A * tanth);
      ld cross = yw - r - (S / tanth);
      ld a = 1 / tanth;
      double dom = abs(-y2 + cross);
      if (cross <= y2 && r * sqrt(a * a + 1) <= dom) {
        dn = the;
      } else {
        up = the;
      }
    }
    large = dn;
  }
  {
    ld A = yw - r - yb;
    ld up = atan(xb / A), dn = 0;
    for (int i = 0; i < 50; ++i) {
      ld the = (up + dn) / 2;
      ld tanth = tan(the);
      ld S = xb - (A * tanth);
      ld cross = yw - r - (S / tanth);
      if (cross >= y1_ + r) {
        up = the;
      } else {
        dn = the;
      }
    }
    small = dn;
  }
  if (small > large) {
    cout << -1 << endl;
  } else {
    ld angle = (small + large) / 2;
    ld A = yw - r - yb;
    ld ans = xb - tan(angle) * A;
    cout.precision(20);
    cout << ans << endl;
  }
  return 0;
}
