NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-m68k/59616 (m68k softfloat nans and infs have to be preserved when changing sizes)



Attached is a test program for reference:

Best regards,

Nat
#include <stdio.h>

#define VAL (3.9e-10)
#define VAL2 (+1.0/0.0)
#define VAL3 (0.0/0.0)
#define VAL4 (5.2e3)

int
main(void)
{
	float f = VAL;
	double d = VAL;
	long double l = VAL;

	printf("MINUS  %le: %le %le %le\n", VAL, (double)(l - d),
	    (double)(l - f), (double)(d - f));
	printf("PLUS %le: %le %le %le\n", VAL, (double)(l + d),
	    (double)(l + f), (double)(d + f));

	if (l - d == 0)
		printf("OK ");
	if (l - f == 0)
		printf("OK ");
	if (d - f == 0)
		printf("OK");
	printf("\n");

	f = VAL2;
	d = VAL2;
	l = VAL2;

	printf("MINUS  %le: %le %le %le\n", VAL2, (double)(l - d),
	    (double)(l - f), (double)(d - f));
	printf("PLUS %le: %le %le %le\n", VAL2, (double)(l + d),
	    (double)(l + f), (double)(d + f));

	if (l - d == 0)
		printf("OK ");
	if (l - f == 0)
		printf("OK ");
	if (d - f == 0)
		printf("OK");
	printf("\n");

	f = VAL3;
	d = VAL3;
	l = VAL3;

	printf("MINUS  %le: %le %le %le\n", VAL3, (double)(l - d),
	    (double)(l - f), (double)(d - f));
	printf("PLUS %le: %le %le %le\n", VAL3, (double)(l + d),
	    (double)(l + f), (double)(d + f));

	if (l - d == 0)
		printf("OK ");
	if (l - f == 0)
		printf("OK ");
	if (d - f == 0)
		printf("OK");
	printf("\n");

	f = VAL4;
	d = VAL4;
	l = VAL4;

	printf("MINUS  %le: %le %le %le\n", VAL4, (double)(l - d),
	    (double)(l - f), (double)(d - f));
	printf("PLUS %le: %le %le %le\n", VAL4, (double)(l + d),
	    (double)(l + f), (double)(d + f));

	if (l - d == 0)
		printf("OK ");
	if (l - f == 0)
		printf("OK ");
	if (d - f == 0)
		printf("OK");
	printf("\n");

	return 0;
}


Home | Main Index | Thread Index | Old Index