changeset 496:e720ce827c1c

added IEEE 754 tests for 0-handing
author thomask
date Thu, 28 Apr 2005 15:53:12 +0000
parents e4119df89e01
children 6d1faaf3eb70
files run/ieee_754_zerocomp_01.d run/ieee_754_zerocomp_02.d run/ieee_754_zerocomp_03.d run/ieee_754_zerocomp_04.d run/ieee_754_zerocomp_05.d run/ieee_754_zerocomp_06.d run/ieee_754_zerocomp_07.d run/ieee_754_zerocomp_08.d run/ieee_754_zerocomp_09.d run/ieee_754_zerosdq_01.d run/ieee_754_zerosdq_02.d run/ieee_754_zerosdq_03.d run/ieee_754_zerosdq_04.d
diffstat 13 files changed, 357 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_01.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,19 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_01;
+
+int main(){
+	float f1, f2;
+
+	f1=0.0f;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0f;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_02.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,19 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_02;
+
+int main(){
+	ifloat f1, f2;
+
+	f1=0.0fi;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0fi;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_03.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,27 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_03;
+
+int main(){
+	cfloat f1, f2;
+
+	f1=0.0f+0.0fi;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=0.0f-0.0fi;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0f+0.0fi;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0f-0.0fi;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_04.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,19 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_04;
+
+int main(){
+	double f1, f2;
+
+	f1=0.0;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_05.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,19 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_05;
+
+int main(){
+	idouble f1, f2;
+
+	f1=0.0i;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0i;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_06.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,27 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_06;
+
+int main(){
+	cdouble f1, f2;
+
+	f1=0.0+0.0i;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=0.0-0.0i;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0+0.0i;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0-0.0i;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_07.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,19 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_07;
+
+int main(){
+	real f1, f2;
+
+	f1=0.0l;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0l;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_08.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,19 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_08;
+
+int main(){
+	ireal f1, f2;
+
+	f1=0.0li;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0li;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerocomp_09.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,27 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerocomp_09;
+
+int main(){
+	creal f1, f2;
+
+	f1=0.0l+0.0li;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=0.0l-0.0li;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0l+0.0li;
+	f2=-f1;
+	assert(f1==f2);
+
+	f1=-0.0l-0.0li;
+	f2=-f1;
+	assert(f1==f2);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerosdq_01.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerosdq_01;
+
+// Check whether IEEE 754 signed zero is correctly supported.
+
+union S{
+	float f;
+	uint[1] i;
+}
+
+int main(){
+	S s;
+	int top=0;
+
+
+	s.f = 0.0f;
+	assert(s.i[top]==0x00000000);
+
+	s.f = -0.0f;
+	assert(s.i[top]==0x80000000);
+
+	s.f = 0.0f - 0.0f;
+	assert(s.i[top]==0x00000000);
+
+	s.f = (-0.0f) - 0.0f;
+	assert(s.i[top]==0x80000000);
+
+	s.f = 0.0f;
+	s.f *= 1.0f;
+	assert(s.i[top]==0x00000000);
+
+	s.f = 0.0f;
+	s.f *= -1.0f;
+	assert(s.i[top]==0x80000000);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerosdq_02.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerosdq_02;
+
+// Check whether IEEE 754 signed zero is correctly supported.
+
+union S{
+	double f;
+	uint[2] i;
+}
+
+int main(){
+	S s;
+	s.f=1.0;
+	int top = (s.i[0]==0) ? 1 : 0;
+
+
+	s.f = 0.0;
+	assert(s.i[top]==0x00000000);
+
+	s.f = -0.0;
+	assert(s.i[top]==0x80000000);
+
+	s.f = 0.0 - 0.0;
+	assert(s.i[top]==0x00000000);
+
+	s.f = (-0.0) - 0.0;
+	assert(s.i[top]==0x80000000);
+
+	s.f = 0.0;
+	s.f *= 1.0;
+	assert(s.i[top]==0x00000000);
+
+	s.f = 0.0;
+	s.f *= -1.0;
+	assert(s.i[top]==0x80000000);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerosdq_03.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerosdq_03;
+
+// Check whether IEEE 754 signed zero is correctly supported.
+
+union S{
+	ifloat f;
+	uint[1] i;
+}
+
+int main(){
+	S s;
+	int top=0;
+
+
+	s.f = 0.0fi;
+	assert(s.i[top]==0x00000000);
+
+	s.f = -0.0fi;
+	assert(s.i[top]==0x80000000);
+
+	s.f = 0.0fi - 0.0fi;
+	assert(s.i[top]==0x00000000);
+
+	s.f = (-0.0fi) - 0.0fi;
+	assert(s.i[top]==0x80000000);
+
+	s.f = 0.0fi;
+	s.f *= 1.0fi;
+	assert(s.i[top]==0x00000000);
+
+	s.f = 0.0fi;
+	s.f *= -1.0fi;
+	assert(s.i[top]==0x80000000);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/ieee_754_zerosdq_04.d	Thu Apr 28 15:53:12 2005 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.ieee_754_zerosdq_04;
+
+// Check whether IEEE 754 signed zero is correctly supported.
+
+union S{
+	idouble f;
+	uint[2] i;
+}
+
+int main(){
+	S s;
+	s.f=1.0i;
+	int top = (s.i[0]==0) ? 1 : 0;
+
+
+	s.f = 0.0i;
+	assert(s.i[top]==0x00000000);
+
+	s.f = -0.0i;
+	assert(s.i[top]==0x80000000);
+
+	s.f = 0.0i - 0.0i;
+	assert(s.i[top]==0x00000000);
+
+	s.f = (-0.0i) - 0.0i;
+	assert(s.i[top]==0x80000000);
+
+	s.f = 0.0i;
+	s.f *= 1.0i;
+	assert(s.i[top]==0x00000000);
+
+	s.f = 0.0i;
+	s.f *= -1.0i;
+	assert(s.i[top]==0x80000000);
+
+	return 0;
+}