Blame src/regression/printf-fmt-g-round.c

Szabolcs Nagy 79bf86
// commit e94d0692864ecf9522fd6a97610a47a2f718d3de 2014-04-07
Szabolcs Nagy 79bf86
// %g midpoint cases should be rounded to even
Szabolcs Nagy 79bf86
#include <stdio.h>
Szabolcs Nagy 79bf86
#include <string.h>
Szabolcs Nagy 79bf86
#include "test.h"
Szabolcs Nagy 79bf86
Szabolcs Nagy 79bf86
static void t(const char *fmt, double d, const char *want)
Szabolcs Nagy 79bf86
{
Szabolcs Nagy 79bf86
	char buf[256];
Szabolcs Nagy 79bf86
	int n = strlen(want);
Szabolcs Nagy 79bf86
	int r = snprintf(buf, sizeof buf, fmt, d);
Szabolcs Nagy 79bf86
	if (r != n || memcmp(buf, want, n+1) != 0)
Szabolcs Nagy 79bf86
		t_error("snprintf(\"%s\", %f) want %s got %s\n", fmt, d, want, buf);
Szabolcs Nagy 79bf86
}
Szabolcs Nagy 79bf86
Szabolcs Nagy 79bf86
int main()
Szabolcs Nagy 79bf86
{
Szabolcs Nagy 79bf86
	t("%.12g", 1000000000005.0, "1e+12");
Szabolcs Nagy 79bf86
	t("%.12g", 100000000002500.0, "1.00000000002e+14");
Szabolcs Nagy 79bf86
	return t_status;
Szabolcs Nagy 79bf86
}