====== Chess - Programming - Rating - Conversions ======
The formulae to convert from one rating system to another have changed over the years in an attempt to make them more accurate.
The below formulae are mine, sometimes following official specs but occasionally altering slightly when deemed more accurate.
----
===== ecf to elo =====
return unsigned((ecf * 7.5) + 700);
----
===== elo to ecf =====
return unsigned((elo - 700) / 7.5);
----
===== elo to uscf =====
if (elo <= 1886)
return unsigned(elo/0.75) - 570;
else
if (elo <= 2000)
return 180 + unsigned(0.94 * elo);
else
return 20 + unsigned(1.02 * elo);
----
===== elo to uscf (for Juniors) =====
If an event is known to be a youth event, such as the World Youth Championships, then the following conversion is used for all opponents:
if (elo <= 2000)
return 560 + unsigned(0.74 * elo);
else
return 80 + unsigned(1.0 * elo);
----
===== uscf to elo =====
if (uscf > 2060)
return unsigned((uscf - 180) / 0.94);
else
if (uscf > 1945)
return unsigned((uscf - 20) / 1.02);
else
return unsigned(0.75 * 570) + uscf;
----