SoftFloat | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
Hi, In order to test the FP solutions' results I ran the code provided by Intel in its Floating point Function Software Primitives Version 1.0 : http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm (at the bottom) Detailed results with faulting values are in the attached file. Summary : NWFPE : OK FFPE : 48 errors / 325 INTEL : OK NICO's patch : 12 errors / 325 Eric
*** NetWinder Floating Point Emulator V0.97 (double precision) # ./test4 ====================== Summary ====================== PASSED ADD float : 41 tested, 0 errors PASSED SUB float : 41 tested, 0 errors PASSED MUL float : 24 tested, 0 errors PASSED DIV float : 31 tested, 0 errors PASSED SQRT float : 34 tested, 0 errors PASSED ADD double : 22 tested, 0 errors PASSED SUB double : 22 tested, 0 errors PASSED MUL double : 42 tested, 0 errors PASSED DIV double : 39 tested, 0 errors PASSED SQRT double : 29 tested, 0 errors *** NetWinder Floating Point Emulator V0.97 (extended precision) # ./test4 ====================== Summary ====================== PASSED ADD float : 41 tested, 0 errors PASSED SUB float : 41 tested, 0 errors PASSED MUL float : 24 tested, 0 errors PASSED DIV float : 31 tested, 0 errors PASSED SQRT float : 34 tested, 0 errors PASSED ADD double : 22 tested, 0 errors PASSED SUB double : 22 tested, 0 errors PASSED MUL double : 42 tested, 0 errors PASSED DIV double : 39 tested, 0 errors PASSED SQRT double : 29 tested, 0 errors *** Fast Floating Point Emulator V0.9 (c) Peter Teichmann. # ./test4 ADD float : X = 7f812345 Y = 00800000 R = 7fc12345 (expected value) C = 7fa12345 (computed value) ADD float : X = 00800000 Y = 7f812345 R = 7fc12345 (expected value) C = 7fa12345 (computed value) ADD float : X = ff812345 Y = 00800000 R = ffc12345 (expected value) C = ffa12345 (computed value) SUB float : X = 7f812345 Y = 80800000 R = 7fc12345 (expected value) C = 7fa12345 (computed value) SUB float : X = 00800000 Y = ff812345 R = 7fc12345 (expected value) C = 7fa12345 (computed value) SUB float : X = ff812345 Y = 80800000 R = ffc12345 (expected value) C = ffa12345 (computed value) MUL float : X = 7f812345 Y = 80000000 R = 7fc12345 (expected value) C = 7fa12345 (computed value) MUL float : X = ff812345 Y = 7f812345 R = ffc12345 (expected value) C = ffa12345 (computed value) MUL float : X = 3f800001 Y = 007fffff R = 00800000 (expected value) C = 007fffff (computed value) MUL float : X = 807fffff Y = 7f812345 R = 7fc12345 (expected value) C = 7fa12345 (computed value) MUL float : X = 44d0d824 Y = 80000002 R = 80000d0e (expected value) C = 80000d0d (computed value) DIV float : X = ff812345 Y = 7f800000 R = ffc12345 (expected value) C = ffa12345 (computed value) DIV float : X = 7f800000 Y = ff812345 R = ffc12345 (expected value) C = 7fa12345 (computed value) DIV float : X = 80800000 Y = 7fc12345 R = 7fc12345 (expected value) C = 7fe12345 (computed value) DIV float : X = ffc12345 Y = 80800000 R = ffc12345 (expected value) C = 7fe12345 (computed value) SQRT float : X = ffc12345 R = ffc12345 (expected value) C = ffa00000 (computed value) SQRT float : X = ff800000 R = ffc00000 (expected value) C = ffa00000 (computed value) SQRT float : X = ff7fffff R = ffc00000 (expected value) C = ffa00000 (computed value) SQRT float : X = ff7ffffe R = ffc00000 (expected value) C = ffa00000 (computed value) SQRT float : X = 0c046a58 R = 25b81d73 (expected value) C = 25e03cbc (computed value) SQRT float : X = 410315a9 R = 40373000 (expected value) C = 40711bf6 (computed value) SQRT float : X = 41032c90 R = 40374000 (expected value) C = 4071281f (computed value) ADD double: X = 7ff0123456789abc Y = 7ff0123456789abc R = 7ff8123456789abc (expected value) C = 7ff7f7fd7f7fdffe (computed value) ADD double: X = ffefffffffffffff Y = ffefffffffffffff R = fff0000000000000 (expected value) C = fff00000ffffffff (computed value) SUB double: X = 7ff0123456789abc Y = fff0123456789abc R = 7ff8123456789abc (expected value) C = 7ff7f7fd7f7fdffe (computed value) SUB double: X = ffefffffffffffff Y = 7fefffffffffffff R = fff0000000000000 (expected value) C = fff00000ffffffff (computed value) MUL double: X = fff0123456789abc Y = 8000000000000000 R = fff8123456789abc (expected value) C = fff7f7fd7f7fdffe (computed value) MUL double: X = fff8123456789abc Y = bff0000000000000 R = fff8123456789abc (expected value) C = fffff7fdff7fdffe (computed value) MUL double: X = 7fefffffffffffff Y = 8000000000000001 R = bccfffffffffffff (expected value) C = bfe0000000000008 (computed value) MUL double: X = 7feffffffffffffe Y = 7fefffffffffffff R = 7ff0000000000000 (expected value) C = 7ff00000ffffffff (computed value) MUL double: X = bff0000000000001 Y = 000fffffffffffff R = 8010000000000000 (expected value) C = 800fffffffffffff (computed value) MUL double: X = ffd5babe6644d7cc Y = c1390e38be872844 R = 7ff0000000000000 (expected value) C = 7ff00000881c67db (computed value) MUL double: X = 7fd15b842d4b19e9 Y = 409aa618537626bd R = 7ff0000000000000 (expected value) C = 7ff00000e7473546 (computed value) MUL double: X = 7fd15b842d4b19e9 Y = 413529d03c596a30 R = 7ff0000000000000 (expected value) C = 7ff00000b7abcf2a (computed value) MUL double: X = 3fe6e1c27617a382 Y = 8000000000000001 R = 8000000000000001 (expected value) C = 8000000000000000 (computed value) MUL double: X = 413fba18fe4348d1 Y = 8000000000000001 R = 80000000001fba19 (expected value) C = 8130000000000008 (computed value) MUL double: X = 413fba18fe4348d1 Y = ffdf3f2076548a6f R = fff0000000000000 (expected value) C = fff00000f7d6f637 (computed value) DIV double: X = ffd2cef877b5c8fa Y = 3ebbf28ae728afd3 R = fff0000000000000 (expected value) C = fff00000ac496493 (computed value) DIV double: X = c13167332785e406 Y = 8000000000000001 R = 7ff0000000000000 (expected value) C = 7ff00000ffffffff (computed value) DIV double: X = c13167332785e406 Y = 801aedd33d819bc1 R = 7ff0000000000000 (expected value) C = 7ff00000a57142ca (computed value) DIV double: X = f5adadadf6ee3952 Y = a9ce3ccc9b93442e R = 7ff0000000000000 (expected value) C = 7ff00000fb444deb (computed value) DIV double: X = d17663cf08edb90e Y = 0e8c45f621766304 R = fff0000000000000 (expected value) C = fff00000caba90ca (computed value) DIV double: X = eda774a81dc99d11 Y = a4e7be06a885f020 R = 7ff0000000000000 (expected value) C = 7ff00000fce8e637 (computed value) DIV double: X = 7ff0123456789abc Y = 7ff0000000000000 R = 7ff8123456789abc (expected value) C = 7ff7f7fd7f7fdffe (computed value) DIV double: X = 7ff0000000000000 Y = 7ff0123456789abc R = 7ff8123456789abc (expected value) C = 7ff7f7fd7f7fdffe (computed value) SQRT double: X = 3fc17c9bf74fc261 R = 3fd7a7c5cf3bd18b (expected value) C = 3fdc8eec5ac4d462 (computed value) SQRT double: X = fff8123456789abc R = fff8123456789abc (expected value) C = fff4000040000000 (computed value) SQRT double: X = fff0000000000000 R = fff8000000000000 (expected value) C = fff4000040000000 (computed value) ====================== Summary ====================== FAILED ADD float : 41 tested, 3 errors FAILED SUB float : 41 tested, 3 errors FAILED MUL float : 24 tested, 5 errors FAILED DIV float : 31 tested, 4 errors FAILED SQRT float : 34 tested, 7 errors FAILED ADD double : 22 tested, 2 errors FAILED SUB double : 22 tested, 2 errors FAILED MUL double : 42 tested, 11 errors FAILED DIV double : 39 tested, 8 errors FAILED SQRT double : 29 tested, 3 errors *** GlibC + Intel # ./testb4 ====================== Summary ====================== PASSED ADD float : 41 tested, 0 errors PASSED SUB float : 41 tested, 0 errors PASSED MUL float : 24 tested, 0 errors PASSED DIV float : 31 tested, 0 errors PASSED SQRT float : 34 tested, 0 errors PASSED ADD double : 22 tested, 0 errors PASSED SUB double : 22 tested, 0 errors PASSED MUL double : 42 tested, 0 errors PASSED DIV double : 39 tested, 0 errors PASSED SQRT double : 29 tested, 0 errors *** GlibC + Patch Nico # ./testa4 ADD float : X = 7f812345 Y = 00800000 R = 7fc12345 (expected value) C = 7f812345 (computed value) ADD float : X = 00800000 Y = 7f812345 R = 7fc12345 (expected value) C = 7f812345 (computed value) ADD float : X = ff812345 Y = 00800000 R = ffc12345 (expected value) C = ff812345 (computed value) SUB float : X = 7f812345 Y = 80800000 R = 7fc12345 (expected value) C = 7f812345 (computed value) SUB float : X = 00800000 Y = ff812345 R = 7fc12345 (expected value) C = 7f812345 (computed value) SUB float : X = ff812345 Y = 80800000 R = ffc12345 (expected value) C = ff812345 (computed value) DIV float : X = 80800000 Y = 7fc12345 R = 7fc12345 (expected value) C = 7fc00000 (computed value) DIV float : X = ffc12345 Y = 80800000 R = ffc12345 (expected value) C = 7fc00000 (computed value) MUL double: X = fff8123456789abc Y = bff0000000000000 R = fff8123456789abc (expected value) C = 7ff8000056789abc (computed value) MUL double: X = bff654e372d5cecb Y = 0000000000000001 R = 8000000000000001 (expected value) C = 8000000000000801 (computed value) MUL double: X = 3fe6e1c27617a382 Y = 8000000000000001 R = 8000000000000001 (expected value) C = 8000000000000401 (computed value) MUL double: X = 413fba18fe4348d1 Y = 8000000000000001 R = 80000000001fba19 (expected value) C = 80000000801fba19 (computed value) ====================== Summary ====================== FAILED ADD float : 41 tested, 3 errors FAILED SUB float : 41 tested, 3 errors PASSED MUL float : 24 tested, 0 errors FAILED DIV float : 31 tested, 2 errors PASSED SQRT float : 34 tested, 0 errors PASSED ADD double : 22 tested, 0 errors PASSED SUB double : 22 tested, 0 errors FAILED MUL double : 42 tested, 4 errors PASSED DIV double : 39 tested, 0 errors PASSED SQRT double : 29 tested, 0 errors
------------------------------------------------------------------- Subscription options: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm FAQ/Etiquette: http://www.arm.linux.org.uk/armlinux/mailinglists.php
[Site Home] [IETF Annouce] [Security] [Bugtraq] [Linux] [Linux ARM Kernel] [Linux MIPS] [ECOS] [Tools] [DDR & Rambus] [Monitors]