It looks like the calculation uses round() for levels above 126, ceil() for other levels, and then level 2 should be 1000 xp, not 1004. I've updated the script below. --Widgeon 00:04, 23 February 2009 (CST)
For what it's worth, here's the python script I used to generate the table:
#!/usr/bin/python import math import locale def total_level_xp(level): if (level < 2): return 0; if (level == 2): return 1000; if (level <= 126): return int(math.ceil( ((level + 5) ** 5 - (6 ** 5)) / 9.)) return int(round( ((level + 5) ** 5 - (6 ** 5)) / 9.)) def next_level_xp(level): return total_level_xp(level) - total_level_xp(level - 1) locale.setlocale(locale.LC_ALL, "") for level in range(1,276): next_xp = next_level_xp(level) total_xp = total_level_xp(level) print "| %d || %s || %s" % (level, locale.format("%.*d", (1, next_xp), True), locale.format("%.*d", (1, total_xp), True)) print "|-"
--Widgeon 22:35, 7 July 2008 (CDT)