The Race Expectations Calculator is based on work done by British distance coach Frank Horwill and Peter Riegel and also Dave Cameron **read more...**

Frank Horwill rule is using his 4 second rule for males and 5 second rule for females. Frank observed that most runners' paces per every 400 meters will increase by about four or five seconds as they move up from one "classic" race distance to the next. Coming from track the distances are 400m, 800m, 1500m, 3000m, 5000m and 10000m then going to road the Half Marathon then Marathon.

Based on your finishing time for any race distance from the quarter mile to the marathon, you can figure out approximate 400-meter times for any race in between, which helps you determine how fast you should run your speed workouts.

All levels of runners can use the Four-Second Rule, although some may have less than four seconds' difference in their 400-meter paces. Like any predictive model, the Four-Second Rule gives you only a good estimate of what your pace and performance times could be.

The calculation below has been implemented as

Predicted time = (400 time * log 2 ( (total distance / 400 ) * factor ) ) * distance / 400

In English your predicted time per 400m increases by 4 seconds as the distance doubles.

Peter Riegel did another formula for predicting race time. The formula is really simple as it essentially states that roughly speaking, a person's speed declines by around 6% when the distance doubles.

Peter Riegel's formula is: t2 = t1 * (d2 / d1)^1.06.

Peters work is relevent to all our sports

Dave Cameron also did a Model: This model is based on the top 10 times in the world at each distance, using them to compute comparable
performances across distances. The speed vs. distance model works well for post-1945 records at 800m through 10k. From 1964 onward it also
works well for the marathon. The calculations are as follows with new_time and old_time being in seconds and new_dist and old_dist being in meters:

a = 13.49681 - (0.000030363 * old_dist) + (835.7114 / (old_dist^0.7905))
b = 13.49681 - (0.000030363 * new_dist) + (835.7114 / (new_dist^0.7905))
new_time = (old_time / old_dist) * (a / b) * new_dist

Dave Cameron's work is here http://www.cs.uml.edu/~phoffman/cammod.html