mersenneforum.org Number of P90 years per exponent
 Register FAQ Search Today's Posts Mark Forums Read

 2004-11-25, 12:43 #1 leifbk     May 2004 Oslo, Norway 1708 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.
 2004-11-25, 14:18 #2 bayanne     "Tony Gott" Aug 2002 Yell, Shetland, UK 14116 Posts Not sure on the maths but you can find P90 value at Rob's Page
 2004-11-25, 22:34 #3 markr     "Mark" Feb 2003 Sydney 3×191 Posts Try this thread. The GIMPS status page has the speeds that are assumed for each fft size.
2004-11-28, 09:31   #4
leifbk

May 2004
Oslo, Norway

23·3·5 Posts

Quote:
 Originally Posted by markr Try this thread. The GIMPS status page has the speeds that are assumed for each fft size.
Thank you, that was an interesting thread.

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.

 2004-11-28, 12:10 #5 leifbk     May 2004 Oslo, Norway 23×3×5 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 PII-400 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 PII-400 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 Save this as eg. p90.py, and run with exponent as command-line argument. I hope that this might be useful to someone regards, Leif.
 2004-11-29, 10:50 #6 leifbk     May 2004 Oslo, Norway 23×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])) I've simplified the expressions, and multiplied out each constant factor with 5.5. 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.

 Similar Threads Thread Thread Starter Forum Replies Last Post king Information & Answers 5 2018-02-21 18:15 Syntony mersenne.ca 3 2017-01-27 18:53 Citrix Prime Sierpinski Project 1 2013-11-08 07:35 Xyzzy Forum Feedback 4 2008-08-16 16:55 S485122 PrimeNet 9 2006-10-27 06:52

All times are UTC. The time now is 12:42.

Sat Apr 17 12:42:10 UTC 2021 up 9 days, 7:23, 0 users, load averages: 2.65, 2.24, 2.14