#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
int a, b, c, d, i, j, n, m, k;
inline void die(long double first) {
  printf("%.15lf\n", (double)first);
  exit(0);
}
long double check(long double y1, long double y2, long double yw,
                  long double xb, long double yb, long double r,
                  long double xx) {
  long double h = yw - r - yb;
  double a = xx, b = xb - xx;
  return yw - r - h / b * a;
}
struct line {
  long double a, b, c;
  line() : a(0), b(0), c(0) {}
  line(pair<long double, long double> t1, pair<long double, long double> t2) {
    a = t2.second - t1.second;
    b = t1.first - t2.first;
    c = -a * t1.first - b * t1.second;
    long double s = sqrt(a * a + b * b);
    a /= s;
    b /= s;
    c /= s;
  }
  inline long double dist(pair<long double, long double> t) {
    return abs(a * t.first + b * t.second + c);
  }
};
int main() {
  long double y1, y2, yw, xb, yb, r;
  cin >> y1 >> y2 >> yw >> xb >> yb >> r;
  if (y1 > y2) swap(y1, y2);
  long double bottom = y1 + r;
  long double top = min(y2 - r, yw - r);
  if (bottom > top + 1e-9) {
    printf("-1\n");
    exit(0);
  }
  long double low = 0.0, high = xb;
  for (int _n((300)), hod(1); hod <= _n; hod++) {
    long double xx = (low + high) / 2;
    long double ff = check(y1, y2, yw, xb, yb, r, xx);
    line l(make_pair(xx, yw - r), make_pair(0, ff));
    if (ff + 1e-9 > bottom && l.dist(make_pair(0, y2)) + 1e-9 > r &&
        ff < top + 1e-9) {
      die(xx);
    }
    if (ff < bottom)
      high = xx;
    else
      low = xx;
  }
  printf("-1\n");
}
