| function ops(n) { return Math.exp (((64/9) * (1/3) + 1) * (Math.log(n) * (1/3)) * (Math.log(Math.log(n)) * (2/3))) } > ops(2*16) 121106.42245436447 > ops(2*32) 38178499.24944067 > ops(2*32) / ops(2*16) 315.24751929508244 So if ops(2*16) costs $8, then ops(2*32) costs $8 * ops(2*32) / ops(2*16) = $2521.98. Far more than $8^2. The cost reaches the millions for 64 bits, and ~$165 trillion for 128 bits: > 8 * ops(2*64) / ops(2*16) 5601332.962726709 (far more than $8^2^2) > 8 * ops(2*128) / ops(2*16) 165647073370.16437 (far more than $8^2^2^2) Note that this is increasing faster than the number of bits squared: > ops(2*32) / 32 * 2 37283.690673281904 > ops(2*64) / 64 * 2 20701824.831895076 > ops(2*128) / 128 * 2 153052707259.34015 As the wiki page says, it's super-polynomial in the number of bits. If you still disagree with all of this, can you explain what's wrong with this method of calculating the worst-case cost of factoring the number n? Cost(n) = ops(n) * Cost(2^16) / ops(2^16) Or what you don't understand about this way of calculating it? |