aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hauser <jhauser@eecs.berkeley.edu>2014-12-11 14:38:33 -0800
committerJohn Hauser <jhauser@eecs.berkeley.edu>2014-12-11 14:38:33 -0800
commit57c49a74f9f4baf3ba864bbce35d975efd18a8e3 (patch)
treeba1b661fe576d24652f6611d60734901ccf63d7f
parentccc47aef4a2db923e7cfed2f5aab2363ecf6ff0e (diff)
downloadberkeley-testfloat-3-57c49a74f9f4baf3ba864bbce35d975efd18a8e3.zip
berkeley-testfloat-3-57c49a74f9f4baf3ba864bbce35d975efd18a8e3.tar.gz
berkeley-testfloat-3-57c49a74f9f4baf3ba864bbce35d975efd18a8e3.tar.bz2
Update in RC for Release 3, fixing some bugs and improving the documentation.
-rw-r--r--build/Linux-386-GCC/Makefile70
-rw-r--r--build/Linux-386-GCC/platform.h56
-rw-r--r--build/Linux-x86_64-GCC/Makefile317
-rw-r--r--build/Linux-x86_64-GCC/platform.h42
-rw-r--r--build/Win32-MinGW/Makefile317
-rw-r--r--build/Win32-MinGW/platform.h42
-rw-r--r--build/Win64-MinGW-w64/Makefile317
-rw-r--r--build/Win64-MinGW-w64/platform.h42
-rw-r--r--build/template/Makefile315
-rw-r--r--build/template/platform.h44
-rw-r--r--doc/TestFloat-source.html18
-rw-r--r--source/genCases.h8
-rw-r--r--source/genCases_i32.c10
-rw-r--r--source/genCases_i64.c10
-rw-r--r--source/genCases_ui32.c14
-rw-r--r--source/genCases_ui64.c14
-rw-r--r--source/genLoops.c32
-rw-r--r--source/genLoops.h32
-rw-r--r--source/subj-C/subjfloat.c32
-rw-r--r--source/subjfloat.h32
-rw-r--r--source/test_a_extF80_z_ui64_rx.c2
-rw-r--r--source/testfloat.c32
-rw-r--r--source/verLoops.c32
-rw-r--r--source/verLoops.h32
24 files changed, 1665 insertions, 197 deletions
diff --git a/build/Linux-386-GCC/Makefile b/build/Linux-386-GCC/Makefile
index ceaebb2..e543382 100644
--- a/build/Linux-386-GCC/Makefile
+++ b/build/Linux-386-GCC/Makefile
@@ -1,4 +1,37 @@
+#=============================================================================
+#
+# This Makefile is part of TestFloat, Release 3, a package of programs for
+# testing the correctness of floating-point arithmetic complying with the IEEE
+# Standard for Floating-Point, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+# (Regents). All Rights Reserved. Redistribution and use in source and
+# binary forms, with or without modification, are permitted provided that the
+# following conditions are met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer.
+# Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer in
+# the documentation and/or other materials provided with the distribution.
+# Neither the name of the Regents nor the names of its contributors may be
+# used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+# REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+# HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+# MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+#
+#=============================================================================
+
SOURCE_DIR = ../../source
SUBJ_SOURCE_DIR = $(SOURCE_DIR)/subj-C
SOFTFLOAT_DIR = ../../../berkeley-softfloat-rc3
@@ -10,19 +43,19 @@ SOFTFLOAT_H = \
$(SOFTFLOAT_INCLUDE_DIR)/softfloat.h
SOFTFLOAT_LIB = $(SOFTFLOAT_DIR)/build/$(PLATFORM)/softfloat$(LIB)
-TYPE_OPTS = -DEXTFLOAT80 -DFLOAT128
+TESTFLOAT_OPTS = -DEXTFLOAT80 -DFLOAT128 -DLONG_DOUBLE_IS_EXTFLOAT80
DELETE = rm -f
C_INCLUDES = \
-I. -I$(SUBJ_SOURCE_DIR) -I$(SOURCE_DIR) -I$(SOFTFLOAT_INCLUDE_DIR)
COMPILE_C = \
- gcc -c -Werror-implicit-function-declaration $(TYPE_OPTS) $(C_INCLUDES) -O2 \
- -o $@
+ gcc -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
COMPILE_SLOWFLOAT_C = \
- gcc -c -Werror-implicit-function-declaration $(TYPE_OPTS) $(C_INCLUDES) -O3 \
- -o $@
+ gcc -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
+ $(C_INCLUDES) -O3 -o $@
MAKELIB = ar crs $@
-LINK = gcc -o $@
+LINK = gcc -lm -o $@
OBJ = .o
LIB = .a
@@ -155,6 +188,7 @@ OBJS_LIB = \
fail$(OBJ) \
functions_common$(OBJ) \
functionInfos$(OBJ) \
+ standardFunctionInfos$(OBJ) \
random$(OBJ) \
genCases_common$(OBJ) \
$(OBJS_GENCASES) \
@@ -166,11 +200,8 @@ OBJS_LIB = \
$(OBJS_WRITECASE) \
testLoops_common$(OBJ) \
$(OBJS_TEST) \
- standardFunctionInfos$(OBJ) \
-
-#*** EVERYBODY SHOULD INCLUDE "platform.h", RIGHT?
-uint128$(OBJ): platform.h $(SOURCE_DIR)/uint128.h
+uint128$(OBJ): $(SOURCE_DIR)/uint128.h
fail$(OBJ): $(SOURCE_DIR)/fail.h
functions_common$(OBJ): $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h
functionInfos$(OBJ): $(SOURCE_DIR)/functions.h
@@ -179,22 +210,19 @@ random$(OBJ): $(SOURCE_DIR)/random.h
genCases_common$(OBJ): $(SOURCE_DIR)/fail.h $(SOURCE_DIR)/genCases.h
$(OBJS_GENCASES): \
$(SOURCE_DIR)/random.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h
-genCases_f128$(OBJ): platform.h $(SOURCE_DIR)/uint128.h
+genCases_f128$(OBJ): $(SOURCE_DIR)/uint128.h
genCases_writeTestsTotal$(OBJ): $(SOURCE_DIR)/genCases.h
verCases_common$(OBJ): $(SOURCE_DIR)/verCases.h
verCases_writeFunctionName$(OBJ): $(SOURCE_DIR)/verCases.h
readHex$(OBJ): $(SOURCE_DIR)/readHex.h
-writeHex$(OBJ): \
- platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
-writeCase_common$(OBJ): $(SOURCE_DIR)/writeCase.h
+writeHex$(OBJ): $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
$(OBJS_WRITECASE): \
$(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/writeCase.h
testLoops_common$(OBJ): $(SOURCE_DIR)/testLoops.h
$(OBJS_TEST): \
- platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) \
- $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
- $(SOURCE_DIR)/testLoops.h
-$(OBJS_LIB): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h \
+ $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/testLoops.h
+$(OBJS_LIB): %$(OBJ): platform.h $(SOURCE_DIR)/%.c
$(COMPILE_C) $(SOURCE_DIR)/$*.c
testfloat$(LIB): $(OBJS_LIB)
$(MAKELIB) $^
@@ -261,11 +289,11 @@ testfloat_ver$(EXE): $(OBJS_TESTFLOAT_VER) testfloat$(LIB) $(SOFTFLOAT_LIB)
OBJS_TESTFLOAT = subjfloat$(OBJ) subjfloat_functions$(OBJ) testfloat$(OBJ)
subjfloat$(OBJ): \
- $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
+ platform.h $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
$(SOURCE_DIR)/subjfloat.h $(SUBJ_SOURCE_DIR)/subjfloat.c
$(COMPILE_C) $(SUBJ_SOURCE_DIR)/subjfloat.c
subjfloat_functions$(OBJ): \
- $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ platform.h $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
$(SOURCE_DIR)/functions.h $(SOURCE_DIR)/subjfloat_functions.c
$(COMPILE_C) $(SOURCE_DIR)/subjfloat_functions.c
testfloat$(OBJ): \
@@ -276,7 +304,7 @@ testfloat$(OBJ): \
$(COMPILE_C) $(SOURCE_DIR)/testfloat.c
testfloat$(EXE): $(OBJS_TESTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
- $(LINK) $^ -lm
+ $(LINK) $^
.PHONY: clean
clean:
diff --git a/build/Linux-386-GCC/platform.h b/build/Linux-386-GCC/platform.h
index 2ea4f73..4b38236 100644
--- a/build/Linux-386-GCC/platform.h
+++ b/build/Linux-386-GCC/platform.h
@@ -1,34 +1,34 @@
/*============================================================================
-*** FIX.
-
-This C source fragment is part of the SoftFloat IEC/IEEE Floating-point
-Arithmetic Package, Release 2b.
-
-Written by John R. Hauser. This work was made possible in part by the
-International Computer Science Institute, located at Suite 600, 1947 Center
-Street, Berkeley, California 94704. Funding was partially provided by the
-National Science Foundation under grant MIP-9311980. The original version
-of this code was written as part of a project to build a fixed-point vector
-processor in collaboration with the University of California at Berkeley,
-overseen by Profs. Nelson Morgan and John Wawrzynek. More information
-is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
-arithmetic/SoftFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
-been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
-RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
-AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
-COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
-EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
-INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
-OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) the source code for the derivative work includes prominent notice that
-the work is derivative, and (2) the source code includes prominent notice with
-these four paragraphs for those parts of this code that are retained.
+This C header file is part of TestFloat, Release 3, a package of programs for
+testing the correctness of floating-point arithmetic complying with the IEEE
+Standard for Floating-Point, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+(Regents). All Rights Reserved. Redistribution and use in source and binary
+forms, with or without modification, are permitted provided that the following
+conditions are met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer.
+Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer in the
+documentation and/or other materials provided with the distribution. Neither
+the name of the Regents nor the names of its contributors may be used to
+endorse or promote products derived from this software without specific prior
+written permission.
+
+IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
+OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
=============================================================================*/
diff --git a/build/Linux-x86_64-GCC/Makefile b/build/Linux-x86_64-GCC/Makefile
new file mode 100644
index 0000000..86407ee
--- /dev/null
+++ b/build/Linux-x86_64-GCC/Makefile
@@ -0,0 +1,317 @@
+
+#=============================================================================
+#
+# This Makefile is part of TestFloat, Release 3, a package of programs for
+# testing the correctness of floating-point arithmetic complying with the IEEE
+# Standard for Floating-Point, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+# (Regents). All Rights Reserved. Redistribution and use in source and
+# binary forms, with or without modification, are permitted provided that the
+# following conditions are met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer.
+# Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer in
+# the documentation and/or other materials provided with the distribution.
+# Neither the name of the Regents nor the names of its contributors may be
+# used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+# REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+# HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+# MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+#
+#=============================================================================
+
+SOURCE_DIR = ../../source
+SUBJ_SOURCE_DIR = $(SOURCE_DIR)/subj-C
+SOFTFLOAT_DIR = ../../../berkeley-softfloat-rc3
+SOFTFLOAT_INCLUDE_DIR = $(SOFTFLOAT_DIR)/source/include
+PLATFORM = Linux-x86_64-GCC
+
+SOFTFLOAT_H = \
+ $(SOFTFLOAT_INCLUDE_DIR)/softfloat_types.h \
+ $(SOFTFLOAT_INCLUDE_DIR)/softfloat.h
+SOFTFLOAT_LIB = $(SOFTFLOAT_DIR)/build/$(PLATFORM)/softfloat$(LIB)
+
+TESTFLOAT_OPTS = -DEXTFLOAT80 -DFLOAT128 -DLONG_DOUBLE_IS_EXTFLOAT80
+
+DELETE = rm -f
+C_INCLUDES = \
+ -I. -I$(SUBJ_SOURCE_DIR) -I$(SOURCE_DIR) -I$(SOFTFLOAT_INCLUDE_DIR)
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+COMPILE_SLOWFLOAT_C = \
+ gcc -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
+ $(C_INCLUDES) -O3 -o $@
+MAKELIB = ar crs $@
+LINK = gcc -lm -o $@
+
+OBJ = .o
+LIB = .a
+EXE =
+
+.PHONY: all
+all: \
+ testsoftfloat$(EXE) \
+ timesoftfloat$(EXE) \
+ testfloat_gen$(EXE) \
+ testfloat_ver$(EXE) \
+ testfloat$(EXE) \
+
+OBJS_GENCASES = \
+ genCases_ui32$(OBJ) \
+ genCases_ui64$(OBJ) \
+ genCases_i32$(OBJ) \
+ genCases_i64$(OBJ) \
+ genCases_f32$(OBJ) \
+ genCases_f64$(OBJ) \
+ genCases_extF80$(OBJ) \
+ genCases_f128$(OBJ) \
+
+OBJS_WRITECASE = \
+ writeCase_a_ui32$(OBJ) \
+ writeCase_a_ui64$(OBJ) \
+ writeCase_a_f32$(OBJ) \
+ writeCase_ab_f32$(OBJ) \
+ writeCase_abc_f32$(OBJ) \
+ writeCase_a_f64$(OBJ) \
+ writeCase_ab_f64$(OBJ) \
+ writeCase_abc_f64$(OBJ) \
+ writeCase_a_extF80M$(OBJ) \
+ writeCase_ab_extF80M$(OBJ) \
+ writeCase_abc_extF80M$(OBJ) \
+ writeCase_a_f128M$(OBJ) \
+ writeCase_ab_f128M$(OBJ) \
+ writeCase_abc_f128M$(OBJ) \
+ writeCase_z_bool$(OBJ) \
+ writeCase_z_ui32$(OBJ) \
+ writeCase_z_ui64$(OBJ) \
+ writeCase_z_f32$(OBJ) \
+ writeCase_z_f64$(OBJ) \
+ writeCase_z_extF80M$(OBJ) \
+ writeCase_z_f128M$(OBJ) \
+
+OBJS_TEST = \
+ test_a_ui32_z_f32$(OBJ) \
+ test_a_ui32_z_f64$(OBJ) \
+ test_a_ui32_z_extF80$(OBJ) \
+ test_a_ui32_z_f128$(OBJ) \
+ test_a_ui64_z_f32$(OBJ) \
+ test_a_ui64_z_f64$(OBJ) \
+ test_a_ui64_z_extF80$(OBJ) \
+ test_a_ui64_z_f128$(OBJ) \
+ test_a_i32_z_f32$(OBJ) \
+ test_a_i32_z_f64$(OBJ) \
+ test_a_i32_z_extF80$(OBJ) \
+ test_a_i32_z_f128$(OBJ) \
+ test_a_i64_z_f32$(OBJ) \
+ test_a_i64_z_f64$(OBJ) \
+ test_a_i64_z_extF80$(OBJ) \
+ test_a_i64_z_f128$(OBJ) \
+ test_a_f32_z_ui32_rx$(OBJ) \
+ test_a_f32_z_ui64_rx$(OBJ) \
+ test_a_f32_z_i32_rx$(OBJ) \
+ test_a_f32_z_i64_rx$(OBJ) \
+ test_a_f32_z_ui32_x$(OBJ) \
+ test_a_f32_z_ui64_x$(OBJ) \
+ test_a_f32_z_i32_x$(OBJ) \
+ test_a_f32_z_i64_x$(OBJ) \
+ test_a_f32_z_f64$(OBJ) \
+ test_a_f32_z_extF80$(OBJ) \
+ test_a_f32_z_f128$(OBJ) \
+ test_az_f32$(OBJ) \
+ test_az_f32_rx$(OBJ) \
+ test_abz_f32$(OBJ) \
+ test_abcz_f32$(OBJ) \
+ test_ab_f32_z_bool$(OBJ) \
+ test_a_f64_z_ui32_rx$(OBJ) \
+ test_a_f64_z_ui64_rx$(OBJ) \
+ test_a_f64_z_i32_rx$(OBJ) \
+ test_a_f64_z_i64_rx$(OBJ) \
+ test_a_f64_z_ui32_x$(OBJ) \
+ test_a_f64_z_ui64_x$(OBJ) \
+ test_a_f64_z_i32_x$(OBJ) \
+ test_a_f64_z_i64_x$(OBJ) \
+ test_a_f64_z_f32$(OBJ) \
+ test_a_f64_z_extF80$(OBJ) \
+ test_a_f64_z_f128$(OBJ) \
+ test_az_f64$(OBJ) \
+ test_az_f64_rx$(OBJ) \
+ test_abz_f64$(OBJ) \
+ test_abcz_f64$(OBJ) \
+ test_ab_f64_z_bool$(OBJ) \
+ test_a_extF80_z_ui32_rx$(OBJ) \
+ test_a_extF80_z_ui64_rx$(OBJ) \
+ test_a_extF80_z_i32_rx$(OBJ) \
+ test_a_extF80_z_i64_rx$(OBJ) \
+ test_a_extF80_z_ui32_x$(OBJ) \
+ test_a_extF80_z_ui64_x$(OBJ) \
+ test_a_extF80_z_i32_x$(OBJ) \
+ test_a_extF80_z_i64_x$(OBJ) \
+ test_a_extF80_z_f32$(OBJ) \
+ test_a_extF80_z_f64$(OBJ) \
+ test_a_extF80_z_f128$(OBJ) \
+ test_az_extF80$(OBJ) \
+ test_az_extF80_rx$(OBJ) \
+ test_abz_extF80$(OBJ) \
+ test_ab_extF80_z_bool$(OBJ) \
+ test_a_f128_z_ui32_rx$(OBJ) \
+ test_a_f128_z_ui64_rx$(OBJ) \
+ test_a_f128_z_i32_rx$(OBJ) \
+ test_a_f128_z_i64_rx$(OBJ) \
+ test_a_f128_z_ui32_x$(OBJ) \
+ test_a_f128_z_ui64_x$(OBJ) \
+ test_a_f128_z_i32_x$(OBJ) \
+ test_a_f128_z_i64_x$(OBJ) \
+ test_a_f128_z_f32$(OBJ) \
+ test_a_f128_z_f64$(OBJ) \
+ test_a_f128_z_extF80$(OBJ) \
+ test_az_f128$(OBJ) \
+ test_az_f128_rx$(OBJ) \
+ test_abz_f128$(OBJ) \
+ test_abcz_f128$(OBJ) \
+ test_ab_f128_z_bool$(OBJ) \
+
+OBJS_LIB = \
+ uint128$(OBJ) \
+ fail$(OBJ) \
+ functions_common$(OBJ) \
+ functionInfos$(OBJ) \
+ standardFunctionInfos$(OBJ) \
+ random$(OBJ) \
+ genCases_common$(OBJ) \
+ $(OBJS_GENCASES) \
+ genCases_writeTestsTotal$(OBJ) \
+ verCases_common$(OBJ) \
+ verCases_writeFunctionName$(OBJ) \
+ readHex$(OBJ) \
+ writeHex$(OBJ) \
+ $(OBJS_WRITECASE) \
+ testLoops_common$(OBJ) \
+ $(OBJS_TEST) \
+
+uint128$(OBJ): $(SOURCE_DIR)/uint128.h
+fail$(OBJ): $(SOURCE_DIR)/fail.h
+functions_common$(OBJ): $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h
+functionInfos$(OBJ): $(SOURCE_DIR)/functions.h
+standardFunctionInfos$(OBJ): $(SOURCE_DIR)/functions.h
+random$(OBJ): $(SOURCE_DIR)/random.h
+genCases_common$(OBJ): $(SOURCE_DIR)/fail.h $(SOURCE_DIR)/genCases.h
+$(OBJS_GENCASES): \
+ $(SOURCE_DIR)/random.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h
+genCases_f128$(OBJ): $(SOURCE_DIR)/uint128.h
+genCases_writeTestsTotal$(OBJ): $(SOURCE_DIR)/genCases.h
+verCases_common$(OBJ): $(SOURCE_DIR)/verCases.h
+verCases_writeFunctionName$(OBJ): $(SOURCE_DIR)/verCases.h
+readHex$(OBJ): $(SOURCE_DIR)/readHex.h
+writeHex$(OBJ): $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
+$(OBJS_WRITECASE): \
+ $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/writeCase.h
+testLoops_common$(OBJ): $(SOURCE_DIR)/testLoops.h
+$(OBJS_TEST): \
+ $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h \
+ $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/testLoops.h
+$(OBJS_LIB): %$(OBJ): platform.h $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+testfloat$(LIB): $(OBJS_LIB)
+ $(MAKELIB) $^
+
+OBJS_TESTSOFTFLOAT = slowfloat$(OBJ) testsoftfloat$(OBJ)
+
+slowfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/slowfloat.c
+ $(COMPILE_SLOWFLOAT_C) $(SOURCE_DIR)/slowfloat.c
+testsoftfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/functions.h \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testsoftfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/testsoftfloat.c
+
+testsoftfloat$(EXE): $(OBJS_TESTSOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TIMESOFTFLOAT = timesoftfloat$(OBJ)
+
+timesoftfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/timesoftfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/timesoftfloat.c
+
+timesoftfloat$(EXE): $(OBJS_TIMESOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT_GEN = genLoops$(OBJ) testfloat_gen$(OBJ)
+
+genLoops$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/genLoops.h \
+ $(SOURCE_DIR)/genLoops.c
+ $(COMPILE_C) $(SOURCE_DIR)/genLoops.c
+testfloat_gen$(OBJ): \
+ $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/genLoops.h \
+ $(SOURCE_DIR)/testfloat_gen.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_gen.c
+
+testfloat_gen$(EXE): $(OBJS_TESTFLOAT_GEN) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT_VER = verLoops$(OBJ) testfloat_ver$(OBJ)
+
+verLoops$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/readHex.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
+ $(SOURCE_DIR)/verLoops.h $(SOURCE_DIR)/verLoops.c
+ $(COMPILE_C) $(SOURCE_DIR)/verLoops.c
+testfloat_ver$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/verCases.h \
+ $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/verLoops.h \
+ $(SOURCE_DIR)/testfloat_ver.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_ver.c
+
+testfloat_ver$(EXE): $(OBJS_TESTFLOAT_VER) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT = subjfloat$(OBJ) subjfloat_functions$(OBJ) testfloat$(OBJ)
+
+subjfloat$(OBJ): \
+ platform.h $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
+ $(SOURCE_DIR)/subjfloat.h $(SUBJ_SOURCE_DIR)/subjfloat.c
+ $(COMPILE_C) $(SUBJ_SOURCE_DIR)/subjfloat.c
+subjfloat_functions$(OBJ): \
+ platform.h $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/subjfloat_functions.c
+ $(COMPILE_C) $(SOURCE_DIR)/subjfloat_functions.c
+testfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h \
+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat.c
+
+testfloat$(EXE): $(OBJS_TESTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_LIB) testfloat$(LIB)
+ $(DELETE) $(OBJS_TESTSOFTFLOAT) testsoftfloat$(EXE)
+ $(DELETE) $(OBJS_TIMESOFTFLOAT) timesoftfloat$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT_GEN) testfloat_gen$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT_VER) testfloat_ver$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT) testfloat$(EXE)
+
diff --git a/build/Linux-x86_64-GCC/platform.h b/build/Linux-x86_64-GCC/platform.h
new file mode 100644
index 0000000..4b38236
--- /dev/null
+++ b/build/Linux-x86_64-GCC/platform.h
@@ -0,0 +1,42 @@
+
+/*============================================================================
+
+This C header file is part of TestFloat, Release 3, a package of programs for
+testing the correctness of floating-point arithmetic complying with the IEEE
+Standard for Floating-Point, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+(Regents). All Rights Reserved. Redistribution and use in source and binary
+forms, with or without modification, are permitted provided that the following
+conditions are met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer.
+Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer in the
+documentation and/or other materials provided with the distribution. Neither
+the name of the Regents nor the names of its contributors may be used to
+endorse or promote products derived from this software without specific prior
+written permission.
+
+IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
+OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define INLINE extern inline
+
diff --git a/build/Win32-MinGW/Makefile b/build/Win32-MinGW/Makefile
new file mode 100644
index 0000000..58f2a4e
--- /dev/null
+++ b/build/Win32-MinGW/Makefile
@@ -0,0 +1,317 @@
+
+#=============================================================================
+#
+# This Makefile is part of TestFloat, Release 3, a package of programs for
+# testing the correctness of floating-point arithmetic complying with the IEEE
+# Standard for Floating-Point, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+# (Regents). All Rights Reserved. Redistribution and use in source and
+# binary forms, with or without modification, are permitted provided that the
+# following conditions are met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer.
+# Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer in
+# the documentation and/or other materials provided with the distribution.
+# Neither the name of the Regents nor the names of its contributors may be
+# used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+# REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+# HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+# MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+#
+#=============================================================================
+
+SOURCE_DIR = ../../source
+SUBJ_SOURCE_DIR = $(SOURCE_DIR)/subj-C
+SOFTFLOAT_DIR = ../../../berkeley-softfloat-rc3
+SOFTFLOAT_INCLUDE_DIR = $(SOFTFLOAT_DIR)/source/include
+PLATFORM = Win32-MinGW
+
+SOFTFLOAT_H = \
+ $(SOFTFLOAT_INCLUDE_DIR)/softfloat_types.h \
+ $(SOFTFLOAT_INCLUDE_DIR)/softfloat.h
+SOFTFLOAT_LIB = $(SOFTFLOAT_DIR)/build/$(PLATFORM)/softfloat$(LIB)
+
+TESTFLOAT_OPTS = -DEXTFLOAT80 -DFLOAT128 -DLONG_DOUBLE_IS_EXTFLOAT80
+
+DELETE = rm -f
+C_INCLUDES = \
+ -I. -I$(SUBJ_SOURCE_DIR) -I$(SOURCE_DIR) -I$(SOFTFLOAT_INCLUDE_DIR)
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+COMPILE_SLOWFLOAT_C = \
+ gcc -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
+ $(C_INCLUDES) -O3 -o $@
+MAKELIB = ar crs $@
+LINK = gcc -lm -o $@
+
+OBJ = .o
+LIB = .a
+EXE = .exe
+
+.PHONY: all
+all: \
+ testsoftfloat$(EXE) \
+ timesoftfloat$(EXE) \
+ testfloat_gen$(EXE) \
+ testfloat_ver$(EXE) \
+ testfloat$(EXE) \
+
+OBJS_GENCASES = \
+ genCases_ui32$(OBJ) \
+ genCases_ui64$(OBJ) \
+ genCases_i32$(OBJ) \
+ genCases_i64$(OBJ) \
+ genCases_f32$(OBJ) \
+ genCases_f64$(OBJ) \
+ genCases_extF80$(OBJ) \
+ genCases_f128$(OBJ) \
+
+OBJS_WRITECASE = \
+ writeCase_a_ui32$(OBJ) \
+ writeCase_a_ui64$(OBJ) \
+ writeCase_a_f32$(OBJ) \
+ writeCase_ab_f32$(OBJ) \
+ writeCase_abc_f32$(OBJ) \
+ writeCase_a_f64$(OBJ) \
+ writeCase_ab_f64$(OBJ) \
+ writeCase_abc_f64$(OBJ) \
+ writeCase_a_extF80M$(OBJ) \
+ writeCase_ab_extF80M$(OBJ) \
+ writeCase_abc_extF80M$(OBJ) \
+ writeCase_a_f128M$(OBJ) \
+ writeCase_ab_f128M$(OBJ) \
+ writeCase_abc_f128M$(OBJ) \
+ writeCase_z_bool$(OBJ) \
+ writeCase_z_ui32$(OBJ) \
+ writeCase_z_ui64$(OBJ) \
+ writeCase_z_f32$(OBJ) \
+ writeCase_z_f64$(OBJ) \
+ writeCase_z_extF80M$(OBJ) \
+ writeCase_z_f128M$(OBJ) \
+
+OBJS_TEST = \
+ test_a_ui32_z_f32$(OBJ) \
+ test_a_ui32_z_f64$(OBJ) \
+ test_a_ui32_z_extF80$(OBJ) \
+ test_a_ui32_z_f128$(OBJ) \
+ test_a_ui64_z_f32$(OBJ) \
+ test_a_ui64_z_f64$(OBJ) \
+ test_a_ui64_z_extF80$(OBJ) \
+ test_a_ui64_z_f128$(OBJ) \
+ test_a_i32_z_f32$(OBJ) \
+ test_a_i32_z_f64$(OBJ) \
+ test_a_i32_z_extF80$(OBJ) \
+ test_a_i32_z_f128$(OBJ) \
+ test_a_i64_z_f32$(OBJ) \
+ test_a_i64_z_f64$(OBJ) \
+ test_a_i64_z_extF80$(OBJ) \
+ test_a_i64_z_f128$(OBJ) \
+ test_a_f32_z_ui32_rx$(OBJ) \
+ test_a_f32_z_ui64_rx$(OBJ) \
+ test_a_f32_z_i32_rx$(OBJ) \
+ test_a_f32_z_i64_rx$(OBJ) \
+ test_a_f32_z_ui32_x$(OBJ) \
+ test_a_f32_z_ui64_x$(OBJ) \
+ test_a_f32_z_i32_x$(OBJ) \
+ test_a_f32_z_i64_x$(OBJ) \
+ test_a_f32_z_f64$(OBJ) \
+ test_a_f32_z_extF80$(OBJ) \
+ test_a_f32_z_f128$(OBJ) \
+ test_az_f32$(OBJ) \
+ test_az_f32_rx$(OBJ) \
+ test_abz_f32$(OBJ) \
+ test_abcz_f32$(OBJ) \
+ test_ab_f32_z_bool$(OBJ) \
+ test_a_f64_z_ui32_rx$(OBJ) \
+ test_a_f64_z_ui64_rx$(OBJ) \
+ test_a_f64_z_i32_rx$(OBJ) \
+ test_a_f64_z_i64_rx$(OBJ) \
+ test_a_f64_z_ui32_x$(OBJ) \
+ test_a_f64_z_ui64_x$(OBJ) \
+ test_a_f64_z_i32_x$(OBJ) \
+ test_a_f64_z_i64_x$(OBJ) \
+ test_a_f64_z_f32$(OBJ) \
+ test_a_f64_z_extF80$(OBJ) \
+ test_a_f64_z_f128$(OBJ) \
+ test_az_f64$(OBJ) \
+ test_az_f64_rx$(OBJ) \
+ test_abz_f64$(OBJ) \
+ test_abcz_f64$(OBJ) \
+ test_ab_f64_z_bool$(OBJ) \
+ test_a_extF80_z_ui32_rx$(OBJ) \
+ test_a_extF80_z_ui64_rx$(OBJ) \
+ test_a_extF80_z_i32_rx$(OBJ) \
+ test_a_extF80_z_i64_rx$(OBJ) \
+ test_a_extF80_z_ui32_x$(OBJ) \
+ test_a_extF80_z_ui64_x$(OBJ) \
+ test_a_extF80_z_i32_x$(OBJ) \
+ test_a_extF80_z_i64_x$(OBJ) \
+ test_a_extF80_z_f32$(OBJ) \
+ test_a_extF80_z_f64$(OBJ) \
+ test_a_extF80_z_f128$(OBJ) \
+ test_az_extF80$(OBJ) \
+ test_az_extF80_rx$(OBJ) \
+ test_abz_extF80$(OBJ) \
+ test_ab_extF80_z_bool$(OBJ) \
+ test_a_f128_z_ui32_rx$(OBJ) \
+ test_a_f128_z_ui64_rx$(OBJ) \
+ test_a_f128_z_i32_rx$(OBJ) \
+ test_a_f128_z_i64_rx$(OBJ) \
+ test_a_f128_z_ui32_x$(OBJ) \
+ test_a_f128_z_ui64_x$(OBJ) \
+ test_a_f128_z_i32_x$(OBJ) \
+ test_a_f128_z_i64_x$(OBJ) \
+ test_a_f128_z_f32$(OBJ) \
+ test_a_f128_z_f64$(OBJ) \
+ test_a_f128_z_extF80$(OBJ) \
+ test_az_f128$(OBJ) \
+ test_az_f128_rx$(OBJ) \
+ test_abz_f128$(OBJ) \
+ test_abcz_f128$(OBJ) \
+ test_ab_f128_z_bool$(OBJ) \
+
+OBJS_LIB = \
+ uint128$(OBJ) \
+ fail$(OBJ) \
+ functions_common$(OBJ) \
+ functionInfos$(OBJ) \
+ standardFunctionInfos$(OBJ) \
+ random$(OBJ) \
+ genCases_common$(OBJ) \
+ $(OBJS_GENCASES) \
+ genCases_writeTestsTotal$(OBJ) \
+ verCases_common$(OBJ) \
+ verCases_writeFunctionName$(OBJ) \
+ readHex$(OBJ) \
+ writeHex$(OBJ) \
+ $(OBJS_WRITECASE) \
+ testLoops_common$(OBJ) \
+ $(OBJS_TEST) \
+
+uint128$(OBJ): $(SOURCE_DIR)/uint128.h
+fail$(OBJ): $(SOURCE_DIR)/fail.h
+functions_common$(OBJ): $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h
+functionInfos$(OBJ): $(SOURCE_DIR)/functions.h
+standardFunctionInfos$(OBJ): $(SOURCE_DIR)/functions.h
+random$(OBJ): $(SOURCE_DIR)/random.h
+genCases_common$(OBJ): $(SOURCE_DIR)/fail.h $(SOURCE_DIR)/genCases.h
+$(OBJS_GENCASES): \
+ $(SOURCE_DIR)/random.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h
+genCases_f128$(OBJ): $(SOURCE_DIR)/uint128.h
+genCases_writeTestsTotal$(OBJ): $(SOURCE_DIR)/genCases.h
+verCases_common$(OBJ): $(SOURCE_DIR)/verCases.h
+verCases_writeFunctionName$(OBJ): $(SOURCE_DIR)/verCases.h
+readHex$(OBJ): $(SOURCE_DIR)/readHex.h
+writeHex$(OBJ): $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
+$(OBJS_WRITECASE): \
+ $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/writeCase.h
+testLoops_common$(OBJ): $(SOURCE_DIR)/testLoops.h
+$(OBJS_TEST): \
+ $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h \
+ $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/testLoops.h
+$(OBJS_LIB): %$(OBJ): platform.h $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+testfloat$(LIB): $(OBJS_LIB)
+ $(MAKELIB) $^
+
+OBJS_TESTSOFTFLOAT = slowfloat$(OBJ) testsoftfloat$(OBJ)
+
+slowfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/slowfloat.c
+ $(COMPILE_SLOWFLOAT_C) $(SOURCE_DIR)/slowfloat.c
+testsoftfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/functions.h \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testsoftfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/testsoftfloat.c
+
+testsoftfloat$(EXE): $(OBJS_TESTSOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TIMESOFTFLOAT = timesoftfloat$(OBJ)
+
+timesoftfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/timesoftfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/timesoftfloat.c
+
+timesoftfloat$(EXE): $(OBJS_TIMESOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT_GEN = genLoops$(OBJ) testfloat_gen$(OBJ)
+
+genLoops$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/genLoops.h \
+ $(SOURCE_DIR)/genLoops.c
+ $(COMPILE_C) $(SOURCE_DIR)/genLoops.c
+testfloat_gen$(OBJ): \
+ $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/genLoops.h \
+ $(SOURCE_DIR)/testfloat_gen.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_gen.c
+
+testfloat_gen$(EXE): $(OBJS_TESTFLOAT_GEN) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT_VER = verLoops$(OBJ) testfloat_ver$(OBJ)
+
+verLoops$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/readHex.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
+ $(SOURCE_DIR)/verLoops.h $(SOURCE_DIR)/verLoops.c
+ $(COMPILE_C) $(SOURCE_DIR)/verLoops.c
+testfloat_ver$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/verCases.h \
+ $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/verLoops.h \
+ $(SOURCE_DIR)/testfloat_ver.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_ver.c
+
+testfloat_ver$(EXE): $(OBJS_TESTFLOAT_VER) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT = subjfloat$(OBJ) subjfloat_functions$(OBJ) testfloat$(OBJ)
+
+subjfloat$(OBJ): \
+ platform.h $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
+ $(SOURCE_DIR)/subjfloat.h $(SUBJ_SOURCE_DIR)/subjfloat.c
+ $(COMPILE_C) $(SUBJ_SOURCE_DIR)/subjfloat.c
+subjfloat_functions$(OBJ): \
+ platform.h $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/subjfloat_functions.c
+ $(COMPILE_C) $(SOURCE_DIR)/subjfloat_functions.c
+testfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h \
+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat.c
+
+testfloat$(EXE): $(OBJS_TESTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_LIB) testfloat$(LIB)
+ $(DELETE) $(OBJS_TESTSOFTFLOAT) testsoftfloat$(EXE)
+ $(DELETE) $(OBJS_TIMESOFTFLOAT) timesoftfloat$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT_GEN) testfloat_gen$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT_VER) testfloat_ver$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT) testfloat$(EXE)
+
diff --git a/build/Win32-MinGW/platform.h b/build/Win32-MinGW/platform.h
new file mode 100644
index 0000000..4b38236
--- /dev/null
+++ b/build/Win32-MinGW/platform.h
@@ -0,0 +1,42 @@
+
+/*============================================================================
+
+This C header file is part of TestFloat, Release 3, a package of programs for
+testing the correctness of floating-point arithmetic complying with the IEEE
+Standard for Floating-Point, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+(Regents). All Rights Reserved. Redistribution and use in source and binary
+forms, with or without modification, are permitted provided that the following
+conditions are met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer.
+Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer in the
+documentation and/or other materials provided with the distribution. Neither
+the name of the Regents nor the names of its contributors may be used to
+endorse or promote products derived from this software without specific prior
+written permission.
+
+IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
+OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define INLINE extern inline
+
diff --git a/build/Win64-MinGW-w64/Makefile b/build/Win64-MinGW-w64/Makefile
new file mode 100644
index 0000000..8040540
--- /dev/null
+++ b/build/Win64-MinGW-w64/Makefile
@@ -0,0 +1,317 @@
+
+#=============================================================================
+#
+# This Makefile is part of TestFloat, Release 3, a package of programs for
+# testing the correctness of floating-point arithmetic complying with the IEEE
+# Standard for Floating-Point, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+# (Regents). All Rights Reserved. Redistribution and use in source and
+# binary forms, with or without modification, are permitted provided that the
+# following conditions are met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer.
+# Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer in
+# the documentation and/or other materials provided with the distribution.
+# Neither the name of the Regents nor the names of its contributors may be
+# used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+# REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+# HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+# MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+#
+#=============================================================================
+
+SOURCE_DIR = ../../source
+SUBJ_SOURCE_DIR = $(SOURCE_DIR)/subj-C
+SOFTFLOAT_DIR = ../../../berkeley-softfloat-rc3
+SOFTFLOAT_INCLUDE_DIR = $(SOFTFLOAT_DIR)/source/include
+PLATFORM = Win64-MinGW-w64
+
+SOFTFLOAT_H = \
+ $(SOFTFLOAT_INCLUDE_DIR)/softfloat_types.h \
+ $(SOFTFLOAT_INCLUDE_DIR)/softfloat.h
+SOFTFLOAT_LIB = $(SOFTFLOAT_DIR)/build/$(PLATFORM)/softfloat$(LIB)
+
+TESTFLOAT_OPTS = -DEXTFLOAT80 -DFLOAT128 -DLONG_DOUBLE_IS_EXTFLOAT80
+
+DELETE = rm -f
+C_INCLUDES = \
+ -I. -I$(SUBJ_SOURCE_DIR) -I$(SOURCE_DIR) -I$(SOFTFLOAT_INCLUDE_DIR)
+COMPILE_C = \
+ x86_64-w64-mingw32-gcc -c -Werror-implicit-function-declaration \
+ $(TESTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+COMPILE_SLOWFLOAT_C = \
+ x86_64-w64-mingw32-gcc -c -Werror-implicit-function-declaration \
+ $(TESTFLOAT_OPTS) $(C_INCLUDES) -O3 -o $@
+MAKELIB = x86_64-w64-mingw32-ar crs $@
+LINK = x86_64-w64-mingw32-gcc -lm -o $@
+
+OBJ = .o
+LIB = .a
+EXE = .exe
+
+.PHONY: all
+all: \
+ testsoftfloat$(EXE) \
+ timesoftfloat$(EXE) \
+ testfloat_gen$(EXE) \
+ testfloat_ver$(EXE) \
+ testfloat$(EXE) \
+
+OBJS_GENCASES = \
+ genCases_ui32$(OBJ) \
+ genCases_ui64$(OBJ) \
+ genCases_i32$(OBJ) \
+ genCases_i64$(OBJ) \
+ genCases_f32$(OBJ) \
+ genCases_f64$(OBJ) \
+ genCases_extF80$(OBJ) \
+ genCases_f128$(OBJ) \
+
+OBJS_WRITECASE = \
+ writeCase_a_ui32$(OBJ) \
+ writeCase_a_ui64$(OBJ) \
+ writeCase_a_f32$(OBJ) \
+ writeCase_ab_f32$(OBJ) \
+ writeCase_abc_f32$(OBJ) \
+ writeCase_a_f64$(OBJ) \
+ writeCase_ab_f64$(OBJ) \
+ writeCase_abc_f64$(OBJ) \
+ writeCase_a_extF80M$(OBJ) \
+ writeCase_ab_extF80M$(OBJ) \
+ writeCase_abc_extF80M$(OBJ) \
+ writeCase_a_f128M$(OBJ) \
+ writeCase_ab_f128M$(OBJ) \
+ writeCase_abc_f128M$(OBJ) \
+ writeCase_z_bool$(OBJ) \
+ writeCase_z_ui32$(OBJ) \
+ writeCase_z_ui64$(OBJ) \
+ writeCase_z_f32$(OBJ) \
+ writeCase_z_f64$(OBJ) \
+ writeCase_z_extF80M$(OBJ) \
+ writeCase_z_f128M$(OBJ) \
+
+OBJS_TEST = \
+ test_a_ui32_z_f32$(OBJ) \
+ test_a_ui32_z_f64$(OBJ) \
+ test_a_ui32_z_extF80$(OBJ) \
+ test_a_ui32_z_f128$(OBJ) \
+ test_a_ui64_z_f32$(OBJ) \
+ test_a_ui64_z_f64$(OBJ) \
+ test_a_ui64_z_extF80$(OBJ) \
+ test_a_ui64_z_f128$(OBJ) \
+ test_a_i32_z_f32$(OBJ) \
+ test_a_i32_z_f64$(OBJ) \
+ test_a_i32_z_extF80$(OBJ) \
+ test_a_i32_z_f128$(OBJ) \
+ test_a_i64_z_f32$(OBJ) \
+ test_a_i64_z_f64$(OBJ) \
+ test_a_i64_z_extF80$(OBJ) \
+ test_a_i64_z_f128$(OBJ) \
+ test_a_f32_z_ui32_rx$(OBJ) \
+ test_a_f32_z_ui64_rx$(OBJ) \
+ test_a_f32_z_i32_rx$(OBJ) \
+ test_a_f32_z_i64_rx$(OBJ) \
+ test_a_f32_z_ui32_x$(OBJ) \
+ test_a_f32_z_ui64_x$(OBJ) \
+ test_a_f32_z_i32_x$(OBJ) \
+ test_a_f32_z_i64_x$(OBJ) \
+ test_a_f32_z_f64$(OBJ) \
+ test_a_f32_z_extF80$(OBJ) \
+ test_a_f32_z_f128$(OBJ) \
+ test_az_f32$(OBJ) \
+ test_az_f32_rx$(OBJ) \
+ test_abz_f32$(OBJ) \
+ test_abcz_f32$(OBJ) \
+ test_ab_f32_z_bool$(OBJ) \
+ test_a_f64_z_ui32_rx$(OBJ) \
+ test_a_f64_z_ui64_rx$(OBJ) \
+ test_a_f64_z_i32_rx$(OBJ) \
+ test_a_f64_z_i64_rx$(OBJ) \
+ test_a_f64_z_ui32_x$(OBJ) \
+ test_a_f64_z_ui64_x$(OBJ) \
+ test_a_f64_z_i32_x$(OBJ) \
+ test_a_f64_z_i64_x$(OBJ) \
+ test_a_f64_z_f32$(OBJ) \
+ test_a_f64_z_extF80$(OBJ) \
+ test_a_f64_z_f128$(OBJ) \
+ test_az_f64$(OBJ) \
+ test_az_f64_rx$(OBJ) \
+ test_abz_f64$(OBJ) \
+ test_abcz_f64$(OBJ) \
+ test_ab_f64_z_bool$(OBJ) \
+ test_a_extF80_z_ui32_rx$(OBJ) \
+ test_a_extF80_z_ui64_rx$(OBJ) \
+ test_a_extF80_z_i32_rx$(OBJ) \
+ test_a_extF80_z_i64_rx$(OBJ) \
+ test_a_extF80_z_ui32_x$(OBJ) \
+ test_a_extF80_z_ui64_x$(OBJ) \
+ test_a_extF80_z_i32_x$(OBJ) \
+ test_a_extF80_z_i64_x$(OBJ) \
+ test_a_extF80_z_f32$(OBJ) \
+ test_a_extF80_z_f64$(OBJ) \
+ test_a_extF80_z_f128$(OBJ) \
+ test_az_extF80$(OBJ) \
+ test_az_extF80_rx$(OBJ) \
+ test_abz_extF80$(OBJ) \
+ test_ab_extF80_z_bool$(OBJ) \
+ test_a_f128_z_ui32_rx$(OBJ) \
+ test_a_f128_z_ui64_rx$(OBJ) \
+ test_a_f128_z_i32_rx$(OBJ) \
+ test_a_f128_z_i64_rx$(OBJ) \
+ test_a_f128_z_ui32_x$(OBJ) \
+ test_a_f128_z_ui64_x$(OBJ) \
+ test_a_f128_z_i32_x$(OBJ) \
+ test_a_f128_z_i64_x$(OBJ) \
+ test_a_f128_z_f32$(OBJ) \
+ test_a_f128_z_f64$(OBJ) \
+ test_a_f128_z_extF80$(OBJ) \
+ test_az_f128$(OBJ) \
+ test_az_f128_rx$(OBJ) \
+ test_abz_f128$(OBJ) \
+ test_abcz_f128$(OBJ) \
+ test_ab_f128_z_bool$(OBJ) \
+
+OBJS_LIB = \
+ uint128$(OBJ) \
+ fail$(OBJ) \
+ functions_common$(OBJ) \
+ functionInfos$(OBJ) \
+ standardFunctionInfos$(OBJ) \
+ random$(OBJ) \
+ genCases_common$(OBJ) \
+ $(OBJS_GENCASES) \
+ genCases_writeTestsTotal$(OBJ) \
+ verCases_common$(OBJ) \
+ verCases_writeFunctionName$(OBJ) \
+ readHex$(OBJ) \
+ writeHex$(OBJ) \
+ $(OBJS_WRITECASE) \
+ testLoops_common$(OBJ) \
+ $(OBJS_TEST) \
+
+uint128$(OBJ): $(SOURCE_DIR)/uint128.h
+fail$(OBJ): $(SOURCE_DIR)/fail.h
+functions_common$(OBJ): $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h
+functionInfos$(OBJ): $(SOURCE_DIR)/functions.h
+standardFunctionInfos$(OBJ): $(SOURCE_DIR)/functions.h
+random$(OBJ): $(SOURCE_DIR)/random.h
+genCases_common$(OBJ): $(SOURCE_DIR)/fail.h $(SOURCE_DIR)/genCases.h
+$(OBJS_GENCASES): \
+ $(SOURCE_DIR)/random.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h
+genCases_f128$(OBJ): $(SOURCE_DIR)/uint128.h
+genCases_writeTestsTotal$(OBJ): $(SOURCE_DIR)/genCases.h
+verCases_common$(OBJ): $(SOURCE_DIR)/verCases.h
+verCases_writeFunctionName$(OBJ): $(SOURCE_DIR)/verCases.h
+readHex$(OBJ): $(SOURCE_DIR)/readHex.h
+writeHex$(OBJ): $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
+$(OBJS_WRITECASE): \
+ $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/writeCase.h
+testLoops_common$(OBJ): $(SOURCE_DIR)/testLoops.h
+$(OBJS_TEST): \
+ $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h \
+ $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/testLoops.h
+$(OBJS_LIB): %$(OBJ): platform.h $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+testfloat$(LIB): $(OBJS_LIB)
+ $(MAKELIB) $^
+
+OBJS_TESTSOFTFLOAT = slowfloat$(OBJ) testsoftfloat$(OBJ)
+
+slowfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/slowfloat.c
+ $(COMPILE_SLOWFLOAT_C) $(SOURCE_DIR)/slowfloat.c
+testsoftfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/functions.h \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testsoftfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/testsoftfloat.c
+
+testsoftfloat$(EXE): $(OBJS_TESTSOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TIMESOFTFLOAT = timesoftfloat$(OBJ)
+
+timesoftfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/timesoftfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/timesoftfloat.c
+
+timesoftfloat$(EXE): $(OBJS_TIMESOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT_GEN = genLoops$(OBJ) testfloat_gen$(OBJ)
+
+genLoops$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/genLoops.h \
+ $(SOURCE_DIR)/genLoops.c
+ $(COMPILE_C) $(SOURCE_DIR)/genLoops.c
+testfloat_gen$(OBJ): \
+ $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/genLoops.h \
+ $(SOURCE_DIR)/testfloat_gen.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_gen.c
+
+testfloat_gen$(EXE): $(OBJS_TESTFLOAT_GEN) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT_VER = verLoops$(OBJ) testfloat_ver$(OBJ)
+
+verLoops$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/readHex.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
+ $(SOURCE_DIR)/verLoops.h $(SOURCE_DIR)/verLoops.c
+ $(COMPILE_C) $(SOURCE_DIR)/verLoops.c
+testfloat_ver$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/verCases.h \
+ $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/verLoops.h \
+ $(SOURCE_DIR)/testfloat_ver.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_ver.c
+
+testfloat_ver$(EXE): $(OBJS_TESTFLOAT_VER) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT = subjfloat$(OBJ) subjfloat_functions$(OBJ) testfloat$(OBJ)
+
+subjfloat$(OBJ): \
+ platform.h $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
+ $(SOURCE_DIR)/subjfloat.h $(SUBJ_SOURCE_DIR)/subjfloat.c
+ $(COMPILE_C) $(SUBJ_SOURCE_DIR)/subjfloat.c
+subjfloat_functions$(OBJ): \
+ platform.h $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/subjfloat_functions.c
+ $(COMPILE_C) $(SOURCE_DIR)/subjfloat_functions.c
+testfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h \
+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat.c
+
+testfloat$(EXE): $(OBJS_TESTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_LIB) testfloat$(LIB)
+ $(DELETE) $(OBJS_TESTSOFTFLOAT) testsoftfloat$(EXE)
+ $(DELETE) $(OBJS_TIMESOFTFLOAT) timesoftfloat$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT_GEN) testfloat_gen$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT_VER) testfloat_ver$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT) testfloat$(EXE)
+
diff --git a/build/Win64-MinGW-w64/platform.h b/build/Win64-MinGW-w64/platform.h
new file mode 100644
index 0000000..4b38236
--- /dev/null
+++ b/build/Win64-MinGW-w64/platform.h
@@ -0,0 +1,42 @@
+
+/*============================================================================
+
+This C header file is part of TestFloat, Release 3, a package of programs for
+testing the correctness of floating-point arithmetic complying with the IEEE
+Standard for Floating-Point, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+(Regents). All Rights Reserved. Redistribution and use in source and binary
+forms, with or without modification, are permitted provided that the following
+conditions are met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer.
+Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer in the
+documentation and/or other materials provided with the distribution. Neither
+the name of the Regents nor the names of its contributors may be used to
+endorse or promote products derived from this software without specific prior
+written permission.
+
+IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
+OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define INLINE extern inline
+
diff --git a/build/template/Makefile b/build/template/Makefile
new file mode 100644
index 0000000..69ae812
--- /dev/null
+++ b/build/template/Makefile
@@ -0,0 +1,315 @@
+
+#=============================================================================
+#
+# This Makefile template is part of TestFloat, Release 3, a package of
+# programs for testing the correctness of floating-point arithmetic complying
+# with the IEEE Standard for Floating-Point, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+# (Regents). All Rights Reserved. Redistribution and use in source and
+# binary forms, with or without modification, are permitted provided that the
+# following conditions are met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer.
+# Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions, and the following two paragraphs of disclaimer in
+# the documentation and/or other materials provided with the distribution.
+# Neither the name of the Regents nor the names of its contributors may be
+# used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+# REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+# HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+# MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+#
+#=============================================================================
+
+# Edit lines marked with `==>'. See "TestFloat-source.html".
+
+==> SOURCE_DIR = ../../source
+==> SUBJ_SOURCE_DIR = $(SOURCE_DIR)/subj-C
+==> SOFTFLOAT_DIR = ../../../SoftFloat-3
+==> SOFTFLOAT_INCLUDE_DIR = $(SOFTFLOAT_DIR)/source/include
+==> PLATFORM = Win32-MinGW
+
+==> SOFTFLOAT_H = \
+==> $(SOFTFLOAT_INCLUDE_DIR)/softfloat_types.h \
+==> $(SOFTFLOAT_INCLUDE_DIR)/softfloat.h
+==> SOFTFLOAT_LIB = $(SOFTFLOAT_DIR)/build/$(PLATFORM)/softfloat$(LIB)
+
+==> TESTFLOAT_OPTS = -DEXTFLOAT80 -DFLOAT128 -DLONG_DOUBLE_IS_EXTFLOAT80
+
+==> DELETE = rm -f
+==> C_INCLUDES = \
+==> -I. -I$(SUBJ_SOURCE_DIR) -I$(SOURCE_DIR) -I$(SOFTFLOAT_INCLUDE_DIR)
+==> COMPILE_C = cc -c $(TESTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+==> COMPILE_SLOWFLOAT_C = cc -c $(TESTFLOAT_OPTS) $(C_INCLUDES) -O3 -o $@
+==> MAKELIB = ar crs $@
+==> LINK = ld -o $@
+
+==> OBJ = .o
+==> LIB = .a
+==> EXE = .exe
+
+.PHONY: all
+all: \
+ testsoftfloat$(EXE) \
+ timesoftfloat$(EXE) \
+ testfloat_gen$(EXE) \
+ testfloat_ver$(EXE) \
+ testfloat$(EXE) \
+
+OBJS_GENCASES = \
+ genCases_ui32$(OBJ) \
+ genCases_ui64$(OBJ) \
+ genCases_i32$(OBJ) \
+ genCases_i64$(OBJ) \
+ genCases_f32$(OBJ) \
+ genCases_f64$(OBJ) \
+ genCases_extF80$(OBJ) \
+ genCases_f128$(OBJ) \
+
+OBJS_WRITECASE = \
+ writeCase_a_ui32$(OBJ) \
+ writeCase_a_ui64$(OBJ) \
+ writeCase_a_f32$(OBJ) \
+ writeCase_ab_f32$(OBJ) \
+ writeCase_abc_f32$(OBJ) \
+ writeCase_a_f64$(OBJ) \
+ writeCase_ab_f64$(OBJ) \
+ writeCase_abc_f64$(OBJ) \
+ writeCase_a_extF80M$(OBJ) \
+ writeCase_ab_extF80M$(OBJ) \
+ writeCase_abc_extF80M$(OBJ) \
+ writeCase_a_f128M$(OBJ) \
+ writeCase_ab_f128M$(OBJ) \
+ writeCase_abc_f128M$(OBJ) \
+ writeCase_z_bool$(OBJ) \
+ writeCase_z_ui32$(OBJ) \
+ writeCase_z_ui64$(OBJ) \
+ writeCase_z_f32$(OBJ) \
+ writeCase_z_f64$(OBJ) \
+ writeCase_z_extF80M$(OBJ) \
+ writeCase_z_f128M$(OBJ) \
+
+OBJS_TEST = \
+ test_a_ui32_z_f32$(OBJ) \
+ test_a_ui32_z_f64$(OBJ) \
+ test_a_ui32_z_extF80$(OBJ) \
+ test_a_ui32_z_f128$(OBJ) \
+ test_a_ui64_z_f32$(OBJ) \
+ test_a_ui64_z_f64$(OBJ) \
+ test_a_ui64_z_extF80$(OBJ) \
+ test_a_ui64_z_f128$(OBJ) \
+ test_a_i32_z_f32$(OBJ) \
+ test_a_i32_z_f64$(OBJ) \
+ test_a_i32_z_extF80$(OBJ) \
+ test_a_i32_z_f128$(OBJ) \
+ test_a_i64_z_f32$(OBJ) \
+ test_a_i64_z_f64$(OBJ) \
+ test_a_i64_z_extF80$(OBJ) \
+ test_a_i64_z_f128$(OBJ) \
+ test_a_f32_z_ui32_rx$(OBJ) \
+ test_a_f32_z_ui64_rx$(OBJ) \
+ test_a_f32_z_i32_rx$(OBJ) \
+ test_a_f32_z_i64_rx$(OBJ) \
+ test_a_f32_z_ui32_x$(OBJ) \
+ test_a_f32_z_ui64_x$(OBJ) \
+ test_a_f32_z_i32_x$(OBJ) \
+ test_a_f32_z_i64_x$(OBJ) \
+ test_a_f32_z_f64$(OBJ) \
+ test_a_f32_z_extF80$(OBJ) \
+ test_a_f32_z_f128$(OBJ) \
+ test_az_f32$(OBJ) \
+ test_az_f32_rx$(OBJ) \
+ test_abz_f32$(OBJ) \
+ test_abcz_f32$(OBJ) \
+ test_ab_f32_z_bool$(OBJ) \
+ test_a_f64_z_ui32_rx$(OBJ) \
+ test_a_f64_z_ui64_rx$(OBJ) \
+ test_a_f64_z_i32_rx$(OBJ) \
+ test_a_f64_z_i64_rx$(OBJ) \
+ test_a_f64_z_ui32_x$(OBJ) \
+ test_a_f64_z_ui64_x$(OBJ) \
+ test_a_f64_z_i32_x$(OBJ) \
+ test_a_f64_z_i64_x$(OBJ) \
+ test_a_f64_z_f32$(OBJ) \
+ test_a_f64_z_extF80$(OBJ) \
+ test_a_f64_z_f128$(OBJ) \
+ test_az_f64$(OBJ) \
+ test_az_f64_rx$(OBJ) \
+ test_abz_f64$(OBJ) \
+ test_abcz_f64$(OBJ) \
+ test_ab_f64_z_bool$(OBJ) \
+ test_a_extF80_z_ui32_rx$(OBJ) \
+ test_a_extF80_z_ui64_rx$(OBJ) \
+ test_a_extF80_z_i32_rx$(OBJ) \
+ test_a_extF80_z_i64_rx$(OBJ) \
+ test_a_extF80_z_ui32_x$(OBJ) \
+ test_a_extF80_z_ui64_x$(OBJ) \
+ test_a_extF80_z_i32_x$(OBJ) \
+ test_a_extF80_z_i64_x$(OBJ) \
+ test_a_extF80_z_f32$(OBJ) \
+ test_a_extF80_z_f64$(OBJ) \
+ test_a_extF80_z_f128$(OBJ) \
+ test_az_extF80$(OBJ) \
+ test_az_extF80_rx$(OBJ) \
+ test_abz_extF80$(OBJ) \
+ test_ab_extF80_z_bool$(OBJ) \
+ test_a_f128_z_ui32_rx$(OBJ) \
+ test_a_f128_z_ui64_rx$(OBJ) \
+ test_a_f128_z_i32_rx$(OBJ) \
+ test_a_f128_z_i64_rx$(OBJ) \
+ test_a_f128_z_ui32_x$(OBJ) \
+ test_a_f128_z_ui64_x$(OBJ) \
+ test_a_f128_z_i32_x$(OBJ) \
+ test_a_f128_z_i64_x$(OBJ) \
+ test_a_f128_z_f32$(OBJ) \
+ test_a_f128_z_f64$(OBJ) \
+ test_a_f128_z_extF80$(OBJ) \
+ test_az_f128$(OBJ) \
+ test_az_f128_rx$(OBJ) \
+ test_abz_f128$(OBJ) \
+ test_abcz_f128$(OBJ) \
+ test_ab_f128_z_bool$(OBJ) \
+
+OBJS_LIB = \
+ uint128$(OBJ) \
+ fail$(OBJ) \
+ functions_common$(OBJ) \
+ functionInfos$(OBJ) \
+ standardFunctionInfos$(OBJ) \
+ random$(OBJ) \
+ genCases_common$(OBJ) \
+ $(OBJS_GENCASES) \
+ genCases_writeTestsTotal$(OBJ) \
+ verCases_common$(OBJ) \
+ verCases_writeFunctionName$(OBJ) \
+ readHex$(OBJ) \
+ writeHex$(OBJ) \
+ $(OBJS_WRITECASE) \
+ testLoops_common$(OBJ) \
+ $(OBJS_TEST) \
+
+uint128$(OBJ): $(SOURCE_DIR)/uint128.h
+fail$(OBJ): $(SOURCE_DIR)/fail.h
+functions_common$(OBJ): $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h
+functionInfos$(OBJ): $(SOURCE_DIR)/functions.h
+standardFunctionInfos$(OBJ): $(SOURCE_DIR)/functions.h
+random$(OBJ): $(SOURCE_DIR)/random.h
+genCases_common$(OBJ): $(SOURCE_DIR)/fail.h $(SOURCE_DIR)/genCases.h
+$(OBJS_GENCASES): \
+ $(SOURCE_DIR)/random.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h
+genCases_f128$(OBJ): $(SOURCE_DIR)/uint128.h
+genCases_writeTestsTotal$(OBJ): $(SOURCE_DIR)/genCases.h
+verCases_common$(OBJ): $(SOURCE_DIR)/verCases.h
+verCases_writeFunctionName$(OBJ): $(SOURCE_DIR)/verCases.h
+readHex$(OBJ): $(SOURCE_DIR)/readHex.h
+writeHex$(OBJ): $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
+$(OBJS_WRITECASE): \
+ $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/writeCase.h
+testLoops_common$(OBJ): $(SOURCE_DIR)/testLoops.h
+$(OBJS_TEST): \
+ $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h \
+ $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/testLoops.h
+$(OBJS_LIB): %$(OBJ): platform.h $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+testfloat$(LIB): $(OBJS_LIB)
+ $(MAKELIB) $^
+
+OBJS_TESTSOFTFLOAT = slowfloat$(OBJ) testsoftfloat$(OBJ)
+
+slowfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/slowfloat.c
+ $(COMPILE_SLOWFLOAT_C) $(SOURCE_DIR)/slowfloat.c
+testsoftfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/functions.h \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testsoftfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/testsoftfloat.c
+
+testsoftfloat$(EXE): $(OBJS_TESTSOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TIMESOFTFLOAT = timesoftfloat$(OBJ)
+
+timesoftfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/timesoftfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/timesoftfloat.c
+
+timesoftfloat$(EXE): $(OBJS_TIMESOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT_GEN = genLoops$(OBJ) testfloat_gen$(OBJ)
+
+genLoops$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/genLoops.h \
+ $(SOURCE_DIR)/genLoops.c
+ $(COMPILE_C) $(SOURCE_DIR)/genLoops.c
+testfloat_gen$(OBJ): \
+ $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h \
+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/genLoops.h \
+ $(SOURCE_DIR)/testfloat_gen.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_gen.c
+
+testfloat_gen$(EXE): $(OBJS_TESTFLOAT_GEN) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT_VER = verLoops$(OBJ) testfloat_ver$(OBJ)
+
+verLoops$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/readHex.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
+ $(SOURCE_DIR)/verLoops.h $(SOURCE_DIR)/verLoops.c
+ $(COMPILE_C) $(SOURCE_DIR)/verLoops.c
+testfloat_ver$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/verCases.h \
+ $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/verLoops.h \
+ $(SOURCE_DIR)/testfloat_ver.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_ver.c
+
+testfloat_ver$(EXE): $(OBJS_TESTFLOAT_VER) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+OBJS_TESTFLOAT = subjfloat$(OBJ) subjfloat_functions$(OBJ) testfloat$(OBJ)
+
+subjfloat$(OBJ): \
+ platform.h $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
+ $(SOURCE_DIR)/subjfloat.h $(SUBJ_SOURCE_DIR)/subjfloat.c
+ $(COMPILE_C) $(SUBJ_SOURCE_DIR)/subjfloat.c
+subjfloat_functions$(OBJ): \
+ platform.h $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/subjfloat_functions.c
+ $(COMPILE_C) $(SOURCE_DIR)/subjfloat_functions.c
+testfloat$(OBJ): \
+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
+ $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h \
+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testfloat.c
+ $(COMPILE_C) $(SOURCE_DIR)/testfloat.c
+
+testfloat$(EXE): $(OBJS_TESTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
+ $(LINK) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_LIB) testfloat$(LIB)
+ $(DELETE) $(OBJS_TESTSOFTFLOAT) testsoftfloat$(EXE)
+ $(DELETE) $(OBJS_TIMESOFTFLOAT) timesoftfloat$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT_GEN) testfloat_gen$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT_VER) testfloat_ver$(EXE)
+ $(DELETE) $(OBJS_TESTFLOAT) testfloat$(EXE)
+
diff --git a/build/template/platform.h b/build/template/platform.h
new file mode 100644
index 0000000..cc8f97b
--- /dev/null
+++ b/build/template/platform.h
@@ -0,0 +1,44 @@
+
+/*============================================================================
+
+This C header template is part of TestFloat, Release 3, a package of programs
+for testing the correctness of floating-point arithmetic complying with the
+IEEE Standard for Floating-Point, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
+(Regents). All Rights Reserved. Redistribution and use in source and binary
+forms, with or without modification, are permitted provided that the following
+conditions are met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer.
+Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions, and the following two paragraphs of disclaimer in the
+documentation and/or other materials provided with the distribution. Neither
+the name of the Regents nor the names of its contributors may be used to
+endorse or promote products derived from this software without specific prior
+written permission.
+
+IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
+OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+=============================================================================*/
+
+// Edit lines marked with `==>'. See "TestFloat-source.html".
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define INLINE inline
+
diff --git a/doc/TestFloat-source.html b/doc/TestFloat-source.html
index a875479..9c42e59 100644
--- a/doc/TestFloat-source.html
+++ b/doc/TestFloat-source.html
@@ -60,7 +60,7 @@ For basic documentation about TestFloat refer to
<P>
The source code for TestFloat is intended to be relatively machine-independent.
Most programs in the TestFloat package should be compilable with any
-ISO-standard C compiler that also supports <NOBR>64-bit</NOBR> integers.
+ISO-Standard C compiler that also supports <NOBR>64-bit</NOBR> integers.
If the all-in-one <CODE>testfloat</CODE> program will be used to test a new
floating-point implementation, additional effort will likely be required to
retarget that program to invoke the new floating-point operations.
@@ -205,8 +205,10 @@ The supplied directory structure is as follows:
subj-C
build
template
- Win32-MinGW
Linux-386-GCC
+ Linux-x86_64-GCC
+ Win32-MinGW
+ Win64-MinGW-w64
</PRE>
The majority of the TestFloat sources are provided in the <CODE>source</CODE>
directory.
@@ -240,9 +242,11 @@ Ignoring the <CODE>template</CODE> directory, the supplied target directories
are intended to follow a naming system of
<NOBR><CODE>&lt;execution-environment&gt;-&lt;compiler&gt;</CODE></NOBR>.
For the example targets,
-<NOBR><CODE>&lt;execution-environment&gt;</CODE></NOBR> is <CODE>Win32</CODE>
-and <CODE>Linux-386</CODE>, and <NOBR><CODE>&lt;compiler&gt;</CODE></NOBR> is
-<CODE>MinGW</CODE> and <CODE>GCC</CODE>, respectively.
+<NOBR><CODE>&lt;execution-environment&gt;</CODE></NOBR> is
+<NOBR><CODE>Linux-386</CODE></NOBR>, <NOBR><CODE>Linux-x86_64</CODE></NOBR>,
+<CODE>Win32</CODE>, or <CODE>Win64</CODE>, and
+<NOBR><CODE>&lt;compiler&gt;</CODE></NOBR> is <CODE>GCC</CODE>,
+<CODE>MinGW</CODE>, or <NOBR><CODE>MinGW-w64</CODE></NOBR>.
</P>
<P>
@@ -311,7 +315,7 @@ are changed.
<DT><CODE>SOFTFLOAT_LIB</CODE>
<DD>
The full path of the compiled SoftFloat library (usually
-<CODE>softfloat.a</CODE>).
+<CODE>softfloat.a</CODE> or <CODE>libsoftfloat.a</CODE>).
</DL>
</BLOCKQUOTE>
</P>
@@ -521,7 +525,7 @@ be, shortening the time before random number sequences repeat, and possibly
wasting time as well.
If <CODE>rand</CODE> is better on a given target platform, or if another,
better random number generator is available (such as <CODE>rand48</CODE> on
-most UNIX-derived systems), TestFloat can be improved by overriding the given
+UNIX-derived systems), TestFloat can be improved by overriding the given
<CODE>random.c</CODE> with a target-specific one.
</P>
diff --git a/source/genCases.h b/source/genCases.h
index d186592..56ef52a 100644
--- a/source/genCases.h
+++ b/source/genCases.h
@@ -45,19 +45,19 @@ extern bool genCases_done;
void genCases_ui32_a_init( void );
void genCases_ui32_a_next( void );
-extern uint_fast32_t genCases_ui32_a;
+extern uint32_t genCases_ui32_a;
void genCases_ui64_a_init( void );
void genCases_ui64_a_next( void );
-extern uint_fast64_t genCases_ui64_a;
+extern uint64_t genCases_ui64_a;
void genCases_i32_a_init( void );
void genCases_i32_a_next( void );
-extern int_fast32_t genCases_i32_a;
+extern int32_t genCases_i32_a;
void genCases_i64_a_init( void );
void genCases_i64_a_next( void );
-extern int_fast64_t genCases_i64_a;
+extern int64_t genCases_i64_a;
void genCases_f32_a_init( void );
void genCases_f32_a_next( void );
diff --git a/source/genCases_i32.c b/source/genCases_i32.c
index bc3287a..2e03881 100644
--- a/source/genCases_i32.c
+++ b/source/genCases_i32.c
@@ -173,7 +173,7 @@ static const uint32_t i32P1[i32NumP1] = {
0x00000003
};
-static int_fast32_t i32NextP1( struct sequence *sequencePtr )
+static int32_t i32NextP1( struct sequence *sequencePtr )
{
int termNum;
union ui32_i32 uZ;
@@ -192,7 +192,7 @@ static int_fast32_t i32NextP1( struct sequence *sequencePtr )
static const int_fast32_t i32NumP2 = (i32NumP1 * i32NumP1 + i32NumP1) / 2;
-static int_fast32_t i32NextP2( struct sequence *sequencePtr )
+static int32_t i32NextP2( struct sequence *sequencePtr )
{
int term1Num, term2Num;
union ui32_i32 uZ;
@@ -215,7 +215,7 @@ static int_fast32_t i32NextP2( struct sequence *sequencePtr )
}
-static int_fast32_t i32RandomP3( void )
+static int32_t i32RandomP3( void )
{
union ui32_i32 uZ;
@@ -290,7 +290,7 @@ static const uint32_t i32PInfWeightOffsets[i32NumPInfWeightMasks] = {
0xFFFFFFF8
};
-static int_fast32_t i32RandomPInf( void )
+static int32_t i32RandomPInf( void )
{
int weightMaskNum;
union ui32_i32 uZ;
@@ -306,7 +306,7 @@ static int_fast32_t i32RandomPInf( void )
static struct sequence sequenceA;
static int subcase;
-int_fast32_t genCases_i32_a;
+int32_t genCases_i32_a;
void genCases_i32_a_init( void )
{
diff --git a/source/genCases_i64.c b/source/genCases_i64.c
index b98df8d..f912570 100644
--- a/source/genCases_i64.c
+++ b/source/genCases_i64.c
@@ -301,7 +301,7 @@ static const uint64_t i64P1[i64NumP1] = {
UINT64_C( 0x0000000000000003 )
};
-static int_fast64_t i64NextP1( struct sequence *sequencePtr )
+static int64_t i64NextP1( struct sequence *sequencePtr )
{
int termNum;
union ui64_i64 uZ;
@@ -320,7 +320,7 @@ static int_fast64_t i64NextP1( struct sequence *sequencePtr )
static const int_fast64_t i64NumP2 = (i64NumP1 * i64NumP1 + i64NumP1) / 2;
-static int_fast64_t i64NextP2( struct sequence *sequencePtr )
+static int64_t i64NextP2( struct sequence *sequencePtr )
{
int term1Num, term2Num;
union ui64_i64 uZ;
@@ -343,7 +343,7 @@ static int_fast64_t i64NextP2( struct sequence *sequencePtr )
}
-static int_fast64_t i64RandomP3( void )
+static int64_t i64RandomP3( void )
{
union ui64_i64 uZ;
@@ -482,7 +482,7 @@ static const uint64_t i64PInfWeightOffsets[i64NumPInfWeightMasks] = {
UINT64_C( 0xFFFFFFFFFFFFFFF8 )
};
-static int_fast64_t i64RandomPInf( void )
+static int64_t i64RandomPInf( void )
{
int weightMaskNum;
union ui64_i64 uZ;
@@ -498,7 +498,7 @@ static int_fast64_t i64RandomPInf( void )
static struct sequence sequenceA;
static int subcase;
-int_fast64_t genCases_i64_a;
+int64_t genCases_i64_a;
void genCases_i64_a_init( void )
{
diff --git a/source/genCases_ui32.c b/source/genCases_ui32.c
index 3b890cb..cbc6e58 100644
--- a/source/genCases_ui32.c
+++ b/source/genCases_ui32.c
@@ -171,10 +171,10 @@ static const uint32_t ui32P1[ui32NumP1] = {
0x00000003
};
-static uint_fast32_t ui32NextP1( struct sequence *sequencePtr )
+static uint32_t ui32NextP1( struct sequence *sequencePtr )
{
int termNum;
- uint_fast32_t z;
+ uint32_t z;
termNum = sequencePtr->term1Num;
z = ui32P1[termNum];
@@ -190,10 +190,10 @@ static uint_fast32_t ui32NextP1( struct sequence *sequencePtr )
static const uint_fast32_t ui32NumP2 = (ui32NumP1 * ui32NumP1 + ui32NumP1) / 2;
-static uint_fast32_t ui32NextP2( struct sequence *sequencePtr )
+static uint32_t ui32NextP2( struct sequence *sequencePtr )
{
int term1Num, term2Num;
- uint_fast32_t z;
+ uint32_t z;
term2Num = sequencePtr->term2Num;
term1Num = sequencePtr->term1Num;
@@ -213,7 +213,7 @@ static uint_fast32_t ui32NextP2( struct sequence *sequencePtr )
}
-static uint_fast32_t ui32RandomP3( void )
+static uint32_t ui32RandomP3( void )
{
return
@@ -255,7 +255,7 @@ static const uint32_t ui32PInfWeightMasks[ui32NumPInfWeightMasks] = {
0x0000000F
};
-static uint_fast32_t ui32RandomPInf( void )
+static uint32_t ui32RandomPInf( void )
{
int weightMaskNum;
@@ -267,7 +267,7 @@ static uint_fast32_t ui32RandomPInf( void )
static struct sequence sequenceA;
static int subcase;
-uint_fast32_t genCases_ui32_a;
+uint32_t genCases_ui32_a;
void genCases_ui32_a_init( void )
{
diff --git a/source/genCases_ui64.c b/source/genCases_ui64.c
index 51dc428..c3526f3 100644
--- a/source/genCases_ui64.c
+++ b/source/genCases_ui64.c
@@ -299,10 +299,10 @@ static const uint64_t ui64P1[ui64NumP1] = {
UINT64_C( 0x0000000000000003 )
};
-static uint_fast64_t ui64NextP1( struct sequence *sequencePtr )
+static uint64_t ui64NextP1( struct sequence *sequencePtr )
{
int termNum;
- uint_fast64_t z;
+ uint64_t z;
termNum = sequencePtr->term1Num;
z = ui64P1[termNum];
@@ -318,10 +318,10 @@ static uint_fast64_t ui64NextP1( struct sequence *sequencePtr )
static const uint_fast64_t ui64NumP2 = (ui64NumP1 * ui64NumP1 + ui64NumP1) / 2;
-static uint_fast64_t ui64NextP2( struct sequence *sequencePtr )
+static uint64_t ui64NextP2( struct sequence *sequencePtr )
{
int term1Num, term2Num;
- uint_fast64_t z;
+ uint64_t z;
term2Num = sequencePtr->term2Num;
term1Num = sequencePtr->term1Num;
@@ -341,7 +341,7 @@ static uint_fast64_t ui64NextP2( struct sequence *sequencePtr )
}
-static uint_fast64_t ui64RandomP3( void )
+static uint64_t ui64RandomP3( void )
{
return
@@ -415,7 +415,7 @@ static const uint64_t ui64PInfWeightMasks[ui64NumPInfWeightMasks] = {
UINT64_C( 0x000000000000000F )
};
-static uint_fast64_t ui64RandomPInf( void )
+static uint64_t ui64RandomPInf( void )
{
int weightMaskNum;
@@ -427,7 +427,7 @@ static uint_fast64_t ui64RandomPInf( void )
static struct sequence sequenceA;
static int subcase;
-uint_fast64_t genCases_ui64_a;
+uint64_t genCases_ui64_a;
void genCases_ui64_a_init( void )
{
diff --git a/source/genLoops.c b/source/genLoops.c
index 893c344..179ebea 100644
--- a/source/genLoops.c
+++ b/source/genLoops.c
@@ -474,7 +474,7 @@ void gen_abc_f128( void )
#endif
-void gen_a_ui32_z_f32( float32_t trueFunction( uint_fast32_t ) )
+void gen_a_ui32_z_f32( float32_t trueFunction( uint32_t ) )
{
union ui32_f32 uTrueZ;
uint_fast8_t trueFlags;
@@ -492,7 +492,7 @@ void gen_a_ui32_z_f32( float32_t trueFunction( uint_fast32_t ) )
}
-void gen_a_ui32_z_f64( float64_t trueFunction( uint_fast32_t ) )
+void gen_a_ui32_z_f64( float64_t trueFunction( uint32_t ) )
{
union ui64_f64 uTrueZ;
uint_fast8_t trueFlags;
@@ -512,7 +512,7 @@ void gen_a_ui32_z_f64( float64_t trueFunction( uint_fast32_t ) )
#ifdef EXTFLOAT80
-void gen_a_ui32_z_extF80( void trueFunction( uint_fast32_t, extFloat80_t * ) )
+void gen_a_ui32_z_extF80( void trueFunction( uint32_t, extFloat80_t * ) )
{
extFloat80_t trueZ;
uint_fast8_t trueFlags;
@@ -534,7 +534,7 @@ void gen_a_ui32_z_extF80( void trueFunction( uint_fast32_t, extFloat80_t * ) )
#ifdef FLOAT128
-void gen_a_ui32_z_f128( void trueFunction( uint_fast32_t, float128_t * ) )
+void gen_a_ui32_z_f128( void trueFunction( uint32_t, float128_t * ) )
{
float128_t trueZ;
uint_fast8_t trueFlags;
@@ -554,7 +554,7 @@ void gen_a_ui32_z_f128( void trueFunction( uint_fast32_t, float128_t * ) )
#endif
-void gen_a_ui64_z_f32( float32_t trueFunction( uint_fast64_t ) )
+void gen_a_ui64_z_f32( float32_t trueFunction( uint64_t ) )
{
union ui32_f32 uTrueZ;
uint_fast8_t trueFlags;
@@ -572,7 +572,7 @@ void gen_a_ui64_z_f32( float32_t trueFunction( uint_fast64_t ) )
}
-void gen_a_ui64_z_f64( float64_t trueFunction( uint_fast64_t ) )
+void gen_a_ui64_z_f64( float64_t trueFunction( uint64_t ) )
{
union ui64_f64 uTrueZ;
uint_fast8_t trueFlags;
@@ -592,7 +592,7 @@ void gen_a_ui64_z_f64( float64_t trueFunction( uint_fast64_t ) )
#ifdef EXTFLOAT80
-void gen_a_ui64_z_extF80( void trueFunction( uint_fast64_t, extFloat80_t * ) )
+void gen_a_ui64_z_extF80( void trueFunction( uint64_t, extFloat80_t * ) )
{
extFloat80_t trueZ;
uint_fast8_t trueFlags;
@@ -614,7 +614,7 @@ void gen_a_ui64_z_extF80( void trueFunction( uint_fast64_t, extFloat80_t * ) )
#ifdef FLOAT128
-void gen_a_ui64_z_f128( void trueFunction( uint_fast64_t, float128_t * ) )
+void gen_a_ui64_z_f128( void trueFunction( uint64_t, float128_t * ) )
{
float128_t trueZ;
uint_fast8_t trueFlags;
@@ -634,7 +634,7 @@ void gen_a_ui64_z_f128( void trueFunction( uint_fast64_t, float128_t * ) )
#endif
-void gen_a_i32_z_f32( float32_t trueFunction( int_fast32_t ) )
+void gen_a_i32_z_f32( float32_t trueFunction( int32_t ) )
{
union ui32_f32 uTrueZ;
uint_fast8_t trueFlags;
@@ -652,7 +652,7 @@ void gen_a_i32_z_f32( float32_t trueFunction( int_fast32_t ) )
}
-void gen_a_i32_z_f64( float64_t trueFunction( int_fast32_t ) )
+void gen_a_i32_z_f64( float64_t trueFunction( int32_t ) )
{
union ui64_f64 uTrueZ;
uint_fast8_t trueFlags;
@@ -672,7 +672,7 @@ void gen_a_i32_z_f64( float64_t trueFunction( int_fast32_t ) )
#ifdef EXTFLOAT80
-void gen_a_i32_z_extF80( void trueFunction( int_fast32_t, extFloat80_t * ) )
+void gen_a_i32_z_extF80( void trueFunction( int32_t, extFloat80_t * ) )
{
extFloat80_t trueZ;
uint_fast8_t trueFlags;
@@ -694,7 +694,7 @@ void gen_a_i32_z_extF80( void trueFunction( int_fast32_t, extFloat80_t * ) )
#ifdef FLOAT128
-void gen_a_i32_z_f128( void trueFunction( int_fast32_t, float128_t * ) )
+void gen_a_i32_z_f128( void trueFunction( int32_t, float128_t * ) )
{
float128_t trueZ;
uint_fast8_t trueFlags;
@@ -714,7 +714,7 @@ void gen_a_i32_z_f128( void trueFunction( int_fast32_t, float128_t * ) )
#endif
-void gen_a_i64_z_f32( float32_t trueFunction( int_fast64_t ) )
+void gen_a_i64_z_f32( float32_t trueFunction( int64_t ) )
{
union ui32_f32 uTrueZ;
uint_fast8_t trueFlags;
@@ -732,7 +732,7 @@ void gen_a_i64_z_f32( float32_t trueFunction( int_fast64_t ) )
}
-void gen_a_i64_z_f64( float64_t trueFunction( int_fast64_t ) )
+void gen_a_i64_z_f64( float64_t trueFunction( int64_t ) )
{
union ui64_f64 uTrueZ;
uint_fast8_t trueFlags;
@@ -752,7 +752,7 @@ void gen_a_i64_z_f64( float64_t trueFunction( int_fast64_t ) )
#ifdef EXTFLOAT80
-void gen_a_i64_z_extF80( void trueFunction( int_fast64_t, extFloat80_t * ) )
+void gen_a_i64_z_extF80( void trueFunction( int64_t, extFloat80_t * ) )
{
extFloat80_t trueZ;
uint_fast8_t trueFlags;
@@ -774,7 +774,7 @@ void gen_a_i64_z_extF80( void trueFunction( int_fast64_t, extFloat80_t * ) )
#ifdef FLOAT128
-void gen_a_i64_z_f128( void trueFunction( int_fast64_t, float128_t * ) )
+void gen_a_i64_z_f128( void trueFunction( int64_t, float128_t * ) )
{
float128_t trueZ;
uint_fast8_t trueFlags;
diff --git a/source/genLoops.h b/source/genLoops.h
index 74ac42e..8cb5ded 100644
--- a/source/genLoops.h
+++ b/source/genLoops.h
@@ -64,37 +64,37 @@ void gen_ab_f128( void );
void gen_abc_f128( void );
#endif
-void gen_a_ui32_z_f32( float32_t ( uint_fast32_t ) );
-void gen_a_ui32_z_f64( float64_t ( uint_fast32_t ) );
+void gen_a_ui32_z_f32( float32_t ( uint32_t ) );
+void gen_a_ui32_z_f64( float64_t ( uint32_t ) );
#ifdef EXTFLOAT80
-void gen_a_ui32_z_extF80( void ( uint_fast32_t, extFloat80_t * ) );
+void gen_a_ui32_z_extF80( void ( uint32_t, extFloat80_t * ) );
#endif
#ifdef FLOAT128
-void gen_a_ui32_z_f128( void ( uint_fast32_t, float128_t * ) );
+void gen_a_ui32_z_f128( void ( uint32_t, float128_t * ) );
#endif
-void gen_a_ui64_z_f32( float32_t ( uint_fast64_t ) );
-void gen_a_ui64_z_f64( float64_t ( uint_fast64_t ) );
+void gen_a_ui64_z_f32( float32_t ( uint64_t ) );
+void gen_a_ui64_z_f64( float64_t ( uint64_t ) );
#ifdef EXTFLOAT80
-void gen_a_ui64_z_extF80( void ( uint_fast64_t, extFloat80_t * ) );
+void gen_a_ui64_z_extF80( void ( uint64_t, extFloat80_t * ) );
#endif
#ifdef FLOAT128
-void gen_a_ui64_z_f128( void ( uint_fast64_t, float128_t * ) );
+void gen_a_ui64_z_f128( void ( uint64_t, float128_t * ) );
#endif
-void gen_a_i32_z_f32( float32_t ( int_fast32_t ) );
-void gen_a_i32_z_f64( float64_t ( int_fast32_t ) );
+void gen_a_i32_z_f32( float32_t ( int32_t ) );
+void gen_a_i32_z_f64( float64_t ( int32_t ) );
#ifdef EXTFLOAT80
-void gen_a_i32_z_extF80( void ( int_fast32_t, extFloat80_t * ) );
+void gen_a_i32_z_extF80( void ( int32_t, extFloat80_t * ) );
#endif
#ifdef FLOAT128
-void gen_a_i32_z_f128( void ( int_fast32_t, float128_t * ) );
+void gen_a_i32_z_f128( void ( int32_t, float128_t * ) );
#endif
-void gen_a_i64_z_f32( float32_t ( int_fast64_t ) );
-void gen_a_i64_z_f64( float64_t ( int_fast64_t ) );
+void gen_a_i64_z_f32( float32_t ( int64_t ) );
+void gen_a_i64_z_f64( float64_t ( int64_t ) );
#ifdef EXTFLOAT80
-void gen_a_i64_z_extF80( void ( int_fast64_t, extFloat80_t * ) );
+void gen_a_i64_z_extF80( void ( int64_t, extFloat80_t * ) );
#endif
#ifdef FLOAT128
-void gen_a_i64_z_f128( void ( int_fast64_t, float128_t * ) );
+void gen_a_i64_z_f128( void ( int64_t, float128_t * ) );
#endif
void
diff --git a/source/subj-C/subjfloat.c b/source/subj-C/subjfloat.c
index 4d1a0d6..52a5911 100644
--- a/source/subj-C/subjfloat.c
+++ b/source/subj-C/subjfloat.c
@@ -94,7 +94,7 @@ uint_fast8_t subjfloat_clearExceptionFlags( void )
union f32_f { float32_t f32; float f; };
union f64_d { float64_t f64; double d; };
-float32_t subj_ui32_to_f32( uint_fast32_t a )
+float32_t subj_ui32_to_f32( uint32_t a )
{
union f32_f uZ;
@@ -103,7 +103,7 @@ float32_t subj_ui32_to_f32( uint_fast32_t a )
}
-float64_t subj_ui32_to_f64( uint_fast32_t a )
+float64_t subj_ui32_to_f64( uint32_t a )
{
union f64_d uZ;
@@ -112,7 +112,7 @@ float64_t subj_ui32_to_f64( uint_fast32_t a )
}
-float32_t subj_ui64_to_f32( uint_fast64_t a )
+float32_t subj_ui64_to_f32( uint64_t a )
{
union f32_f uZ;
@@ -121,7 +121,7 @@ float32_t subj_ui64_to_f32( uint_fast64_t a )
}
-float64_t subj_ui64_to_f64( uint_fast64_t a )
+float64_t subj_ui64_to_f64( uint64_t a )
{
union f64_d uZ;
@@ -130,7 +130,7 @@ float64_t subj_ui64_to_f64( uint_fast64_t a )
}
-float32_t subj_i32_to_f32( int_fast32_t a )
+float32_t subj_i32_to_f32( int32_t a )
{
union f32_f uZ;
@@ -139,7 +139,7 @@ float32_t subj_i32_to_f32( int_fast32_t a )
}
-float64_t subj_i32_to_f64( int_fast32_t a )
+float64_t subj_i32_to_f64( int32_t a )
{
union f64_d uZ;
@@ -148,7 +148,7 @@ float64_t subj_i32_to_f64( int_fast32_t a )
}
-float32_t subj_i64_to_f32( int_fast64_t a )
+float32_t subj_i64_to_f32( int64_t a )
{
union f32_f uZ;
@@ -157,7 +157,7 @@ float32_t subj_i64_to_f32( int_fast64_t a )
}
-float64_t subj_i64_to_f64( int_fast64_t a )
+float64_t subj_i64_to_f64( int64_t a )
{
union f64_d uZ;
@@ -420,28 +420,28 @@ bool subj_f64_lt( float64_t a, float64_t b )
#if defined EXTFLOAT80 && defined LONG_DOUBLE_IS_EXTFLOAT80
-void subj_ui32_to_extF80M( uint_fast32_t a, extFloat80_t *zPtr )
+void subj_ui32_to_extF80M( uint32_t a, extFloat80_t *zPtr )
{
*((long double *) zPtr) = a;
}
-void subj_ui64_to_extF80M( uint_fast64_t a, extFloat80_t *zPtr )
+void subj_ui64_to_extF80M( uint64_t a, extFloat80_t *zPtr )
{
*((long double *) zPtr) = a;
}
-void subj_i32_to_extF80M( int_fast32_t a, extFloat80_t *zPtr )
+void subj_i32_to_extF80M( int32_t a, extFloat80_t *zPtr )
{
*((long double *) zPtr) = a;
}
-void subj_i64_to_extF80M( int_fast64_t a, extFloat80_t *zPtr )
+void subj_i64_to_extF80M( int64_t a, extFloat80_t *zPtr )
{
*((long double *) zPtr) = a;
@@ -577,28 +577,28 @@ bool subj_extF80M_lt( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
#if defined FLOAT128 && defined LONG_DOUBLE_IS_FLOAT128
-void subj_ui32_to_f128M( uint_fast32_t a, float128_t *zPtr )
+void subj_ui32_to_f128M( uint32_t a, float128_t *zPtr )
{
*((long double *) zPtr) = a;
}
-void subj_ui64_to_f128M( uint_fast64_t a, float128_t *zPtr )
+void subj_ui64_to_f128M( uint64_t a, float128_t *zPtr )
{
*((long double *) zPtr) = a;
}
-void subj_i32_to_f128M( int_fast32_t a, float128_t *zPtr )
+void subj_i32_to_f128M( int32_t a, float128_t *zPtr )
{
*((long double *) zPtr) = a;
}
-void subj_i64_to_f128M( int_fast64_t a, float128_t *zPtr )
+void subj_i64_to_f128M( int64_t a, float128_t *zPtr )
{
*((long double *) zPtr) = a;
diff --git a/source/subjfloat.h b/source/subjfloat.h
index 4423944..44d6964 100644
--- a/source/subjfloat.h
+++ b/source/subjfloat.h
@@ -51,37 +51,37 @@ uint_fast8_t subjfloat_clearExceptionFlags( void );
/*----------------------------------------------------------------------------
*----------------------------------------------------------------------------*/
-float32_t subj_ui32_to_f32( uint_fast32_t );
-float64_t subj_ui32_to_f64( uint_fast32_t );
+float32_t subj_ui32_to_f32( uint32_t );
+float64_t subj_ui32_to_f64( uint32_t );
#ifdef EXTFLOAT80
-void subj_ui32_to_extF80M( uint_fast32_t, extFloat80_t * );
+void subj_ui32_to_extF80M( uint32_t, extFloat80_t * );
#endif
#ifdef FLOAT128
-void subj_ui32_to_f128M( uint_fast32_t, float128_t * );
+void subj_ui32_to_f128M( uint32_t, float128_t * );
#endif
-float32_t subj_ui64_to_f32( uint_fast64_t );
-float64_t subj_ui64_to_f64( uint_fast64_t );
+float32_t subj_ui64_to_f32( uint64_t );
+float64_t subj_ui64_to_f64( uint64_t );
#ifdef EXTFLOAT80
-void subj_ui64_to_extF80M( uint_fast64_t, extFloat80_t * );
+void subj_ui64_to_extF80M( uint64_t, extFloat80_t * );
#endif
#ifdef FLOAT128
-void subj_ui64_to_f128M( uint_fast64_t, float128_t * );
+void subj_ui64_to_f128M( uint64_t, float128_t * );
#endif
-float32_t subj_i32_to_f32( int_fast32_t );
-float64_t subj_i32_to_f64( int_fast32_t );
+float32_t subj_i32_to_f32( int32_t );
+float64_t subj_i32_to_f64( int32_t );
#ifdef EXTFLOAT80
-void subj_i32_to_extF80M( int_fast32_t, extFloat80_t * );
+void subj_i32_to_extF80M( int32_t, extFloat80_t * );
#endif
#ifdef FLOAT128
-void subj_i32_to_f128M( int_fast32_t, float128_t * );
+void subj_i32_to_f128M( int32_t, float128_t * );
#endif
-float32_t subj_i64_to_f32( int_fast64_t );
-float64_t subj_i64_to_f64( int_fast64_t );
+float32_t subj_i64_to_f32( int64_t );
+float64_t subj_i64_to_f64( int64_t );
#ifdef EXTFLOAT80
-void subj_i64_to_extF80M( int_fast64_t, extFloat80_t * );
+void subj_i64_to_extF80M( int64_t, extFloat80_t * );
#endif
#ifdef FLOAT128
-void subj_i64_to_f128M( int_fast64_t, float128_t * );
+void subj_i64_to_f128M( int64_t, float128_t * );
#endif
/*----------------------------------------------------------------------------
diff --git a/source/test_a_extF80_z_ui64_rx.c b/source/test_a_extF80_z_ui64_rx.c
index 83dff24..71bf340 100644
--- a/source/test_a_extF80_z_ui64_rx.c
+++ b/source/test_a_extF80_z_ui64_rx.c
@@ -92,7 +92,7 @@ void
) {
++verCases_errorCount;
verCases_writeErrorFound( 10000 - count );
- writeCase_a_extF80M( &genCases_extF80_a, " " );
+ writeCase_a_extF80M( &genCases_extF80_a, "\n\t" );
writeCase_z_ui64( trueZ, trueFlags, subjZ, subjFlags );
if ( verCases_errorCount == verCases_maxErrorCount ) break;
}
diff --git a/source/testfloat.c b/source/testfloat.c
index 73044f8..bc8e820 100644
--- a/source/testfloat.c
+++ b/source/testfloat.c
@@ -58,37 +58,37 @@ static void catchSIGINT( int signalCode )
static void (*subjFunctionPtr)();
-typedef float32_t funcType_a_ui32_z_f32( uint_fast32_t );
-typedef float64_t funcType_a_ui32_z_f64( uint_fast32_t );
+typedef float32_t funcType_a_ui32_z_f32( uint32_t );
+typedef float64_t funcType_a_ui32_z_f64( uint32_t );
#ifdef EXTFLOAT80
-typedef void funcType_a_ui32_z_extF80( uint_fast32_t, extFloat80_t * );
+typedef void funcType_a_ui32_z_extF80( uint32_t, extFloat80_t * );
#endif
#ifdef FLOAT128
-typedef void funcType_a_ui32_z_f128( uint_fast32_t, float128_t * );
+typedef void funcType_a_ui32_z_f128( uint32_t, float128_t * );
#endif
-typedef float32_t funcType_a_ui64_z_f32( uint_fast64_t );
-typedef float64_t funcType_a_ui64_z_f64( uint_fast64_t );
+typedef float32_t funcType_a_ui64_z_f32( uint64_t );
+typedef float64_t funcType_a_ui64_z_f64( uint64_t );
#ifdef EXTFLOAT80
-typedef void funcType_a_ui64_z_extF80( uint_fast64_t, extFloat80_t * );
+typedef void funcType_a_ui64_z_extF80( uint64_t, extFloat80_t * );
#endif
#ifdef FLOAT128
-typedef void funcType_a_ui64_z_f128( uint_fast64_t, float128_t * );
+typedef void funcType_a_ui64_z_f128( uint64_t, float128_t * );
#endif
-typedef float32_t funcType_a_i32_z_f32( int_fast32_t );
-typedef float64_t funcType_a_i32_z_f64( int_fast32_t );
+typedef float32_t funcType_a_i32_z_f32( int32_t );
+typedef float64_t funcType_a_i32_z_f64( int32_t );
#ifdef EXTFLOAT80
-typedef void funcType_a_i32_z_extF80( int_fast32_t, extFloat80_t * );
+typedef void funcType_a_i32_z_extF80( int32_t, extFloat80_t * );
#endif
#ifdef FLOAT128
-typedef void funcType_a_i32_z_f128( int_fast32_t, float128_t * );
+typedef void funcType_a_i32_z_f128( int32_t, float128_t * );
#endif
-typedef float32_t funcType_a_i64_z_f32( int_fast64_t );
-typedef float64_t funcType_a_i64_z_f64( int_fast64_t );
+typedef float32_t funcType_a_i64_z_f32( int64_t );
+typedef float64_t funcType_a_i64_z_f64( int64_t );
#ifdef EXTFLOAT80
-typedef void funcType_a_i64_z_extF80( int_fast64_t, extFloat80_t * );
+typedef void funcType_a_i64_z_extF80( int64_t, extFloat80_t * );
#endif
#ifdef FLOAT128
-typedef void funcType_a_i64_z_f128( int_fast64_t, float128_t * );
+typedef void funcType_a_i64_z_f128( int64_t, float128_t * );
#endif
typedef uint_fast32_t funcType_a_f32_z_ui32( float32_t );
diff --git a/source/verLoops.c b/source/verLoops.c
index b607a4d..fe162b4 100644
--- a/source/verLoops.c
+++ b/source/verLoops.c
@@ -184,7 +184,7 @@ static void readVerInput_flags( uint_fast8_t *flagsPtr )
/*----------------------------------------------------------------------------
*----------------------------------------------------------------------------*/
-void ver_a_ui32_z_f32( float32_t trueFunction( uint_fast32_t ) )
+void ver_a_ui32_z_f32( float32_t trueFunction( uint32_t ) )
{
int count;
uint_fast32_t a;
@@ -228,7 +228,7 @@ void ver_a_ui32_z_f32( float32_t trueFunction( uint_fast32_t ) )
}
-void ver_a_ui32_z_f64( float64_t trueFunction( uint_fast32_t ) )
+void ver_a_ui32_z_f64( float64_t trueFunction( uint32_t ) )
{
int count;
uint_fast32_t a;
@@ -274,7 +274,7 @@ void ver_a_ui32_z_f64( float64_t trueFunction( uint_fast32_t ) )
#ifdef EXTFLOAT80
-void ver_a_ui32_z_extF80( void trueFunction( uint_fast32_t, extFloat80_t * ) )
+void ver_a_ui32_z_extF80( void trueFunction( uint32_t, extFloat80_t * ) )
{
int count;
uint_fast32_t a;
@@ -322,7 +322,7 @@ void ver_a_ui32_z_extF80( void trueFunction( uint_fast32_t, extFloat80_t * ) )
#ifdef FLOAT128
-void ver_a_ui32_z_f128( void trueFunction( uint_fast32_t, float128_t * ) )
+void ver_a_ui32_z_f128( void trueFunction( uint32_t, float128_t * ) )
{
int count;
uint_fast32_t a;
@@ -370,7 +370,7 @@ void ver_a_ui32_z_f128( void trueFunction( uint_fast32_t, float128_t * ) )
/*----------------------------------------------------------------------------
*----------------------------------------------------------------------------*/
-void ver_a_ui64_z_f32( float32_t trueFunction( uint_fast64_t ) )
+void ver_a_ui64_z_f32( float32_t trueFunction( uint64_t ) )
{
int count;
uint_fast64_t a;
@@ -414,7 +414,7 @@ void ver_a_ui64_z_f32( float32_t trueFunction( uint_fast64_t ) )
}
-void ver_a_ui64_z_f64( float64_t trueFunction( uint_fast64_t ) )
+void ver_a_ui64_z_f64( float64_t trueFunction( uint64_t ) )
{
int count;
uint_fast64_t a;
@@ -460,7 +460,7 @@ void ver_a_ui64_z_f64( float64_t trueFunction( uint_fast64_t ) )
#ifdef EXTFLOAT80
-void ver_a_ui64_z_extF80( void trueFunction( uint_fast64_t, extFloat80_t * ) )
+void ver_a_ui64_z_extF80( void trueFunction( uint64_t, extFloat80_t * ) )
{
int count;
uint_fast64_t a;
@@ -508,7 +508,7 @@ void ver_a_ui64_z_extF80( void trueFunction( uint_fast64_t, extFloat80_t * ) )
#ifdef FLOAT128
-void ver_a_ui64_z_f128( void trueFunction( uint_fast64_t, float128_t * ) )
+void ver_a_ui64_z_f128( void trueFunction( uint64_t, float128_t * ) )
{
int count;
uint_fast64_t a;
@@ -556,7 +556,7 @@ void ver_a_ui64_z_f128( void trueFunction( uint_fast64_t, float128_t * ) )
/*----------------------------------------------------------------------------
*----------------------------------------------------------------------------*/
-void ver_a_i32_z_f32( float32_t trueFunction( int_fast32_t ) )
+void ver_a_i32_z_f32( float32_t trueFunction( int32_t ) )
{
int count;
int_fast32_t a;
@@ -600,7 +600,7 @@ void ver_a_i32_z_f32( float32_t trueFunction( int_fast32_t ) )
}
-void ver_a_i32_z_f64( float64_t trueFunction( int_fast32_t ) )
+void ver_a_i32_z_f64( float64_t trueFunction( int32_t ) )
{
int count;
int_fast32_t a;
@@ -646,7 +646,7 @@ void ver_a_i32_z_f64( float64_t trueFunction( int_fast32_t ) )
#ifdef EXTFLOAT80
-void ver_a_i32_z_extF80( void trueFunction( int_fast32_t, extFloat80_t * ) )
+void ver_a_i32_z_extF80( void trueFunction( int32_t, extFloat80_t * ) )
{
int count;
int_fast32_t a;
@@ -694,7 +694,7 @@ void ver_a_i32_z_extF80( void trueFunction( int_fast32_t, extFloat80_t * ) )
#ifdef FLOAT128
-void ver_a_i32_z_f128( void trueFunction( int_fast32_t, float128_t * ) )
+void ver_a_i32_z_f128( void trueFunction( int32_t, float128_t * ) )
{
int count;
int_fast32_t a;
@@ -742,7 +742,7 @@ void ver_a_i32_z_f128( void trueFunction( int_fast32_t, float128_t * ) )
/*----------------------------------------------------------------------------
*----------------------------------------------------------------------------*/
-void ver_a_i64_z_f32( float32_t trueFunction( int_fast64_t ) )
+void ver_a_i64_z_f32( float32_t trueFunction( int64_t ) )
{
int count;
int_fast64_t a;
@@ -786,7 +786,7 @@ void ver_a_i64_z_f32( float32_t trueFunction( int_fast64_t ) )
}
-void ver_a_i64_z_f64( float64_t trueFunction( int_fast64_t ) )
+void ver_a_i64_z_f64( float64_t trueFunction( int64_t ) )
{
int count;
int_fast64_t a;
@@ -832,7 +832,7 @@ void ver_a_i64_z_f64( float64_t trueFunction( int_fast64_t ) )
#ifdef EXTFLOAT80
-void ver_a_i64_z_extF80( void trueFunction( int_fast64_t, extFloat80_t * ) )
+void ver_a_i64_z_extF80( void trueFunction( int64_t, extFloat80_t * ) )
{
int count;
int_fast64_t a;
@@ -880,7 +880,7 @@ void ver_a_i64_z_extF80( void trueFunction( int_fast64_t, extFloat80_t * ) )
#ifdef FLOAT128
-void ver_a_i64_z_f128( void trueFunction( int_fast64_t, float128_t * ) )
+void ver_a_i64_z_f128( void trueFunction( int64_t, float128_t * ) )
{
int count;
int_fast64_t a;
diff --git a/source/verLoops.h b/source/verLoops.h
index b575641..63fae3d 100644
--- a/source/verLoops.h
+++ b/source/verLoops.h
@@ -38,37 +38,37 @@ MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
extern uint_fast8_t *verLoops_trueFlagsPtr;
-void ver_a_ui32_z_f32( float32_t ( uint_fast32_t ) );
-void ver_a_ui32_z_f64( float64_t ( uint_fast32_t ) );
+void ver_a_ui32_z_f32( float32_t ( uint32_t ) );
+void ver_a_ui32_z_f64( float64_t ( uint32_t ) );
#ifdef EXTFLOAT80
-void ver_a_ui32_z_extF80( void ( uint_fast32_t, extFloat80_t * ) );
+void ver_a_ui32_z_extF80( void ( uint32_t, extFloat80_t * ) );
#endif
#ifdef FLOAT128
-void ver_a_ui32_z_f128( void ( uint_fast32_t, float128_t * ) );
+void ver_a_ui32_z_f128( void ( uint32_t, float128_t * ) );
#endif
-void ver_a_ui64_z_f32( float32_t ( uint_fast64_t ) );
-void ver_a_ui64_z_f64( float64_t ( uint_fast64_t ) );
+void ver_a_ui64_z_f32( float32_t ( uint64_t ) );
+void ver_a_ui64_z_f64( float64_t ( uint64_t ) );
#ifdef EXTFLOAT80
-void ver_a_ui64_z_extF80( void ( uint_fast64_t, extFloat80_t * ) );
+void ver_a_ui64_z_extF80( void ( uint64_t, extFloat80_t * ) );
#endif
#ifdef FLOAT128
-void ver_a_ui64_z_f128( void ( uint_fast64_t, float128_t * ) );
+void ver_a_ui64_z_f128( void ( uint64_t, float128_t * ) );
#endif
-void ver_a_i32_z_f32( float32_t ( int_fast32_t ) );
-void ver_a_i32_z_f64( float64_t ( int_fast32_t ) );
+void ver_a_i32_z_f32( float32_t ( int32_t ) );
+void ver_a_i32_z_f64( float64_t ( int32_t ) );
#ifdef EXTFLOAT80
-void ver_a_i32_z_extF80( void ( int_fast32_t, extFloat80_t * ) );
+void ver_a_i32_z_extF80( void ( int32_t, extFloat80_t * ) );
#endif
#ifdef FLOAT128
-void ver_a_i32_z_f128( void ( int_fast32_t, float128_t * ) );
+void ver_a_i32_z_f128( void ( int32_t, float128_t * ) );
#endif
-void ver_a_i64_z_f32( float32_t ( int_fast64_t ) );
-void ver_a_i64_z_f64( float64_t ( int_fast64_t ) );
+void ver_a_i64_z_f32( float32_t ( int64_t ) );
+void ver_a_i64_z_f64( float64_t ( int64_t ) );
#ifdef EXTFLOAT80
-void ver_a_i64_z_extF80( void ( int_fast64_t, extFloat80_t * ) );
+void ver_a_i64_z_extF80( void ( int64_t, extFloat80_t * ) );
#endif
#ifdef FLOAT128
-void ver_a_i64_z_f128( void ( int_fast64_t, float128_t * ) );
+void ver_a_i64_z_f128( void ( int64_t, float128_t * ) );
#endif
void