Tagged: command-line, download, free, open-source, program, software
This topic was published by DevynCJohnson and viewed 1882 times since "". The last page revision was "".
- AuthorPosts
"fib" (Fibonacci Number Generator) is a fast and cross-platform program that can be used to find a Fibonacci number. This small program works in a command-line and can be called in shell-scripts. Currently, the program cannot find Fibonacci numbers beyond the 410th Fibonacci number. "fib" (Fibonacci Number Generator) is licensed under LGPLv3 and is made by Devyn Collier Johnson <[email protected]>.
NOTE: "fib" has been merged with "Linux-Utils" (https://dcjtech.info/topic/linux-utils-software-collection-for-linux/). Updates will be released with Linux-Utils rather than this page.
To compile the C-source-code, execute one of the below listed commands. Suggestions for other compiler commands are welcome.
- General (GNU GCC) -
gcc -O3 -gtoggle -g0 -s -pipe -pedantic -std=c11 ./fib.c -o ./fib
- Optimized (GNU GCC) -
gcc -O3 -gtoggle -g0 -s -pipe -funroll-loops -ffunction-sections -fdata-sections -std=c11 -Wl,-O3 ./fib.c -o ./fib && strip --remove-section=.note --remove-section=.comment --strip-debug --strip-unneeded ./fib
To use the program, in a terminal, type "/PATH/TO/fib 10" to get the tenth Fibonacci number.
Please feel free to email me suggestions, bug reports, concerns, etc. Also, please consider donating to DCJTech for further development.
[paypal-donation]
Download Version 2015.11.15
https://dcjtech.info/wp-content/uploads/2015/11/fib.c.tar.gz
Source Code
/* Created by Devyn Collier Johnson <[email protected]> LGPLv3 GNU Lesser General Public License v3 Copyright (c) Devyn Collier Johnson, All rights reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. */ // gcc -O3 -gtoggle -g0 -s -pipe -pedantic -std=c11 ./fib.c -o ./fib // gcc -O3 -gtoggle -g0 -s -pipe -funroll-loops -ffunction-sections -fdata-sections -pedantic -Wall -Wextra -std=c11 -Wl,-O3 ./fib.c -o ./fib && strip --remove-section=.note --remove-section=.comment --strip-debug --strip-unneeded ./fib // Fibonacci Number Generator // Usage: ./fib 10 # Return the tenth Fibonacci number #include <stdio.h> #include <stdlib.h> #if defined(__linux__) #if !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif #include <unistd.h> #elif !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__))) #define _POSIX_C_SOURCE = 199309L #include <unistd.h> #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) #include <sys/param.h> #if defined(BSD) #define _XOPEN_SOURCE_EXTENDED #endif #endif #endif // static const char __author__[32] = "Devyn Collier Johnson"; // static const char __copyright__[8] = "LGPLv3"; // static const char __version__[16] = "2015.11.15"; unsigned int fib(const unsigned int num); unsigned int fib(const unsigned int num) { // Fibonacci Number Generator unsigned int i; unsigned int fval[num+1]; if (num > 410) { printf("ERROR! Number too large.\n"); return 0; } else { if (num == 0) { return 0; } else if (num == 1 || num == 2) { return 1; } else { fval[0] = 0; fval[1] = 1; fval[2] = 1; fval[3] = 2; fval[4] = 3; for (i = 2; i <= num; i++) { fval[ i ] = fval[ i - 1 ] + fval[ i - 2 ]; } return fval[num]; } } } int main(int argc, char *argv[]) { printf("%u\n", fib((unsigned int) strtol(argv[1], (char **)NULL, 10))); return 0; }
- General (GNU GCC) -
- AuthorPosts