#include <bits/stdc++.h>
using namespace std;
int y1_, y2_, yw, xb, yb, rad;
double func(double pos) {
  double y = 2 * (yw - rad) - xb * 1.0 * ((yw - rad) - yb) / (xb - pos) - yb;
  return y;
}
double f(double x, double y, double pos) {
  double l = func(pos);
  double res = (x * (l - (yw - rad)) + y * pos - pos * (l - (yw - rad)) -
                (yw - rad) * pos) /
               sqrt((l - (yw - rad)) * (l - (yw - rad)) + pos * pos);
  return res;
}
double solve(int y, bool fl) {
  double l = 0, r = xb;
  double mid = 0;
  while (r - l > 0.0000001) {
    mid = l + (r - l) / 2;
    if (fl) {
      if (f(0, y, mid) >= rad)
        r = mid;
      else
        l = mid + 0.0000001;
    } else {
      if ((func(mid) - y1_) <= rad)
        r = mid;
      else
        l = mid + 0.0000001;
    }
  }
  mid = l + (r - l) / 2;
  return mid;
}
int main() {
  cin >> y1_ >> y2_ >> yw >> xb >> yb >> rad;
  double l = solve(y1_, false), r = solve(y2_, true);
  double mid = (l + r) / 2;
  cout.precision(23);
  if ((y1_ + rad) <= func(mid) && func(mid) <= (y2_) && f(0, y2_, mid) >= rad)
    cout << mid;
  else
    cout << "-1";
  return 0;
}
