@aedt - with that C program I posted and just changing the numbers, I see no
change in behavior at all:
N fib(N) log_2(Fib(N)) WallTime UsrCPU log_1.618(Tm)
57 365435256832 38.410825 88.338572 88.29 9.31268150798
56 225851408384 37.716583 54.570624 54.54 8.31166257771
55 139583848448 37.022341 33.718429 33.7 7.31112152655
54 86267559936 36.328100 20.863663 20.85 6.31352254278
53 53316284416 35.633857 12.885360 12.87 5.31201286047
52 32951275520 34.939615 7.9617497 7.95 4.31148872869
51 20365008896 34.245373 4.9201932 4.91 3.31125979281
50 12586267648 33.551131 3.0422103 3.04 2.31214787174
49 7778741248 32.856890 1.8785994 1.87 1.31034617400
48 4807526400 32.162648 1.1626232 1.16 0.31313742467
47 2971214848 31.468406 0.7182663 0.71 -0.68769978950
46 1836311680 30.774164 0.4441032 0.44 -1.68685323404
45 1134903040 30.079922 0.275319635 0.27 -2.68048037749
Indeed the fit is basically a perfect straight line: log_1.618(time) = N -
47.67. The integer is only passed around as an argument. The arithmetic is all
float32 (or maybe float64 depending on impl). So, to me this is as should be
expected. I believe that is the case in all your benchmark versions, too. Not
sure what is going on for you.