?
ja dies funktioniert aber leider nicht mit der GMP library.. da ich auf ca. 90 stellen genau brauche, und dies ein herkömmliches float nicht hergibt ;/
Weiterhin habe ich das problem bei der GMP lib,
das er zwei zahlen nicht richtig addiert sondern rundet.
Habe es probiert er addiert 0,64...e64 + 0,4243e-196 nicht richtig, obwohl ich die precision auf 900,5000 oder sogar 50000 erhöht habe, was mache ich falsch?
int aprox;
mp_size_t prec = 50000;
mpf_t test, y,t,te1,ttest, te2,tfac,e1,e2,fac;
mpf_init2 (test, prec);
mpf_init2 (y, prec);
mpf_init2 (e1, prec);
mpf_init2 (e2, prec);
mpf_init2 (fac, prec);
mpf_init2 (tfac, prec);
mpf_init2 (ttest, prec);
mpf_init2 (te1, prec);
mpf_init2 (t, prec);
mpf_init_set_si(te1,0);
mpf_init_set_d (test,4.16411519559);
mpf_init_set_si (te1,1);
mpf_init_set_d (t, 1e-84);
while(mpf_cmp_d(test,4.165)<0)
{
mpf_init_set_si (fac,1);
mpf_init_set_si (te1,1);
mpf_init_set_si (e1,1);
for(aprox=1;aprox<=150;aprox++) // diese schleife approximiert die e-function aus deren summenformel
{
mpf_mul_ui(fac,fac,aprox);
mpf_pow_ui(ttest,test,aprox);
mpf_ui_div(tfac,1,fac);
mpf_mul(te1,tfac,ttest);
mpf_add(e1,e1,te1); //<<< es passiert genau hier, es sind alle zahlen ok aber wenn ich sie zusammenaddiere passiert reingarnix?!
cout << "e1:"; mpf_out_str (stdout, 10,300, e1);cout << endl;
}
}