Menu
Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
C Programming
getMaxWordLength().... Ben Bacarisse wins!
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="Ian Collins" data-source="post: 5165663"><p>Except a crude C++ version that does the grunt work at compile time?</p><p></p><p>#include <stdio.h></p><p>#include <stdint.h></p><p>#include <stdlib.h></p><p></p><p>template <unsigned N></p><p>struct Fibonacci</p><p>{</p><p>static const uint64_t value = Fibonacci<N-1>::value +</p><p>Fibonacci<N-2>::value;</p><p>};</p><p></p><p>template <></p><p>struct Fibonacci<1> { static const uint64_t value = 1; };</p><p></p><p>template <></p><p>struct Fibonacci<0> { static const uint64_t value = 0; };</p><p></p><p>const size_t maxFib = 93;</p><p></p><p>uint64_t fibs[maxFib];</p><p></p><p>template <unsigned N> uint64_t loadFib()</p><p>{</p><p>fibs[N] = Fibonacci<N>::value;</p><p>loadFib<N-1>();</p><p>return fibs[N];</p><p>}</p><p></p><p>template <> uint64_t loadFib<0>()</p><p>{</p><p>fibs[0] = Fibonacci<0>::value;</p><p>return 0;</p><p>}</p><p></p><p>const uint64_t big = loadFib<maxFib>();</p><p></p><p>int main(int argc,char *argv[])</p><p>{</p><p>unsigned limit = 50;</p><p></p><p>if( argc > 1 ) limit = atoi(argv[1]);</p><p></p><p>for( unsigned i=0; i<limit; i++)</p><p>{</p><p>printf("Fib(%d)=%llu\n",i,fibs<em>);</em></p><p><em>}</em></p><p><em></em></p><p><em>return 0;</em></p><p><em>}</em></p></blockquote><p></p>
[QUOTE="Ian Collins, post: 5165663"] Except a crude C++ version that does the grunt work at compile time? #include <stdio.h> #include <stdint.h> #include <stdlib.h> template <unsigned N> struct Fibonacci { static const uint64_t value = Fibonacci<N-1>::value + Fibonacci<N-2>::value; }; template <> struct Fibonacci<1> { static const uint64_t value = 1; }; template <> struct Fibonacci<0> { static const uint64_t value = 0; }; const size_t maxFib = 93; uint64_t fibs[maxFib]; template <unsigned N> uint64_t loadFib() { fibs[N] = Fibonacci<N>::value; loadFib<N-1>(); return fibs[N]; } template <> uint64_t loadFib<0>() { fibs[0] = Fibonacci<0>::value; return 0; } const uint64_t big = loadFib<maxFib>(); int main(int argc,char *argv[]) { unsigned limit = 50; if( argc > 1 ) limit = atoi(argv[1]); for( unsigned i=0; i<limit; i++) { printf("Fib(%d)=%llu\n",i,fibs[i]); } return 0; }[/i] [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
C Programming
getMaxWordLength().... Ben Bacarisse wins!
Top