#include <bits/stdc++.h>
using namespace std;
int binary(int a[], int l, int r, int find) {
  if (l > r) {
    return -1;
  } else {
    int mid = (l + r) / 2;
    if (a[mid] == find) {
      return mid + 1;
    } else if (a[mid] > find) {
      binary(a, l, mid - 1, find);
    } else {
      binary(a, mid + 1, r, find);
    }
  }
}
void merge(int a[], int l, int mid, int r, int n) {
  int ls = l, le = mid, rs = mid + 1, re = r;
  int b[n], i = l;
  while (ls <= le || rs <= re) {
    if (ls > le) {
      b[i] = a[rs];
      i++;
      rs++;
    } else if (rs > re) {
      b[i] = a[ls];
      i++;
      ls++;
    } else if (a[ls] >= a[rs]) {
      b[i] = a[rs];
      i++;
      rs++;
    } else {
      b[i] = a[ls];
      i++;
      ls++;
    }
  }
  for (int x = l; x <= r; x++) {
    a[x] = b[x];
  }
}
void sort(int a[], int l, int r, int n) {
  if (l >= r) {
    return;
  } else {
    int mid = (l + r) / 2;
    sort(a, l, mid, n);
    sort(a, mid + 1, r, n);
    merge(a, l, mid, r, n);
  }
}
int main(void) {
  long long int h, l;
  cin >> h >> l;
  long long int x = l * l - h * h;
  long long int y = 2 * h;
  long long int d = x / y;
  for (int i = 0; i <= 15; i++) {
    cout << d;
    x = x - (y * d);
    if (x == 0) break;
    x = x * 10;
    d = x / y;
    if (i == 0) cout << ".";
  }
  cout << "\n";
}
