Hi mpf_trunc is driving me mad...

Carlos Torres torresc at gmail.com
Fri Nov 25 06:25:17 CET 2011


Hi mpf_trunc is driving me mad...

first of all forgive my poor english is not my default language...

... mpf_trunc in aix with gmp-5.0.2 is not working. Or there is something i
am missing

when i try to mpf_trunc a number like 1415 instead of doing nothing trunc
is decrementing the original number

TIA!

PS:

example code.

#include <gmp.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

void trunc(char * pcsz ,int digits) {
        mpf_t f = {0};
        mpf_t ten = {};
        mpf_init2(ten, 256);
        mpf_init_set_str(f, pcsz, 10);
        mpf_set_ui(ten, digits);
        gmp_fprintf(stderr,"begin: %+12.05Ff\n", f);
        mpf_mul(f, f, ten);
        gmp_fprintf(stderr,"before trunc: %+12.05Ff\n", f);
        mpf_trunc(f, f);
        gmp_fprintf(stderr,"after trunc: %+12.05Ff\n", f);
        mpf_div(f, f, ten);
        gmp_fprintf(stderr,"end: %+12.05Ff\n", f);
        fprintf(stderr,"\n\n");
        mpf_clear(f);
        mpf_clear(ten);
}

int main( int argc, char** argv) {
        trunc("52618562.77", 100);
        trunc("52618562.77605", 100);
        trunc("52618562.7701", 100);
        return 0;
}


--- output ---

begin: +52618562.77000
before trunc: +5261856277.00000
after trunc: +5261856276.00000 << this is wrong
end: +52618562.76000


begin: +52618562.77605
before trunc: +5261856277.60500
after trunc: +5261856277.00000
end: +52618562.77000


begin: +52618562.77010
before trunc: +5261856277.01000
after trunc: +5261856277.00000
end: +52618562.77000




-- 
Porque los programadores confunden halloween con navidad?

Porque, OCT(31) = DEC(25)


More information about the gmp-bugs mailing list