@@ -23,22 +23,30 @@ def test_get_bits_from_int(self):
2323 self .assertEqual (int2bits (0xf007 ), [True ]* 3 + [False ]* 9 + [True ]* 4 )
2424 self .assertEqual (int2bits (6 , 4 ), [False , True , True , False ])
2525
26- def test_decode_ieee (self ):
26+ def test_ieee (self ):
2727 # test IEEE NaN
28- self .assertTrue (math .isnan (decode_ieee (0x7fffffff )))
28+ self .assertTrue (math .isnan (decode_ieee (0x7fc00000 )))
29+ self .assertEqual (encode_ieee (float ('nan' )), 0x7fc00000 )
2930 # test +/- infinity
3031 self .assertTrue (math .isinf (decode_ieee (0xff800000 )))
3132 self .assertTrue (math .isinf (decode_ieee (0x7f800000 )))
32- # test some values
33- self .assertAlmostEqual (decode_ieee (0x3e99999a ), 0.3 )
34- self .assertAlmostEqual (decode_ieee (0xbe99999a ), - 0.3 )
35-
36- def test_encode_ieee (self ):
37- # test IEEE NaN
38- self .assertEqual (encode_ieee (float ('nan' )), 2143289344 )
39- # test some values
40- self .assertAlmostEqual (encode_ieee (0.3 ), 0x3e99999a )
41- self .assertAlmostEqual (encode_ieee (- 0.3 ), 0xbe99999a )
33+ # test big and small values
34+ avogad = 6.022140857e+23
35+ avo_32 = 0x66ff0c2f
36+ avo_64 = 0x44dfe185d2f54b67
37+ planck = 6.62606957e-34
38+ pla_32 = 0x085c305e
39+ pla_64 = 0x390b860bb596a559
40+ # IEEE single or double precision format -> float
41+ self .assertAlmostEqual (decode_ieee (avo_32 ), avogad , delta = avogad * 1e-7 )
42+ self .assertAlmostEqual (decode_ieee (avo_64 , double = True ), avogad )
43+ self .assertAlmostEqual (decode_ieee (pla_32 ), planck )
44+ self .assertAlmostEqual (decode_ieee (pla_64 , double = True ), planck )
45+ # float -> IEEE single or double precision format
46+ self .assertAlmostEqual (encode_ieee (avogad ), avo_32 )
47+ self .assertAlmostEqual (encode_ieee (avogad , double = True ), avo_64 )
48+ self .assertAlmostEqual (encode_ieee (planck ), pla_32 )
49+ self .assertAlmostEqual (encode_ieee (planck , double = True ), pla_64 )
4250
4351 def test_word_list_to_long (self ):
4452 # test word_list_to_long() and short alias words2longs()
0 commit comments