#!/bin/sh


case `uname` in
	HP-UX)
		CC='cc -Aa +M'
		;;
	SunOS)
		CC='gcc -ansi'
		;;
	IRIX*)
		CC='cc -mips3 -n32'
		;;
	*)
		CC='cc'
		;;
esac

set -e

TMP=/tmp/prec_$$

trap "rm -f $TMP ${TMP}.c" 1 2 3 15


cat > ${TMP}.c << @EOM

#include <stdio.h>

main()
{
#if (DFloat == 2)
			#define FFloat float
#elif (DFloat == 4)
			#define FFloat double
#else
			#define FFloat long double
#endif
	FFloat p = 1.0;
	FFloat z = 1.0;
	FFloat a = 1.0;
	FFloat b;

	do
	{
		z = p;
		p /= 2.0 ;
		b = a + p;

	} while( b != a );

#if	(DFloat == 2)
			printf("%d: %.64g\n",sizeof(FFloat),z);
#elif (DFloat == 4)
			printf("%d: %.64lg\n",sizeof(FFloat),z);
#else
			printf("%d: %.64Lg\n",sizeof(FFloat),z);
#endif
	
	exit (0);
}

@EOM

for f in 2 4 8
do
	set -x
	$CC -o $TMP -DDFloat=$f ${TMP}.c
	set +x
	echo $f
	$TMP
done


rm -f $TMP ${TMP}.c
