mirror of
https://github.com/louisrubet/rpn
synced 2024-12-28 09:58:52 +01:00
#165: added mpfr_free_str() after valgrind
This commit is contained in:
parent
0589fd7f51
commit
1da7e582e8
1 changed files with 39 additions and 36 deletions
|
@ -121,52 +121,55 @@ static void print_fix(FILE* stream, mpfr_t real, int base)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char* str = mpfr_get_str(NULL, &exp, base, digits + exp + 1, real, floating_t::s_mpfr_rnd);
|
char* str = mpfr_get_str(NULL, &exp, base, digits + exp + 1, real, floating_t::s_mpfr_rnd);
|
||||||
int len = strlen(str);
|
if(str != NULL)
|
||||||
|
|
||||||
if (len > 0)
|
|
||||||
{
|
{
|
||||||
if (str[0] == '-')
|
int len = strlen(str);
|
||||||
|
if (len > 0)
|
||||||
{
|
{
|
||||||
fputc(str[0], stream);
|
if (str[0] == '-')
|
||||||
len--;
|
|
||||||
str++;
|
|
||||||
}
|
|
||||||
else if (str[0] == '+')
|
|
||||||
{
|
|
||||||
len--;
|
|
||||||
str++;
|
|
||||||
}
|
|
||||||
if (exp < 0)
|
|
||||||
{
|
|
||||||
fputc('0', stream);
|
|
||||||
if (digits > 0)
|
|
||||||
{
|
{
|
||||||
fputc('.', stream);
|
fputc(str[0], stream);
|
||||||
for (i = 0; i < -(int)exp; i++)
|
len--;
|
||||||
fputc('0', stream);
|
str++;
|
||||||
fputs(str, stream);
|
|
||||||
for (i = 0; i < (int)(digits - len + exp); i++)
|
|
||||||
fputc('0', stream);
|
|
||||||
}
|
}
|
||||||
}
|
else if (str[0] == '+')
|
||||||
else
|
{
|
||||||
{
|
len--;
|
||||||
if (exp == 0)
|
str++;
|
||||||
|
}
|
||||||
|
if (exp < 0)
|
||||||
|
{
|
||||||
fputc('0', stream);
|
fputc('0', stream);
|
||||||
|
if (digits > 0)
|
||||||
|
{
|
||||||
|
fputc('.', stream);
|
||||||
|
for (i = 0; i < -(int)exp; i++)
|
||||||
|
fputc('0', stream);
|
||||||
|
fputs(str, stream);
|
||||||
|
for (i = 0; i < (int)(digits - len + exp); i++)
|
||||||
|
fputc('0', stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
for (i = 0; i < (int)exp; i++)
|
|
||||||
fputc(str[i], stream);
|
|
||||||
if (digits > 0)
|
|
||||||
{
|
{
|
||||||
fputc('.', stream);
|
if (exp == 0)
|
||||||
|
|
||||||
int remaining = (int)MIN(strlen(str) - exp - 1, digits) + 1;
|
|
||||||
for (i = (int)exp; i < remaining + (int)exp; i++)
|
|
||||||
fputc(str[i], stream);
|
|
||||||
for (i = 0; i < (int)(exp + digits - len); i++)
|
|
||||||
fputc('0', stream);
|
fputc('0', stream);
|
||||||
|
else
|
||||||
|
for (i = 0; i < (int)exp; i++)
|
||||||
|
fputc(str[i], stream);
|
||||||
|
if (digits > 0)
|
||||||
|
{
|
||||||
|
fputc('.', stream);
|
||||||
|
|
||||||
|
int remaining = (int)MIN(strlen(str) - exp - 1, digits) + 1;
|
||||||
|
for (i = (int)exp; i < remaining + (int)exp; i++)
|
||||||
|
fputc(str[i], stream);
|
||||||
|
for (i = 0; i < (int)(exp + digits - len); i++)
|
||||||
|
fputc('0', stream);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mpfr_free_str(str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue