Google
  Web www.spinics.net

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]

Powered by Linux