fork download
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. #define PRIu64 "llu"
  5.  
  6. uint64_t fibonacci(unsigned int n) {
  7.  
  8. switch (n) {
  9. case 0:
  10. return 0;
  11. case 1:
  12. return 1;
  13. default: {
  14. uint64_t u_l = 0;
  15. uint64_t u_r = 1;
  16. uint64_t u_y;
  17.  
  18. for (unsigned int i = 1; i < n; ++i) {
  19. u_y = u_l + u_r;
  20. u_l = u_r;
  21. u_r = u_y;
  22. }
  23. return u_y;
  24. }
  25. }
  26. }
  27.  
  28. int main() {
  29.  
  30. const long double r_r5 = sqrtl((long double)5.0);
  31. const long double r_phi = ((long double)1.0 + r_r5) / (long double)2.0;
  32. long double r_fibonacci;
  33. uint64_t u_fibonacci;
  34.  
  35. for (unsigned int i = 0; i < 94; ++i) {
  36.  
  37. r_fibonacci = ((powl(r_phi, (long double)i) - powl((long double)1.0 - r_phi, (long double)i)) / r_r5);
  38. u_fibonacci = truncl(r_fibonacci);
  39.  
  40. printf ("n = %d(%d) %" PRIu64 " %llf -> %" PRIu64 "\n", i, i != 0 ? (int)log10l(r_fibonacci)+1 : 1,
  41. fibonacci(i), r_fibonacci, u_fibonacci);
  42. }
  43. return 0;
  44. }
  45.  
  46.  
Success #stdin #stdout 0s 4544KB
stdin
Standard input is empty
stdout
n = 0(1) 0 0.000000 -> 0
n = 1(1) 1 1.000000 -> 1
n = 2(1) 1 1.000000 -> 1
n = 3(1) 2 2.000000 -> 2
n = 4(1) 3 3.000000 -> 3
n = 5(1) 5 5.000000 -> 5
n = 6(1) 8 8.000000 -> 8
n = 7(2) 13 13.000000 -> 13
n = 8(2) 21 21.000000 -> 21
n = 9(2) 34 34.000000 -> 34
n = 10(2) 55 55.000000 -> 55
n = 11(2) 89 89.000000 -> 89
n = 12(3) 144 144.000000 -> 144
n = 13(3) 233 233.000000 -> 233
n = 14(3) 377 377.000000 -> 377
n = 15(3) 610 610.000000 -> 610
n = 16(3) 987 987.000000 -> 987
n = 17(4) 1597 1597.000000 -> 1597
n = 18(4) 2584 2584.000000 -> 2584
n = 19(4) 4181 4181.000000 -> 4181
n = 20(4) 6765 6765.000000 -> 6765
n = 21(5) 10946 10946.000000 -> 10946
n = 22(5) 17711 17711.000000 -> 17711
n = 23(5) 28657 28657.000000 -> 28657
n = 24(5) 46368 46368.000000 -> 46368
n = 25(5) 75025 75025.000000 -> 75025
n = 26(6) 121393 121393.000000 -> 121393
n = 27(6) 196418 196418.000000 -> 196418
n = 28(6) 317811 317811.000000 -> 317811
n = 29(6) 514229 514229.000000 -> 514229
n = 30(6) 832040 832040.000000 -> 832040
n = 31(7) 1346269 1346269.000000 -> 1346269
n = 32(7) 2178309 2178309.000000 -> 2178309
n = 33(7) 3524578 3524578.000000 -> 3524578
n = 34(7) 5702887 5702887.000000 -> 5702887
n = 35(7) 9227465 9227465.000000 -> 9227465
n = 36(8) 14930352 14930352.000000 -> 14930352
n = 37(8) 24157817 24157817.000000 -> 24157817
n = 38(8) 39088169 39088169.000000 -> 39088169
n = 39(8) 63245986 63245986.000000 -> 63245986
n = 40(9) 102334155 102334155.000000 -> 102334155
n = 41(9) 165580141 165580141.000000 -> 165580141
n = 42(9) 267914296 267914296.000000 -> 267914296
n = 43(9) 433494437 433494437.000000 -> 433494437
n = 44(9) 701408733 701408733.000000 -> 701408733
n = 45(10) 1134903170 1134903170.000000 -> 1134903170
n = 46(10) 1836311903 1836311903.000000 -> 1836311903
n = 47(10) 2971215073 2971215073.000000 -> 2971215073
n = 48(10) 4807526976 4807526976.000000 -> 4807526976
n = 49(10) 7778742049 7778742049.000000 -> 7778742049
n = 50(11) 12586269025 12586269025.000000 -> 12586269025
n = 51(11) 20365011074 20365011074.000000 -> 20365011074
n = 52(11) 32951280099 32951280099.000000 -> 32951280099
n = 53(11) 53316291173 53316291173.000000 -> 53316291173
n = 54(11) 86267571272 86267571272.000000 -> 86267571272
n = 55(12) 139583862445 139583862445.000000 -> 139583862445
n = 56(12) 225851433717 225851433717.000000 -> 225851433717
n = 57(12) 365435296162 365435296162.000000 -> 365435296162
n = 58(12) 591286729879 591286729879.000000 -> 591286729879
n = 59(12) 956722026041 956722026041.000000 -> 956722026041
n = 60(13) 1548008755920 1548008755920.000000 -> 1548008755920
n = 61(13) 2504730781961 2504730781961.000000 -> 2504730781961
n = 62(13) 4052739537881 4052739537881.000000 -> 4052739537881
n = 63(13) 6557470319842 6557470319842.000001 -> 6557470319842
n = 64(14) 10610209857723 10610209857723.000001 -> 10610209857723
n = 65(14) 17167680177565 17167680177565.000002 -> 17167680177565
n = 66(14) 27777890035288 27777890035288.000004 -> 27777890035288
n = 67(14) 44945570212853 44945570212853.000008 -> 44945570212853
n = 68(14) 72723460248141 72723460248141.000008 -> 72723460248141
n = 69(15) 117669030460994 117669030460994.000015 -> 117669030460994
n = 70(15) 190392490709135 190392490709135.000031 -> 190392490709135
n = 71(15) 308061521170129 308061521170129.000031 -> 308061521170129
n = 72(15) 498454011879264 498454011879264.000061 -> 498454011879264
n = 73(15) 806515533049393 806515533049393.000122 -> 806515533049393
n = 74(16) 1304969544928657 1304969544928657.000244 -> 1304969544928657
n = 75(16) 2111485077978050 2111485077978050.000244 -> 2111485077978050
n = 76(16) 3416454622906707 3416454622906707.000488 -> 3416454622906707
n = 77(16) 5527939700884757 5527939700884757.000977 -> 5527939700884757
n = 78(16) 8944394323791464 8944394323791464.000977 -> 8944394323791464
n = 79(17) 14472334024676221 14472334024676221.001953 -> 14472334024676221
n = 80(17) 23416728348467685 23416728348467685.003906 -> 23416728348467685
n = 81(17) 37889062373143906 37889062373143906.003906 -> 37889062373143906
n = 82(17) 61305790721611591 61305790721611591.007812 -> 61305790721611591
n = 83(17) 99194853094755497 99194853094755497.015625 -> 99194853094755497
n = 84(18) 160500643816367088 160500643816367088.031250 -> 160500643816367088
n = 85(18) 259695496911122585 259695496911122585.031250 -> 259695496911122585
n = 86(18) 420196140727489673 420196140727489673.062500 -> 420196140727489673
n = 87(18) 679891637638612258 679891637638612258.125000 -> 679891637638612258
n = 88(19) 1100087778366101931 1100087778366101931.125000 -> 1100087778366101931
n = 89(19) 1779979416004714189 1779979416004714189.250000 -> 1779979416004714189
n = 90(19) 2880067194370816120 2880067194370816120.500000 -> 2880067194370816120
n = 91(19) 4660046610375530309 4660046610375530309.500000 -> 4660046610375530309
n = 92(19) 7540113804746346429 7540113804746346430.500000 -> 7540113804746346430
n = 93(20) 12200160415121876738 12200160415121876740.000000 -> 12200160415121876740