Advertisement
Blzut3

ACS ELO Calculator

Aug 25th, 2014
532
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.92 KB | None | 0 0
  1. #library "ELO"
  2.  
  3. // 10^(3732/400) == 0x7F6EB669
  4. // 10^(3251/400) == 0x07FE8A09
  5. #define MAXELO 3251
  6.  
  7. // 5.27 fixed point
  8. int powFracTable[400] = {
  9.     0x08000000,0x080BD2BF,0x0817B6F8,0x0823ACC3,0x082FB43C,0x083BCD7C,0x0847F89D,0x085435BA,0x086084EE,0x086CE653,
  10.     0x08795A04,0x0885E01C,0x089278B6,0x089F23EE,0x08ABE1DF,0x08B8B2A5,0x08C5965C,0x08D28D1F,0x08DF970B,0x08ECB43C,
  11.     0x08F9E4CF,0x090728E0,0x0914808C,0x0921EBF1,0x092F6B2A,0x093CFE56,0x094AA592,0x095860FB,0x096630B0,0x097414CE,
  12.     0x09820D74,0x09901AC0,0x099E3CD0,0x09AC73C4,0x09BABFB9,0x09C920D0,0x09D79727,0x09E622DD,0x09F4C413,0x0A037AE8,
  13.     0x0A12477C,0x0A2129EF,0x0A302262,0x0A3F30F4,0x0A4E55C7,0x0A5D90FC,0x0A6CE2B4,0x0A7C4B0F,0x0A8BCA30,0x0A9B6038,
  14.     0x0AAB0D48,0x0ABAD184,0x0ACAAD0D,0x0ADAA005,0x0AEAAA90,0x0AFACCCF,0x0B0B06E7,0x0B1B58FA,0x0B2BC32C,0x0B3C45A1,
  15.     0x0B4CE07B,0x0B5D93E0,0x0B6E5FF4,0x0B7F44DB,0x0B9042B9,0x0BA159B5,0x0BB289F2,0x0BC3D396,0x0BD536C7,0x0BE6B3AA,
  16.     0x0BF84A66,0x0C09FB20,0x0C1BC5FF,0x0C2DAB2A,0x0C3FAAC8,0x0C51C4FF,0x0C63F9F7,0x0C7649D8,0x0C88B4C8,0x0C9B3AF1,
  17.     0x0CADDC7B,0x0CC0998D,0x0CD37251,0x0CE666F0,0x0CF97792,0x0D0CA461,0x0D1FED87,0x0D33532E,0x0D46D580,0x0D5A74A6,
  18.     0x0D6E30CD,0x0D820A1D,0x0D9600C4,0x0DAA14EC,0x0DBE46C0,0x0DD2966D,0x0DE7041E,0x0DFB9001,0x0E103A41,0x0E25030C,
  19.     0x0E39EA8E,0x0E4EF0F5,0x0E64166F,0x0E795B29,0x0E8EBF52,0x0EA44319,0x0EB9E6AB,0x0ECFAA39,0x0EE58DF0,0x0EFB9202,
  20.     0x0F11B69D,0x0F27FBF1,0x0F3E6230,0x0F54E989,0x0F6B922E,0x0F825C50,0x0F994820,0x0FB055D0,0x0FC78592,0x0FDED798,
  21.     0x0FF64C16,0x100DE33E,0x10259D43,0x103D7A59,0x10557AB4,0x106D9E87,0x1085E607,0x109E516A,0x10B6E0E3,0x10CF94A9,
  22.     0x10E86CF1,0x110169F0,0x111A8BDE,0x1133D2F0,0x114D3F5E,0x1166D15F,0x1180892A,0x119A66F7,0x11B46AFF,0x11CE957A,
  23.     0x11E8E6A0,0x12035EAC,0x121DFDD5,0x1238C457,0x1253B26B,0x126EC84C,0x128A0634,0x12A56C60,0x12C0FB09,0x12DCB26D,
  24.     0x12F892C7,0x13149C53,0x1330CF50,0x134D2BF9,0x1369B28D,0x1386634A,0x13A33E6D,0x13C04436,0x13DD74E3,0x13FAD0B4,
  25.     0x141857E9,0x14360AC2,0x1453E97F,0x1471F461,0x14902BAA,0x14AE8F9A,0x14CD2075,0x14EBDE7B,0x150AC9F1,0x1529E31A,
  26.     0x15492A38,0x15689F90,0x15884366,0x15A815FE,0x15C8179F,0x15E8488D,0x1608A90E,0x16293969,0x1649F9E5,0x166AEAC7,
  27.     0x168C0C59,0x16AD5EE2,0x16CEE2AA,0x16F097FA,0x17127F1B,0x17349858,0x1756E3F9,0x1779624A,0x179C1395,0x17BEF826,
  28.     0x17E21048,0x18055C48,0x1828DC72,0x184C9114,0x18707A7B,0x189498F4,0x18B8ECCF,0x18DD765B,0x190235E6,0x19272BC0,
  29.     0x194C583A,0x1971BBA5,0x19975651,0x19BD2891,0x19E332B6,0x1A097513,0x1A2FEFFB,0x1A56A3C2,0x1A7D90BB,0x1AA4B73C,
  30.     0x1ACC179A,0x1AF3B229,0x1B1B873F,0x1B439734,0x1B6BE25F,0x1B946916,0x1BBD2BB2,0x1BE62A8C,0x1C0F65FC,0x1C38DE5B,
  31.     0x1C629405,0x1C8C8753,0x1CB6B8A1,0x1CE1284B,0x1D0BD6AB,0x1D36C420,0x1D61F107,0x1D8D5DBC,0x1DB90A9F,0x1DE4F80E,
  32.     0x1E112669,0x1E3D960F,0x1E6A4761,0x1E973AC1,0x1EC4708F,0x1EF1E92F,0x1F1FA502,0x1F4DA46C,0x1F7BE7D1,0x1FAA6F96,
  33.     0x1FD93C1F,0x20084DD2,0x2037A515,0x20674250,0x209725E9,0x20C75048,0x20F7C1D7,0x21287AFE,0x21597C27,0x218AC5BC,
  34.     0x21BC5829,0x21EE33DA,0x2220593A,0x2252C8B6,0x228582BC,0x22B887BB,0x22EBD820,0x231F745B,0x23535CDD,0x23879217,
  35.     0x23BC1478,0x23F0E474,0x2426027E,0x245B6F08,0x24912A87,0x24C7356F,0x24FD9035,0x25343B50,0x256B3737,0x25A28461,
  36.     0x25DA2345,0x2612145E,0x264A5823,0x2682EF10,0x26BBD99F,0x26F5184C,0x272EAB93,0x276893F2,0x27A2D1E5,0x27DD65EC,
  37.     0x28185086,0x28539232,0x288F2B71,0x28CB1CC6,0x290766B1,0x294409B6,0x29810659,0x29BE5D1D,0x29FC0E89,0x2A3A1B22,
  38.     0x2A78836F,0x2AB747F7,0x2AF66943,0x2B35E7DC,0x2B75C44C,0x2BB5FF1D,0x2BF698DB,0x2C379212,0x2C78EB4F,0x2CBAA521,
  39.     0x2CFCC016,0x2D3F3CBD,0x2D821BA7,0x2DC55D65,0x2E090289,0x2E4D0BA7,0x2E917951,0x2ED64C1D,0x2F1B849F,0x2F61236F,
  40.     0x2FA72923,0x2FED9654,0x30346B9A,0x307BA98F,0x30C350CE,0x310B61F3,0x3153DD9A,0x319CC460,0x31E616E4,0x322FD5C6,
  41.     0x327A01A4,0x32C49B20,0x330FA2DD,0x335B197D,0x33A6FFA4,0x33F355F7,0x34401D1C,0x348D55B9,0x34DB0076,0x35291DFC,
  42.     0x3577AEF5,0x35C6B40A,0x36162DE8,0x36661D3C,0x36B682B2,0x37075EFA,0x3758B2C2,0x37AA7EBD,0x37FCC39A,0x384F820E,
  43.     0x38A2BACB,0x38F66E86,0x394A9DF6,0x399F49D1,0x39F472CE,0x3A4A19A7,0x3AA03F16,0x3AF6E3D6,0x3B4E08A3,0x3BA5AE3A,
  44.     0x3BFDD55A,0x3C567EC1,0x3CAFAB32,0x3D095B6C,0x3D639034,0x3DBE4A4D,0x3E198A7B,0x3E755186,0x3ED1A034,0x3F2E774E,
  45.     0x3F8BD79D,0x3FE9C1ED,0x40483709,0x40A737BE,0x4106C4DB,0x4166DF2F,0x41C7878B,0x4228BEC1,0x428A85A3,0x42ECDD07,
  46.     0x434FC5C2,0x43B340AA,0x44174E99,0x447BF065,0x44E126EC,0x4546F308,0x45AD5596,0x46144F74,0x467BE183,0x46E40CA4,
  47.     0x474CD1B7,0x47B631A2,0x48202D49,0x488AC591,0x48F5FB63,0x4961CFA7,0x49CE4348,0x4A3B5731,0x4AA90C4E,0x4B17638F,
  48.     0x4B865DE3,0x4BF5FC3A,0x4C663F87,0x4CD728BE,0x4D48B8D5,0x4DBAF0C1,0x4E2DD17B,0x4EA15BFC,0x4F15913F,0x4F8A7241
  49. };
  50.  
  51. int powIntTable[10] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
  52.  
  53. function int elo(int ra, int rb, int k, int w)
  54. {
  55.     int qa = FixedMul(powIntTable[ra/400], powFracTable[ra%400]>>7);
  56.     int qb = FixedMul(powIntTable[rb/400], powFracTable[rb%400]>>7);
  57.     int e = FixedDiv(qa, qa + qb);
  58.     return ra + ((k*((w<<16) - e))>>16);
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement