#include <bits/stdc++.h>
using namespace std;
double cross(complex<double> a, complex<double> b) {
  return real(a) * imag(b) - imag(a) * real(b);
}
double distance_l_p(complex<double> a, complex<double> b, complex<double> c) {
  return abs(cross(b - a, c - a)) / abs(b - a);
}
complex<double> intersection_l(complex<double> a1, complex<double> a2,
                               complex<double> b1, complex<double> b2) {
  complex<double> a = a2 - a1;
  complex<double> b = b2 - b1;
  return a1 + a * cross(b, b1 - a1) / cross(b, a);
}
int main() {
  double y1, y2, yw, xb, yb, r;
  scanf("%lf%lf%lf%lf%lf%lf", &y1, &y2, &yw, &xb, &yb, &r);
  yw -= r;
  double yt = y1 + r;
  double yt2 = 2.0 * yw - yt;
  complex<double> from(xb, yb);
  complex<double> to(0.0, yt2);
  complex<double> w = intersection_l(from, to, complex<double>(0.0, yw),
                                     complex<double>(1.0, yw));
  complex<double> pc(0.0, 2.0 * yw - y2);
  if (distance_l_p(from, to, pc) < r + 1e-8) {
    puts("-1");
    return 0;
  }
  printf("%.13f\n", real(w));
}
