variables erased ?

Nicolas Peyrussie nicolas.peyrussie at laposte.net
Tue Mar 15 16:28:25 CET 2005


Hello,

I am using gmp and mpfr to do some calculations (inversed Chi squared 
function) and I have a trouble with the variables initialization.
This is my code :
/*************************************************/
void score_getChi2(double chi, unsigned int df)
{
 mpfr_t sum,term, temp, tmp ,m, mm;
 unsigned int i=1;

 mpfr_init(sum);
 mpfr_init(term);
 mpfr_init(temp);
 mpfr_init(tmp);
 mpfr_init(m);
 mpfr_init(mm);

   printf("chi : %f\n", chi);
 mpfr_set_d(m, chi / 2.0, GMP_RNDN);
   printf("m : %F\n", m);
 mpfr_neg(mm,m, GMP_RNDD);
   printf("mm : %F\n", mm);
 mpfr_exp(tmp, m, GMP_RNDN);
   printf("%F\n", tmp);
 mpfr_set(sum, tmp, GMP_RNDN);
   printf("%F\n", sum);
 mpfr_set(term, tmp, GMP_RNDN);
   printf("%F\n", term);

 for(i=1;i<=df/2;i++){
   mpfr_div_ui(temp, m, i, GMP_RNDN);
   mpfr_mul(term, term, temp, GMP_RNDN);
   mpfr_add(sum, sum, term, GMP_RNDN);
 }
   printf("%F\n", sum);
}
/*************************************************/

After the mpfr_set_d(m, chi / 2.0, GMP_RNDN); that is OK, I display the 
right value (for "m"), but then I just get zeros for all the others...
If I try to display "m" avec the mpfr_set_neg(mm,m, GMP_RNDD); I also 
have 0.
I don't understand why I get just zeros for my variables and also why I 
get 0 for "m" when I am supposed not to touch to its value when I do 
mpfr_set_neg(mm,m, GMP_RNDD);

I read the manual entries for these functions but I found nothing 
related to this problem.
Does someone have a solution ?
I thank you in advance.

Regards,
Nicolas


More information about the gmp-discuss mailing list