variables erased ?
Patrick Pelissier
Patrick.Pelissier at loria.fr
Tue Mar 15 16:45:45 CET 2005
chi.c: In function `score_getChi2':
chi.c:19: warning: double format, pointer arg (arg 2)
chi.c:21: warning: double format, pointer arg (arg 2)
chi.c:23: warning: double format, pointer arg (arg 2)
chi.c:25: warning: double format, pointer arg (arg 2)
chi.c:27: warning: double format, pointer arg (arg 2)
chi.c:34: warning: double format, pointer arg (arg 2)
You are giving a mpfr_t to printf, and you print it like a double.
You can't display mpfr_t with printf without using printf extension.
Use this instead:
void print_mpfr (const char *string, mpfr_t m) {
printf ("%s", string);
mpfr_out_str (stdout, 10, 0, m, GMP_RNDN);
putchar ('\n');
};
Sincerely,
Patrick Pelissier
On Tue, Mar 15, 2005 at 16:28:25 +0100, Nicolas Peyrussie wrote:
> 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
> _______________________________________________
> gmp-discuss mailing list
> gmp-discuss at swox.com
> https://gmplib.org/mailman/listinfo/gmp-discuss
More information about the gmp-discuss
mailing list