@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.