Ever since we reached Patchwerk in July I've been playing around with numbers for sustained dps a lot. To this end I ended up writing a perl script at work to calculate a Frost mage's dps. It handles all the relevant dps talents (though if you use Arcane Instability you need to add it via modifiers), and I even have it working with Winter's Chill. To handle WC it essentially takes the timing of the frostbolts, checks if each bolt applies the debuff via a simple rand roll and then refreshes if necessary. It has helped me evaluate potential gear upgrades (What to prioritize, etc) so I figured it might be useful to someone here. I'm currently writing a similar thing for fire but ignite handling is a bit tricky, I'm likely going to need to thread it and allow for multiple mage calculations for that one to be fun. It becomes even more complicated if you decide that a fire mage will begin scorching to preserve mana at a particular amount or to try to keep an ignite going as some do, so I've been slow on finishing that one up.
Anyhow, a usage example:
Assuming +567 dmg, 10% crit, 7% hit, 3 points in elemental precision, 3 points in winter's chill, mob level 63, 3 points in piercing ice
baksu:~ chris$ ./frostbolt -c10 -d567 -e3 -h7 -l3 -n100000 -p3 -w3
Damage Range: 1035.302 - 1077.702
-- Results over 100000 bolts --
Total DPS: 486
Total +hit: 13
Chance to hit a +3 mob: 96%
Resists: 3880
Crits: 19740
There may be a few minor discrepancies in my max values for +hit or such, but when I run the numbers and then look at my dps on Patchwerk it's almost identical so I'm mostly pleased*.
It can be grabbed at
http://www.nullcode.org/~chris/wow/frostbolt if you want to play with it. If that link isn't working try
http://www.nullcode.org/~chris/wow/frostbolt.zip .
*CoE and such I'm adding by hand, there is also an acceptable margin of error