Bahasa C/C++ / tanya C : rounding error
« pada: April 25, 2009, 09:50:46 AM »#include <math.h>
#include <stdio.h>
/* http://goldennumber.net/five(5).htm */
#define PHI pow(M_E, asinh(0.5))
/* http://goldennumber.net/five(5).htm */
double fib (unsigned int n)
{
return((pow(PHI, (double)n)) / sqrt(5.0));
}
int main (void)
{
int x;
for (x = 0; x < 100; ++x) {
printf("%40.0f\tx=%d\n", fib(x), x);
}
return(0);
}
fungsi fib() memberikan nilai balik berupa bilangan fibonacci ke-n.fungsi main() berisi looping yg akan mencetak bilangan fibonacci ke-0 sampai ke-99.
permasalahan muncul pada saat x=71 d mana fungsi fib() memberikan hasil yg salah (tidak memenuhi hukum f[n] = f[n-1] + f[n-2]), kesalahan jg terjadi pada saat x=76 dan setelah x=79.
sprtinya permasalahan floating point error / rounding error, ada yg bisa bantu dlm hal ini?
PS : tolong jgn beri usulan soal penggunaan "recursion" (lambat & bs bikin stack overflow alias hang), atau "tail recursion" (agak lbh cpt dr pd recursion, tp tetep aja recursion)


Selamat datang, Pengunjung. Silahkan
Mei 22, 2013, 12:57:12 PM


