@@ -58,7 +58,7 @@ subroutine test_linear2d_layer_backward(linear, ok, input, gradient)
5858 real :: dw_shape(2 )
5959 real :: db_shape(1 )
6060 real :: gradient_flat(12 )
61- real :: dw_flat(4 )
61+ integer :: dw_flat(4 ) ! cpu imprecision workaround
6262 real :: expected_gradient_shape(2 ) = [3 , 4 ]
6363 real :: expected_dw_shape(2 ) = [4 , 1 ]
6464 real :: expected_db_shape(1 ) = [1 ]
@@ -67,7 +67,7 @@ subroutine test_linear2d_layer_backward(linear, ok, input, gradient)
6767 0.2 , 0.3 , 0.2 , 0.2 ,&
6868 0.3 , 0.2 , 0.2 , 0.3 &
6969 ]
70- real :: expected_dw_flat(4 ) = [0. 7 , 0. 7 , 1.4 , 1.4 ]
70+ integer :: expected_dw_flat(4 ) = [7 , 7 , 14 , 14 ] ! cpu imprecision workaround
7171 real :: expected_db(1 ) = [7 ]
7272
7373 call linear % backward(input, gradient)
@@ -93,7 +93,7 @@ subroutine test_linear2d_layer_backward(linear, ok, input, gradient)
9393 ok = .false.
9494 write (stderr, ' (a)' ) ' backward returned incorrect gradient values.. failed'
9595 end if
96- dw_flat = reshape (linear % dw, shape (dw_flat))
96+ dw_flat = nint ( reshape (linear % dw, shape (dw_flat)) * 10 )
9797 if (.not. all (dw_flat.eq. expected_dw_flat)) then
9898 ok = .false.
9999 write (stderr, ' (a)' ) ' backward returned incorrect dw values.. failed'
0 commit comments