#include <bits/stdc++.h>
using namespace std;
template <class T>
ostream& operator<<(ostream& os, vector<T> V) {
  os << "[ ";
  for (auto v : V) os << v << " ";
  return os << "]";
}
template <class L, class R>
ostream& operator<<(ostream& os, pair<L, R> P) {
  return os << "(" << P.first << "," << P.second << ")";
}
const long long Mod = 1e9 + 7;
const long long pre = 1e10;
const double inv = pow(10, -10);
double y, y2, yw, xb, yb, r;
int check(long long xp) {
  double p = (double)xp * inv;
  double slope = (yw - r - yb) / (xb - p);
  double c = (yw - r) - slope * p;
  if (c >= y2) return 1;
  if (c <= y) return -1;
  bool a = (c >= y + r);
  bool b = (abs(y2 - c) >= r * (sqrt(1 + slope * slope)));
  if (a && b)
    return 0;
  else if (!a && !b)
    return -1;
  else if (!a)
    return -1;
  else
    return 1;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> y >> y2 >> yw >> xb >> yb >> r;
  long long left = 0, right = xb * pre - 1, mid;
  while (left <= right) {
    mid = (left + right) / 2;
    int t = check(mid);
    if (t == 0) {
      printf("%0.10lf\n", (double)mid * inv);
      return 0;
    } else if (t == 1)
      left = mid + 1;
    else if (t == -1)
      right = mid - 1;
    else {
      cout << -1 << endl;
      return 0;
    }
  }
  cout << -1 << endl;
  return 0;
}
