20041125, 12:43  #1 
May 2004
Oslo, Norway
2^{3}×3×5 Posts 
Number of P90 years per exponent
What is the algorithm used by the reports for determining the number of P90 years per exponent?
I guess there must be some documentation on this somewhere, but so far I've been unable to find it. regards, Leif. 
20041125, 14:18  #2 
"Tony Gott"
Aug 2002
Yell, Shetland, UK
514_{8} Posts 
Not sure on the maths but you can find P90 value at Rob's Page

20041125, 22:34  #3 
"Mark"
Feb 2003
Sydney
1000111101_{2} Posts 
Try this thread. The GIMPS status page has the speeds that are assumed for each fft size.

20041128, 09:31  #4  
May 2004
Oslo, Norway
2^{3}×3×5 Posts 
Quote:
I've found a similar algorithm simply by viewing the source of the GIMPS Benchmark page. I thought that there maybe existed a more elegant formula, but this is probably the real thing after all regards, Leif. 

20041128, 12:10  #5 
May 2004
Oslo, Norway
78_{16} Posts 
FWIW, here's a full, working, Python implementation of robreid's code:
Code:
def calc_p90(exp): """ calculate P90 value for LL and DC, input is exponent, output is P90 cpu yrs. By robreid, his explanation is as follows (from http://www.mersenneforum.org/showthread.php?t=2731): The exponent ranges are based on the table on the Mersenne Status page (http://www.mersenne.org/status.htm) The multiplier for each range is comes from the PII400 Speed column on the same table. So its : Exponent (same as the number of iterations needed to complete the LL) multiplied by the number of PII400 seconds to complete an iteration at the fft size of the exponent multiplied by 5.5 (to convert to P90 seconds) divided by 31536000 (to convert to P90 years) Converted to Python by leifbk 2004""" exp_p90 = 0.0 if (exp <= 4598000): exp_p90 = exp * 0.119 elif (exp >= 4598001 and exp <= 5255000): exp_p90 = exp * 0.132 elif (exp >= 5255001 and exp <= 6520000): exp_p90 = exp * 0.173 elif (exp >= 6520001 and exp <= 7760000): exp_p90 = exp * 0.211 elif (exp >= 7760001 and exp <= 9040000): exp_p90 = exp * 0.252 elif (exp >= 9040001 and exp <= 10330000): exp_p90 = exp * 0.281 elif (exp >= 10330001 and exp <= 12830000): exp_p90 = exp * 0.372 elif (exp >= 12830001 and exp <= 15300000): exp_p90 = exp * 0.453 elif (exp >= 15300001 and exp <= 17850000): exp_p90 = exp * 0.536 elif (exp >= 17850001 and exp <= 20400000): exp_p90 = exp * 0.6 elif (exp >= 20400001 and exp <= 25350000): exp_p90 = exp * 0.776 elif (exp >= 25350001 and exp <= 30150000): exp_p90 = exp * 0.934 elif (exp >= 30150001 and exp <= 35100000): exp_p90 = exp * 1.113 elif (exp >= 35100001 and exp <= 40250000): exp_p90 = exp * 1.226 elif (exp >= 40250001 and exp <= 50000000): exp_p90 = exp * 1.64 elif (exp >= 50000001 and exp <= 59400000): exp_p90 = exp * 1.99 elif (exp >= 59400001 and exp <= 69100000): exp_p90 = exp * 2.38 elif (exp >= 69100001 and exp <= 79300000): exp_p90 = exp * 2.604 exp_p90 = exp_p90 * 5.5 / 31536000 return exp_p90 if __name__ == '__main__': from sys import argv res = calc_p90(int(argv[1])) print '%3.3f' % res I hope that this might be useful to someone regards, Leif. 
20041129, 10:50  #6 
May 2004
Oslo, Norway
2^{3}·3·5 Posts 
Here's a shorter and cleaner version:
Code:
#! /usr/bin/env python def calc_p90(exp): """ calculate P90 value for LL and DC, input is exponent, output is P90 cpu years. see http://www.mersenneforum.org/showthread.php?t=2731 for an explanation.""" exp_p90 = 0.0 if exp < 4598000: exp_p90 = exp * 0.6545 if exp > 4598000: exp_p90 = exp * 0.726 if exp > 5255000: exp_p90 = exp * 0.9515 if exp > 6520000: exp_p90 = exp * 1.1605 if exp > 7760000: exp_p90 = exp * 1.386 if exp > 9040000: exp_p90 = exp * 1.5455 if exp > 10330000: exp_p90 = exp * 2.046 if exp > 12830000: exp_p90 = exp * 2.4915 if exp > 15300000: exp_p90 = exp * 2.948 if exp > 17850000: exp_p90 = exp * 3.3 if exp > 20400000: exp_p90 = exp * 4.268 if exp > 25350000: exp_p90 = exp * 5.137 if exp > 30150000: exp_p90 = exp * 6.1215 if exp > 35100000: exp_p90 = exp * 6.743 if exp > 40250000: exp_p90 = exp * 9.02 if exp > 50000000: exp_p90 = exp * 10.945 if exp > 59400000: exp_p90 = exp * 13.09 if exp > 69100000: exp_p90 = exp * 14.322 return exp_p90 / 31536000 if __name__ == '__main__': from sys import argv print '%3.3f' % calc_p90(int(argv[1])) Maybe this thread should have been placed in the Programming section, but as I feel that a lot of newbies wonder about this kind of stuff, I felt that this was the right place. regards, Leif. 
Thread Tools  
Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Test a Specific Exponent in Prime95. When it is 100% done, does it mean I find a new prime number?  king  Information & Answers  5  20180221 18:15 
http://www.mersenne.ca/exponent/72977  'That is a weird number'  Syntony  mersenne.ca  3  20170127 18:53 
PSP: 10 years old!  Citrix  Prime Sierpinski Project  1  20131108 07:35 
Six years ago today…  Xyzzy  Forum Feedback  4  20080816 16:55 
P90 CPU Years and PrimeNet  S485122  PrimeNet  9  20061027 06:52 