@@ -5471,6 +5471,29 @@ def test_offset_scalar_cast(self):
54715471 y = x [2 :]
54725472 self .assertEqual (int (y ), 3 )
54735473
5474+ @unittest .skipIf (torch .set_flush_denormal (False ),
5475+ "flush_denormal not supported" )
5476+ def test_set_flush_denormal (self ):
5477+ tiny_float = 1e-42
5478+ tiny_double = 1e-320
5479+ float_tensor = torch .FloatTensor ([1.0 , tiny_float ])
5480+ double_tensor = torch .DoubleTensor ([1.0 , tiny_float , tiny_double ])
5481+
5482+ self .assertEqual (float_tensor [0 ], 1.0 , prec = 0.0 )
5483+ self .assertEqual (float_tensor [1 ], tiny_float , prec = tiny_float / 16 )
5484+ self .assertEqual (double_tensor [0 ], 1.0 , prec = 0.0 )
5485+ self .assertEqual (double_tensor [1 ], tiny_float , prec = 0.0 )
5486+ self .assertEqual (double_tensor [2 ], tiny_double , prec = 0.0 )
5487+
5488+ torch .set_flush_denormal (True )
5489+ self .assertEqual (float_tensor [0 ], 1.0 , prec = 0.0 )
5490+ self .assertEqual (float_tensor [1 ], 0.0 , prec = 0.0 ) # tiny_float to zero
5491+ self .assertEqual (double_tensor [0 ], 1.0 , prec = 0.0 )
5492+ # tiny_float is not converted to zero in double type
5493+ self .assertEqual (double_tensor [1 ], tiny_float , prec = 0.0 )
5494+ self .assertEqual (double_tensor [2 ], 0.0 , prec = 0.0 ) # tiny_double to zero
5495+ torch .set_flush_denormal (False )
5496+
54745497# Functions to test negative dimension wrapping
54755498METHOD = 1
54765499INPLACE_METHOD = 2
0 commit comments