Forum Sains Indonesia



Perlihatkan Tulisan

Seksi ini mengijinkan Anda untuk melihat semua tulisan yang dibuat oleh anggota ini. Catatan bahwa Anda hanya bisa melihat tulisan yang dibuat dalam area di mana Anda memiliki akses terhadapnya.


Topik - cph

Halaman: [1]
1
Bahasa C/C++ / tanya C : rounding error
« pada: April 25, 2009, 09:50:46 AM »
Kode: [Pilih]
#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)

Halaman: [1]
Copyright © 2006-2014 Forum Sains Indonesia