#include <bits/stdc++.h>
using namespace std;
struct Point {
  long double x, y;
  Point(long double _x = 0, long double _y = 0) {
    x = _x;
    y = _y;
  }
  Point operator-(const Point& b) { return Point(x - b.x, y - b.y); }
  Point operator+(const Point& b) { return Point(x + b.x, y + b.y); }
  Point operator*(const long double v) { return Point(x * v, y * v); }
  long double operator*(const Point& b) { return x * b.y - y * b.x; }
  long double operator^(const Point& b) { return x * b.x + y * b.y; }
  bool operator<(const Point& b) const {
    return x < b.x || (x == b.x && y < b.y);
  }
  long double dis() { return sqrt(x * x + y * y); }
};
int main() {
  int i, j, k, n;
  int y1, y2, yw;
  scanf("%d%d%d", &y1, &y2, &yw);
  int xb, yb, r;
  scanf("%d%d%d", &xb, &yb, &r);
  y1 = (yw - r) * 2 - y1;
  y2 = (yw - r) * 2 - y2;
  long double mm;
  mm = y1 - r - 1e-9;
  Point A(-xb, y2 - yb);
  Point B(-xb, mm - yb);
  long double res = xb - 1. * (yw - r - yb) * xb / (mm - yb);
  if (fabs(A * B) / B.dis() + 1e-8 < r || mm < yw - r)
    puts("-1");
  else {
    printf("%.15lf\n", (double)res);
  }
  return 0;
}
