JSFiddle - React, Tailwind, and code Playground

by mizarjp

HTML

<pre id="out"></pre>

JavaScript

function di(r0, s0, a, b)
{
	var sumk, suml, f, k, r, s, l1, l2, p1, p2;
  sumk = 1;
  if (!(r0 >= 0) || !(s0 >= 0) || !(a >= 0) || !(b >= 0) || !(a > 0) && !(b > 0))
  	return {"p1": Number.NaN, "p2": Number.NaN, "p": Number.NaN };
  if (!(a > 0))
  	return {"p1": 1, "p2": 0, "p": 1};
  if (!(b > 0))
  	return {"p1": 0, "p2": 1, "p": 1};
  suml = 1; f = a / b; k = 1; r = r0; s = s0;
  while ((k *= f * s-- / ++r) != 0)
  {
    sumk += k;
    //if (k <= 1)
    	suml += k;
  }
  l1 = suml;
  suml = 0; f = b / a; k = 1; r = s0; s = r0;
  while ((k *= f * s-- / ++r) != 0)
  {
    sumk += k;
    //if (k <= 1)
    	suml += k;
  }
  l2 = suml;
  p1 = l1 / sumk;
  p2 = l2 / sumk;
  return {"p1": p1, "p2": p2, "p": (p1 + p2)};
}
function outpre(o)
{
	document.getElementById("out").innerText += "\n" + JSON.stringify(o);
}
outpre(di(3, 1, 2, 3));
outpre(di(3, 1, 2000, 3));
outpre(di(3, 1, 2, 3000));