unit tests for math.floats.env
							parent
							
								
									36ec53a968
								
							
						
					
					
						commit
						96db254311
					
				| 
						 | 
				
			
			@ -0,0 +1,123 @@
 | 
			
		|||
USING: kernel math math.floats.env math.functions math.libm
 | 
			
		||||
sets tools.test ;
 | 
			
		||||
IN: math.floats.env.tests
 | 
			
		||||
 | 
			
		||||
[ t ] [
 | 
			
		||||
    [ 1.0 0.0 / drop ] collect-fp-exceptions
 | 
			
		||||
    { +fp-zero-divide+ } set= 
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[ t ] [
 | 
			
		||||
    [ 1.0 3.0 / drop ] collect-fp-exceptions
 | 
			
		||||
    { +fp-inexact+ } set= 
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[ t ] [
 | 
			
		||||
    [ 2.0 100000.0 ^ drop ] collect-fp-exceptions
 | 
			
		||||
    { +fp-inexact+ +fp-overflow+ } set= 
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[ t ] [
 | 
			
		||||
    [ 2.0 -100000.0 ^ drop ] collect-fp-exceptions
 | 
			
		||||
    { +fp-inexact+ +fp-underflow+ } set= 
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[ t ] [
 | 
			
		||||
    [ -1.0 fsqrt drop ] collect-fp-exceptions
 | 
			
		||||
    { +fp-invalid-operation+ } set= 
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    HEX: 3fd5,5555,5555,5555
 | 
			
		||||
    HEX: 3fc9,9999,9999,999a
 | 
			
		||||
    HEX: bfc9,9999,9999,999a
 | 
			
		||||
    HEX: bfd5,5555,5555,5555
 | 
			
		||||
] [
 | 
			
		||||
    +round-nearest+ [
 | 
			
		||||
         1.0 3.0 /f double>bits
 | 
			
		||||
         1.0 5.0 /f double>bits
 | 
			
		||||
        -1.0 5.0 /f double>bits
 | 
			
		||||
        -1.0 3.0 /f double>bits
 | 
			
		||||
    ] with-rounding-mode
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    HEX: 3fd5,5555,5555,5555
 | 
			
		||||
    HEX: 3fc9,9999,9999,9999
 | 
			
		||||
    HEX: bfc9,9999,9999,999a
 | 
			
		||||
    HEX: bfd5,5555,5555,5556
 | 
			
		||||
] [
 | 
			
		||||
    +round-down+ [
 | 
			
		||||
         1.0 3.0 /f double>bits
 | 
			
		||||
         1.0 5.0 /f double>bits
 | 
			
		||||
        -1.0 5.0 /f double>bits
 | 
			
		||||
        -1.0 3.0 /f double>bits
 | 
			
		||||
    ] with-rounding-mode
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    HEX: 3fd5,5555,5555,5556
 | 
			
		||||
    HEX: 3fc9,9999,9999,999a
 | 
			
		||||
    HEX: bfc9,9999,9999,9999
 | 
			
		||||
    HEX: bfd5,5555,5555,5555
 | 
			
		||||
] [
 | 
			
		||||
    +round-up+ [
 | 
			
		||||
         1.0 3.0 /f double>bits
 | 
			
		||||
         1.0 5.0 /f double>bits
 | 
			
		||||
        -1.0 5.0 /f double>bits
 | 
			
		||||
        -1.0 3.0 /f double>bits
 | 
			
		||||
    ] with-rounding-mode
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    HEX: 3fd5,5555,5555,5555
 | 
			
		||||
    HEX: 3fc9,9999,9999,9999
 | 
			
		||||
    HEX: bfc9,9999,9999,9999
 | 
			
		||||
    HEX: bfd5,5555,5555,5555
 | 
			
		||||
] [
 | 
			
		||||
    +round-zero+ [
 | 
			
		||||
         1.0 3.0 /f double>bits
 | 
			
		||||
         1.0 5.0 /f double>bits
 | 
			
		||||
        -1.0 5.0 /f double>bits
 | 
			
		||||
        -1.0 3.0 /f double>bits
 | 
			
		||||
    ] with-rounding-mode
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
! ensure rounding mode is restored to +round-nearest+
 | 
			
		||||
[
 | 
			
		||||
    HEX: 3fd5,5555,5555,5555
 | 
			
		||||
    HEX: 3fc9,9999,9999,999a
 | 
			
		||||
    HEX: bfc9,9999,9999,999a
 | 
			
		||||
    HEX: bfd5,5555,5555,5555
 | 
			
		||||
] [
 | 
			
		||||
     1.0 3.0 /f double>bits
 | 
			
		||||
     1.0 5.0 /f double>bits
 | 
			
		||||
    -1.0 5.0 /f double>bits
 | 
			
		||||
    -1.0 3.0 /f double>bits
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    HEX: 0000,0000,0000,07e8
 | 
			
		||||
] [
 | 
			
		||||
    +denormal-keep+ [
 | 
			
		||||
        10.0 -320.0 ^ double>bits
 | 
			
		||||
    ] with-denormal-mode
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    HEX: 0000,0000,0000,0000
 | 
			
		||||
] [
 | 
			
		||||
    +denormal-flush+ [
 | 
			
		||||
        10.0 -320.0 ^ double>bits
 | 
			
		||||
    ] with-denormal-mode
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
! ensure denormal mode is restored to +denormal-keep+
 | 
			
		||||
[
 | 
			
		||||
    HEX: 0000,0000,0000,07e8
 | 
			
		||||
] [
 | 
			
		||||
    +denormal-keep+ [
 | 
			
		||||
        10.0 -320.0 ^ double>bits
 | 
			
		||||
    ] with-denormal-mode
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue