home *** CD-ROM | disk | FTP | other *** search
- echo off
- rem tests if mawk has been compiled to correctly handle
- rem floating point exceptions
-
- echo testing division by zero
- type fpetest1.awk
- mawk -f fpetest1.awk
- if errorlevel 128 goto :test1_128
- if errorlevel 3 goto :test1_3
- if errorlevel 2 goto :test1_2
- if errorlevel 1 goto :test1_1
- set ret1=0
- goto :test2
- :test1_128
- set ret1=128
- goto :test2
- :test1_3
- set ret1=3
- goto :test2
- :test1_2
- set ret1=2
- goto :test2
- :test1_1
- set ret1=1
-
- :test2
- echo testing overflow
- type fpetest2.awk
- mawk -f fpetest2.awk
- if errorlevel 128 goto :test2_128
- if errorlevel 3 goto :test2_3
- if errorlevel 2 goto :test2_2
- if errorlevel 1 goto :test2_1
- set ret2=0
- goto :test3
- :test2_128
- set ret2=128
- goto :test3
- :test2_3
- set ret2=3
- goto :test3
- :test2_2
- set ret2=2
- goto :test3
- :test2_1
- set ret2=1
-
- :test3
- echo testing domain error
- type fpetest3.awk
- mawk -f fpetest3.awk > temp$$
- if errorlevel 128 goto :test3_128
- if errorlevel 3 goto :test3_3
- if errorlevel 2 goto :test3_2
- if errorlevel 1 goto :test3_1
- set ret3=0
- goto :type3
- :test3_128
- set ret3=128
- goto :type3
- :test3_3
- set ret3=3
- goto :type3
- :test3_2
- set ret3=2
- goto :type3
- :test3_1
- set ret3=1
-
- :type3
- type temp$$
-
- rem the returns should all be zero or all 1
-
- echo *************************************
- echo return1 = %ret1%
- echo return2 = %ret2%
- echo return3 = %ret3%
-
- set exception=0
- if %ret1% == 1 goto :okay1
- if %ret1% == 0 goto :okay1
- echo test1 failed
- set exception=1
- :okay1
- if %ret2% == 1 goto :okay2
- if %ret2% == 0 goto :okay2
- echo test2 failed
- set exception=1
- :okay2
- if %ret3% == 1 goto :okay3
- if %ret3% == 0 goto :okay3
- echo test3 failed
- set exception=1
- :okay3
-
- if %exception% == 1 goto :done
-
- set same=1
- if %ret1% == %ret2% goto :same12
- set same=0
- :same12
- if %ret2% == %ret3% goto :same23
- set same=0
- :same23
-
- if %same% == 1 goto :same123
- echo results are not consistent
- echo return values should all be 0 if ignoring FPEs (e.g. with IEEE754)
- echo or all 1 if trapping FPEs
- goto :cleanup
-
- :same123
- if %ret1% == 0 goto :allzero
- echo results consistent: trapping floating exceptions
- goto :cleanup
-
- :allzero
- echo results consistent: ignoring floating exceptions
- grep -i nan temp$$ >NUL
- if not errorlevel 1 goto :cleanup
- echo but the library is not IEEE754 compatible
- echo test 3 failed
-
- :cleanup
- del temp$$
-
- :done
- exit %exception%
-