already That gives the worst case complexity right at the top.
> 2^16
[1] 65536
> n<-2^32
> exp(((64/9)^(1/3)+1)(log(n)^(1/3))(log(log(n))^(2/3)))
[1] 38178499
> 38178499/65536
[1] 582 2^16 -> 2^32 ~ x 2^9
> n<-2^64
> exp(((64/9)^(1/3)+1)(log(n)^(1/3))(log(log(n))^(2/3)))
[1] 84794674511
> 84794674511/38178499
[1] 2221
2^32-> 2^64 ~ x 2^11
> n<-2^128
> exp(((64/9)^(1/3)+1)(log(n)^(1/3))(log(log(n))^(2/3)))
[1] 2.507616e+15
> 2.507616e+15/84794674511
[1] 29572
2^64 -> 2^128 ~ x 2^15
So in GNFS 2^32 -> 2^64 complexity doesn't increase 4294967296 times, worst case it increases 2221 times
_In practice_ the cost grows closer to (nbits)^2 mostly because as an "embarrassingly parallel" algorithm you get significant benefits from cached results (quickly discard entire number fields that were previously calculated).
if O(x) = 8 then O(x)^2 = 8^2
I did miss a x2 earlier because e.g. 128 bits is 128^2 (16384 rather than 29572) harder than 64 bits, not 64^2
So its (2xO(x))^2 = (2 x 8)^2 = $256