#include <bits/stdc++.h>
using namespace std;
double cp(const complex<double> &a, const complex<double> &b) {
  return a.real() * b.imag() - b.real() * a.imag();
}
inline complex<double> line_inter(const complex<double> &a,
                                  const complex<double> &b,
                                  const complex<double> &c,
                                  const complex<double> &d) {
  return a + cp(c - a, d - c) / cp(b - a, d - c) * (b - a);
}
inline double lp_dist(const complex<double> &a, const complex<double> &b,
                      const complex<double> &p) {
  return cp(b - a, p - a) / abs(b - a);
}
int main() {
  int y1, y2, yw, xb, yb, r;
  cin >> y1 >> y2 >> yw >> xb >> yb >> r;
  yw -= r;
  y1 += r;
  y2 -= r;
  if (y1 == y2)
    cout << -1 << endl;
  else {
    double cc = yw + (yw - (y1 + 0.00001));
    complex<double> a(0, cc), b(xb, yb), c(0, yw), d(xb, yw);
    complex<double> e(0, yw + yw - (y2 + r));
    if (lp_dist(b, a, e) <= r)
      cout << -1 << endl;
    else {
      complex<double> s = line_inter(a, b, c, d);
      cout << fixed << setprecision(12) << s.real() << endl;
    }
  }
  return 0;
}
