static double ratioToProbability(double ratio) {
  if (ratio < 0) fail("No negative values allowed");
  if (ratio > 1) ratio = 1/ratio;
  ret ratio;
}

static double ratioToProbability(double a, double b) {
  if (a < 0 || b < 0) fail("No negative values allowed");
  ret b == 0 ? (a == 0 ? 1 : 0) : ratioToProbability(a/b);
}