#include <bits/stdc++.h>
double A[1005][1005];
void guass(int n) {
  int i, j;
  for (i = 0; i < n - 1; i++) {
    double f = A[i + 1][i] / A[i][i];
    for (j = i; j < n; j++) {
      if (j > i + 2) break;
      A[i + 1][j] -= f * A[i][j];
    }
    A[i + 1][n] -= f * A[i][n];
  }
  for (i = n - 1; i >= 0; i--) {
    if (i + 1 < n) A[i][n] -= A[i + 1][n] * A[i][i + 1];
    A[i][n] /= A[i][i];
  }
}
int main() {
  int n, m, x, y, cnt;
  while (~scanf("%d%d%d%d", &n, &m, &x, &y)) {
    for (; x < n; x++) {
      for (int i = 1; i <= m; i++) {
        cnt = 2 + (i > 1) + (i < m);
        A[i - 1][i - 1] = ((double)(cnt - 1)) / cnt;
        if (i > 1) A[i - 1][i - 2] = (-1.0) / cnt;
        if (i < m) A[i - 1][i] = (-1.0) / cnt;
        A[i - 1][m] = A[i - 1][m] / cnt + 1;
      }
      guass(m);
    }
    printf("%.10f\n", A[y - 1][m]);
  }
  return 0;
}
