[UPDATE] Completed testing using double precision comparison with single precision unit roundoff

test_dev
Stack-1 11 months ago
parent 0f786e5b18
commit c556d729cd

@ -12,7 +12,7 @@ program main
! parameters array
character(len=64) :: x(4),y(4)
real(psb_spk_) :: alpha(3), beta(3)
real(psb_dpk_) :: alpha(3), beta(3)
integer(psb_ipk_) :: arr_size
integer(psb_ipk_) :: tests_number, count
@ -21,7 +21,6 @@ program main
integer(psb_ipk_) :: info, ret, unit
! Setup logger output
unit = 43
open(unit, file='psblas_geaxpby_test.log', status='replace', action='write', iostat=info)
if (info /= 0) then
print *, 'Error opening output file.'
@ -31,7 +30,6 @@ program main
! Set psb_out_unit to redirect PSBLAS output
psb_out_unit = unit
! Initialize parameters
x(1) = "vectors/x1.mtx"
x(2) = "vectors/x2.mtx"
@ -43,13 +41,13 @@ program main
y(3) = "vectors/y3.mtx"
y(4) = "vectors/y4.mtx"
alpha(1) = sone
alpha(2) = -sone
alpha(3) = szero
alpha(1) = done
alpha(2) = -done
alpha(3) = dzero
beta(1) = sone
beta(2) = -sone
beta(3) = szero
beta(1) = done
beta(2) = -done
beta(3) = dzero
arr_size = 10000
tests_number = size(x) * size(y) * size(alpha) * size(beta)
@ -72,8 +70,8 @@ program main
do j=1,size(y)
do k=1,size(alpha)
do h=1,size(beta)
call psb_geaxpby_kernel(x_file=x(i), y_file=y(j), alpha = alpha(k), beta = beta(h), &
& arr_size = arr_size, ctxt = ctxt, ret = ret)
call psb_geaxpby_kernel(x_file=x(i), y_file=y(j), alpha = real(alpha(k),psb_spk_),&
& beta = real(beta(h),psb_spk_), arr_size = arr_size, ctxt = ctxt, ret = ret)
if(my_rank == psb_root_) then
count = count + 1
if(ret /= -1) then
@ -90,12 +88,39 @@ program main
end do
end do
if(my_rank == psb_root_) then
write(psb_out_unit, *) ''
count = 0
end if
! Here double precision comparison should be done
call psb_barrier(ctxt)
! Here double precision comparison should be done
do i=1,size(x)
do j=1,size(y)
do k=1,size(alpha)
do h=1,size(beta)
call psb_geaxpby_check(x_file=x(i), y_file=y(j), alpha = alpha(k), beta = beta(h), &
& arr_size = arr_size, ctxt = ctxt, ret = ret)
if(my_rank == psb_root_) then
count = count + 1
if(ret == 0) then
write(psb_out_unit, '(A,I0,A,I0,A,A)') &
& "Double precision check ", count , "/", tests_number, CHAR(9), "[OK]"
else
write(psb_out_unit, '(A,I0,A,I0,A,A)') &
& "Double precision check ", count , "/", tests_number, CHAR(9), "[FAIL]"
goto 9999
end if
end if
call psb_barrier(ctxt)
end do
end do
end do
end do
call psb_exit(ctxt)
9999 call psb_exit(ctxt)
return
end program main

@ -49,7 +49,10 @@
module psb_geaxpby_test
contains
!> @brief Function to excecute psb_geaxpby in single precision and
!! save the results on file
!!
subroutine psb_geaxpby_kernel(x_file, y_file, alpha, beta, arr_size, ctxt, ret)
use psb_base_mod
use psb_util_mod
@ -104,20 +107,20 @@ module psb_geaxpby_test
! Allocate descriptor as if it was a block rows distribution
call psb_cdall(ctxt, desc_a, info,nl=10000/np)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error allocating desc_a data structure"
write(psb_out_unit,'(A)') "Error allocating desc_a data structure"
goto 9999
end if
call psb_cdasb(desc_a, info)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error assembling desc_a data structure"
write(psb_out_unit,'(A)') "Error assembling desc_a data structure"
goto 9999
end if
call psb_geall(x,desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error allocating x data structure"
write(psb_out_unit,'(A)') "Error allocating x data structure"
goto 9999
end if
@ -125,21 +128,21 @@ module psb_geaxpby_test
! Populate x class using data from x_global vector
call psb_scatter(x_global,x,desc_a,info,root=psb_root_)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error in psb_scatter to populate x data structure"
write(psb_out_unit,'(A)') "Error in psb_scatter to populate x data structure"
goto 9999
end if
call psb_geall(y,desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error allocating y data structure"
write(psb_out_unit,'(A)') "Error allocating y data structure"
goto 9999
end if
! Populate y class using data from y_global vector
call psb_scatter(y_global,y,desc_a,info,root=psb_root_)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error in psb_scatter to populate y data structure"
write(psb_out_unit,'(A)') "Error in psb_scatter to populate y data structure"
goto 9999
end if
@ -147,7 +150,7 @@ module psb_geaxpby_test
! y = alpha * x + beta * y
call psb_geaxpby(alpha,x,beta,y,desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error in psb_geaxpby routine"
write(psb_out_unit,'(A)') "Error in psb_geaxpby routine"
goto 9999
end if
@ -187,25 +190,36 @@ module psb_geaxpby_test
end if
! gather the result combining all the partial ones
if(np > 1) then
call psb_gather(x_global, x, desc_a, info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error gathering global vector x to write on file"
goto 9999
end if
end if
! Save result to output file
call mm_array_write(y,"Result vector",info,filename=output_file_name)
if(my_rank == psb_root_) then
call mm_array_write(y_global,"Result vector",info,filename=output_file_name)
end if
! Deallocate
call psb_gefree(x, desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error in vector x free routine"
write(psb_out_unit,'(A)') "Error in vector x free routine"
goto 9999
end if
call psb_gefree(y, desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error in vector y free routine"
write(psb_out_unit,'(A)') "Error in vector y free routine"
goto 9999
end if
call psb_cdfree(desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,*) "Error in matrix descriptor free routine"
write(psb_out_unit,'(A)') "Error in matrix descriptor free routine"
goto 9999
end if
@ -225,6 +239,216 @@ module psb_geaxpby_test
!> @brief Function to excecute psb_geaxpby in double precision and
!! compare the results with the ones on file
!!
subroutine psb_geaxpby_check(x_file, y_file, alpha, beta, arr_size, ctxt, ret)
use psb_base_mod
use psb_util_mod
implicit none
! input parameters
character(len = *), intent(in) :: x_file, y_file
real(psb_dpk_), intent(in) :: alpha, beta
integer(psb_ipk_), intent(in) :: arr_size
type(psb_ctxt_type), intent(in) :: ctxt
! output parameters
integer(psb_ipk_), intent(out) :: ret
! vectors
type(psb_d_vect_type) :: x, y
type(psb_s_vect_type) :: y_check
! matrix descriptor data structure
type(psb_desc_type) :: desc_a
! communication context
integer(psb_ipk_) :: my_rank, np, info, err_act
! variables outside PSLBALS data structures
real(psb_dpk_), allocatable :: x_global(:), y_global(:)
integer(psb_ipk_) :: i
! others
logical :: exists
character(len=:), allocatable :: output_file_name
info = psb_success_
call psb_info(ctxt,my_rank,np)
if (my_rank < 0) then
! This should not happen, but just in case
call psb_error(ctxt)
endif
! Generate random array for b using always the same seed
if(my_rank == psb_root_) then
allocate(x_global(arr_size))
allocate(y_global(arr_size))
call mm_array_read(x_global,info,filename=x_file)
call mm_array_read(y_global,info,filename=y_file)
end if
! Allocate descriptor as if it was a block rows distribution
call psb_cdall(ctxt, desc_a, info,nl=10000/np)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error allocating desc_a data structure"
goto 9999
end if
call psb_cdasb(desc_a, info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error assembling desc_a data structure"
goto 9999
end if
call psb_geall(x,desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error allocating x data structure"
goto 9999
end if
! Populate x class using data from x_global vector
call psb_scatter(x_global,x,desc_a,info,root=psb_root_)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error in psb_scatter to populate x data structure"
goto 9999
end if
call psb_geall(y,desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error allocating y data structure"
goto 9999
end if
! Populate y class using data from y_global vector
call psb_scatter(y_global,y,desc_a,info,root=psb_root_)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error in psb_scatter to populate y data structure"
goto 9999
end if
call psb_geall(y_check,desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error allocating y_check data structure"
goto 9999
end if
! y = alpha * x + beta * y
call psb_geaxpby(alpha,x,beta,y,desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error in psb_geaxpby routine"
goto 9999
end if
if(my_rank == psb_root_) then
! Make the root process be the one that saves everything on file
if(np == 1) then
! Check if output directory exists
inquire(file='serial/', exist=exists)
if(.not.exists) then
write(psb_out_unit,'(A)') "Error in psb_geaxpby_check routine, no single precision result is saved on file"
goto 9999
end if
output_file_name = "serial/"
else
! Check if output directory exists
inquire(file='parallel/', exist=exists)
if(.not.exists) then
write(psb_out_unit,'(A)') "Error in psb_geaxpby_check routine, no single precision result is saved on file"
goto 9999
end if
output_file_name = "parallel/"
end if
output_file_name = output_file_name // "sol_" // x_file(9:10) // "_" // y_file(9:10)
if(alpha == done) then
output_file_name = output_file_name // "_a1"
else if(alpha == -done) then
output_file_name = output_file_name // "_a2"
else if(alpha == dzero) then
output_file_name = output_file_name // "_a3"
end if
if(beta == done) then
output_file_name = output_file_name // "_b1.mtx"
else if(beta == -done) then
output_file_name = output_file_name // "_b2.mtx"
else if(beta == dzero) then
output_file_name = output_file_name // "_b3.mtx"
end if
! Read single precision result from file
call mm_array_read(y_check,info,filename=output_file_name)
! 5.96e-08 is 2^-24 (Single precision unit roundoff)
! 1.19e-07 is 2^-23 (Single precision unit interval)
do i=1, arr_size
! write(psb_out_unit, *) abs(y%v%v(i) - real(y%v%v(i),psb_spk_)), 1.19D-07, &
! & abs(y%v%v(i) - real(y%v%v(i),psb_spk_)) > 1.19D-07
if(abs(y%v%v(i) - y_check%v%v(i)) > 1.19D-07) then
ret = -1
end if
end do
end if
call psb_barrier(ctxt)
! Deallocate
call psb_gefree(x, desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error in vector x free routine"
goto 9999
end if
call psb_gefree(y, desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error in vector y free routine"
goto 9999
end if
call psb_gefree(y_check, desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error in vector y_check free routine"
goto 9999
end if
call psb_cdfree(desc_a,info)
if(info /= psb_success_) then
write(psb_out_unit,'(A)') "Error in matrix descriptor free routine"
goto 9999
end if
if(my_rank == 0) then
deallocate(x_global)
deallocate(y_global)
end if
ret = 0
return
! Error handling
9999 ret = -1
stop
end subroutine
!> @brief Function to randomly generate x and y vectors
!! and save them on multiple files based on their
@ -237,7 +461,7 @@ module psb_geaxpby_test
implicit none
integer(psb_ipk_), intent(in) :: arr_size
real(psb_spk_), allocatable :: x(:), y(:)
real(psb_dpk_), allocatable :: x(:), y(:)
integer(psb_ipk_) :: i, info
logical :: exists

@ -1,147 +1,292 @@
Welcome to PSBLAS version: 3.9.0
This is the psb_geaxpby_test sample program
Generation of file 1/144 [OK]
Generation of file 2/144 [OK]
Generation of file 3/144 [OK]
Generation of file 4/144 [OK]
Generation of file 5/144 [OK]
Generation of file 6/144 [OK]
Generation of file 7/144 [OK]
Generation of file 8/144 [OK]
Generation of file 9/144 [OK]
Generation of file 10/144 [OK]
Generation of file 11/144 [OK]
Generation of file 12/144 [OK]
Generation of file 13/144 [OK]
Generation of file 14/144 [OK]
Generation of file 15/144 [OK]
Generation of file 16/144 [OK]
Generation of file 17/144 [OK]
Generation of file 18/144 [OK]
Generation of file 19/144 [OK]
Generation of file 20/144 [OK]
Generation of file 21/144 [OK]
Generation of file 22/144 [OK]
Generation of file 23/144 [OK]
Generation of file 24/144 [OK]
Generation of file 25/144 [OK]
Generation of file 26/144 [OK]
Generation of file 27/144 [OK]
Generation of file 28/144 [OK]
Generation of file 29/144 [OK]
Generation of file 30/144 [OK]
Generation of file 31/144 [OK]
Generation of file 32/144 [OK]
Generation of file 33/144 [OK]
Generation of file 34/144 [OK]
Generation of file 35/144 [OK]
Generation of file 36/144 [OK]
Generation of file 37/144 [OK]
Generation of file 38/144 [OK]
Generation of file 39/144 [OK]
Generation of file 40/144 [OK]
Generation of file 41/144 [OK]
Generation of file 42/144 [OK]
Generation of file 43/144 [OK]
Generation of file 44/144 [OK]
Generation of file 45/144 [OK]
Generation of file 46/144 [OK]
Generation of file 47/144 [OK]
Generation of file 48/144 [OK]
Generation of file 49/144 [OK]
Generation of file 50/144 [OK]
Generation of file 51/144 [OK]
Generation of file 52/144 [OK]
Generation of file 53/144 [OK]
Generation of file 54/144 [OK]
Generation of file 55/144 [OK]
Generation of file 56/144 [OK]
Generation of file 57/144 [OK]
Generation of file 58/144 [OK]
Generation of file 59/144 [OK]
Generation of file 60/144 [OK]
Generation of file 61/144 [OK]
Generation of file 62/144 [OK]
Generation of file 63/144 [OK]
Generation of file 64/144 [OK]
Generation of file 65/144 [OK]
Generation of file 66/144 [OK]
Generation of file 67/144 [OK]
Generation of file 68/144 [OK]
Generation of file 69/144 [OK]
Generation of file 70/144 [OK]
Generation of file 71/144 [OK]
Generation of file 72/144 [OK]
Generation of file 73/144 [OK]
Generation of file 74/144 [OK]
Generation of file 75/144 [OK]
Generation of file 76/144 [OK]
Generation of file 77/144 [OK]
Generation of file 78/144 [OK]
Generation of file 79/144 [OK]
Generation of file 80/144 [OK]
Generation of file 81/144 [OK]
Generation of file 82/144 [OK]
Generation of file 83/144 [OK]
Generation of file 84/144 [OK]
Generation of file 85/144 [OK]
Generation of file 86/144 [OK]
Generation of file 87/144 [OK]
Generation of file 88/144 [OK]
Generation of file 89/144 [OK]
Generation of file 90/144 [OK]
Generation of file 91/144 [OK]
Generation of file 92/144 [OK]
Generation of file 93/144 [OK]
Generation of file 94/144 [OK]
Generation of file 95/144 [OK]
Generation of file 96/144 [OK]
Generation of file 97/144 [OK]
Generation of file 98/144 [OK]
Generation of file 99/144 [OK]
Generation of file 100/144 [OK]
Generation of file 101/144 [OK]
Generation of file 102/144 [OK]
Generation of file 103/144 [OK]
Generation of file 104/144 [OK]
Generation of file 105/144 [OK]
Generation of file 106/144 [OK]
Generation of file 107/144 [OK]
Generation of file 108/144 [OK]
Generation of file 109/144 [OK]
Generation of file 110/144 [OK]
Generation of file 111/144 [OK]
Generation of file 112/144 [OK]
Generation of file 113/144 [OK]
Generation of file 114/144 [OK]
Generation of file 115/144 [OK]
Generation of file 116/144 [OK]
Generation of file 117/144 [OK]
Generation of file 118/144 [OK]
Generation of file 119/144 [OK]
Generation of file 120/144 [OK]
Generation of file 121/144 [OK]
Generation of file 122/144 [OK]
Generation of file 123/144 [OK]
Generation of file 124/144 [OK]
Generation of file 125/144 [OK]
Generation of file 126/144 [OK]
Generation of file 127/144 [OK]
Generation of file 128/144 [OK]
Generation of file 129/144 [OK]
Generation of file 130/144 [OK]
Generation of file 131/144 [OK]
Generation of file 132/144 [OK]
Generation of file 133/144 [OK]
Generation of file 134/144 [OK]
Generation of file 135/144 [OK]
Generation of file 136/144 [OK]
Generation of file 137/144 [OK]
Generation of file 138/144 [OK]
Generation of file 139/144 [OK]
Generation of file 140/144 [OK]
Generation of file 141/144 [OK]
Generation of file 142/144 [OK]
Generation of file 143/144 [OK]
Generation of file 144/144 [OK]
Generation geaxpby single precision result file 1/144 [OK]
Generation geaxpby single precision result file 2/144 [OK]
Generation geaxpby single precision result file 3/144 [OK]
Generation geaxpby single precision result file 4/144 [OK]
Generation geaxpby single precision result file 5/144 [OK]
Generation geaxpby single precision result file 6/144 [OK]
Generation geaxpby single precision result file 7/144 [OK]
Generation geaxpby single precision result file 8/144 [OK]
Generation geaxpby single precision result file 9/144 [OK]
Generation geaxpby single precision result file 10/144 [OK]
Generation geaxpby single precision result file 11/144 [OK]
Generation geaxpby single precision result file 12/144 [OK]
Generation geaxpby single precision result file 13/144 [OK]
Generation geaxpby single precision result file 14/144 [OK]
Generation geaxpby single precision result file 15/144 [OK]
Generation geaxpby single precision result file 16/144 [OK]
Generation geaxpby single precision result file 17/144 [OK]
Generation geaxpby single precision result file 18/144 [OK]
Generation geaxpby single precision result file 19/144 [OK]
Generation geaxpby single precision result file 20/144 [OK]
Generation geaxpby single precision result file 21/144 [OK]
Generation geaxpby single precision result file 22/144 [OK]
Generation geaxpby single precision result file 23/144 [OK]
Generation geaxpby single precision result file 24/144 [OK]
Generation geaxpby single precision result file 25/144 [OK]
Generation geaxpby single precision result file 26/144 [OK]
Generation geaxpby single precision result file 27/144 [OK]
Generation geaxpby single precision result file 28/144 [OK]
Generation geaxpby single precision result file 29/144 [OK]
Generation geaxpby single precision result file 30/144 [OK]
Generation geaxpby single precision result file 31/144 [OK]
Generation geaxpby single precision result file 32/144 [OK]
Generation geaxpby single precision result file 33/144 [OK]
Generation geaxpby single precision result file 34/144 [OK]
Generation geaxpby single precision result file 35/144 [OK]
Generation geaxpby single precision result file 36/144 [OK]
Generation geaxpby single precision result file 37/144 [OK]
Generation geaxpby single precision result file 38/144 [OK]
Generation geaxpby single precision result file 39/144 [OK]
Generation geaxpby single precision result file 40/144 [OK]
Generation geaxpby single precision result file 41/144 [OK]
Generation geaxpby single precision result file 42/144 [OK]
Generation geaxpby single precision result file 43/144 [OK]
Generation geaxpby single precision result file 44/144 [OK]
Generation geaxpby single precision result file 45/144 [OK]
Generation geaxpby single precision result file 46/144 [OK]
Generation geaxpby single precision result file 47/144 [OK]
Generation geaxpby single precision result file 48/144 [OK]
Generation geaxpby single precision result file 49/144 [OK]
Generation geaxpby single precision result file 50/144 [OK]
Generation geaxpby single precision result file 51/144 [OK]
Generation geaxpby single precision result file 52/144 [OK]
Generation geaxpby single precision result file 53/144 [OK]
Generation geaxpby single precision result file 54/144 [OK]
Generation geaxpby single precision result file 55/144 [OK]
Generation geaxpby single precision result file 56/144 [OK]
Generation geaxpby single precision result file 57/144 [OK]
Generation geaxpby single precision result file 58/144 [OK]
Generation geaxpby single precision result file 59/144 [OK]
Generation geaxpby single precision result file 60/144 [OK]
Generation geaxpby single precision result file 61/144 [OK]
Generation geaxpby single precision result file 62/144 [OK]
Generation geaxpby single precision result file 63/144 [OK]
Generation geaxpby single precision result file 64/144 [OK]
Generation geaxpby single precision result file 65/144 [OK]
Generation geaxpby single precision result file 66/144 [OK]
Generation geaxpby single precision result file 67/144 [OK]
Generation geaxpby single precision result file 68/144 [OK]
Generation geaxpby single precision result file 69/144 [OK]
Generation geaxpby single precision result file 70/144 [OK]
Generation geaxpby single precision result file 71/144 [OK]
Generation geaxpby single precision result file 72/144 [OK]
Generation geaxpby single precision result file 73/144 [OK]
Generation geaxpby single precision result file 74/144 [OK]
Generation geaxpby single precision result file 75/144 [OK]
Generation geaxpby single precision result file 76/144 [OK]
Generation geaxpby single precision result file 77/144 [OK]
Generation geaxpby single precision result file 78/144 [OK]
Generation geaxpby single precision result file 79/144 [OK]
Generation geaxpby single precision result file 80/144 [OK]
Generation geaxpby single precision result file 81/144 [OK]
Generation geaxpby single precision result file 82/144 [OK]
Generation geaxpby single precision result file 83/144 [OK]
Generation geaxpby single precision result file 84/144 [OK]
Generation geaxpby single precision result file 85/144 [OK]
Generation geaxpby single precision result file 86/144 [OK]
Generation geaxpby single precision result file 87/144 [OK]
Generation geaxpby single precision result file 88/144 [OK]
Generation geaxpby single precision result file 89/144 [OK]
Generation geaxpby single precision result file 90/144 [OK]
Generation geaxpby single precision result file 91/144 [OK]
Generation geaxpby single precision result file 92/144 [OK]
Generation geaxpby single precision result file 93/144 [OK]
Generation geaxpby single precision result file 94/144 [OK]
Generation geaxpby single precision result file 95/144 [OK]
Generation geaxpby single precision result file 96/144 [OK]
Generation geaxpby single precision result file 97/144 [OK]
Generation geaxpby single precision result file 98/144 [OK]
Generation geaxpby single precision result file 99/144 [OK]
Generation geaxpby single precision result file 100/144 [OK]
Generation geaxpby single precision result file 101/144 [OK]
Generation geaxpby single precision result file 102/144 [OK]
Generation geaxpby single precision result file 103/144 [OK]
Generation geaxpby single precision result file 104/144 [OK]
Generation geaxpby single precision result file 105/144 [OK]
Generation geaxpby single precision result file 106/144 [OK]
Generation geaxpby single precision result file 107/144 [OK]
Generation geaxpby single precision result file 108/144 [OK]
Generation geaxpby single precision result file 109/144 [OK]
Generation geaxpby single precision result file 110/144 [OK]
Generation geaxpby single precision result file 111/144 [OK]
Generation geaxpby single precision result file 112/144 [OK]
Generation geaxpby single precision result file 113/144 [OK]
Generation geaxpby single precision result file 114/144 [OK]
Generation geaxpby single precision result file 115/144 [OK]
Generation geaxpby single precision result file 116/144 [OK]
Generation geaxpby single precision result file 117/144 [OK]
Generation geaxpby single precision result file 118/144 [OK]
Generation geaxpby single precision result file 119/144 [OK]
Generation geaxpby single precision result file 120/144 [OK]
Generation geaxpby single precision result file 121/144 [OK]
Generation geaxpby single precision result file 122/144 [OK]
Generation geaxpby single precision result file 123/144 [OK]
Generation geaxpby single precision result file 124/144 [OK]
Generation geaxpby single precision result file 125/144 [OK]
Generation geaxpby single precision result file 126/144 [OK]
Generation geaxpby single precision result file 127/144 [OK]
Generation geaxpby single precision result file 128/144 [OK]
Generation geaxpby single precision result file 129/144 [OK]
Generation geaxpby single precision result file 130/144 [OK]
Generation geaxpby single precision result file 131/144 [OK]
Generation geaxpby single precision result file 132/144 [OK]
Generation geaxpby single precision result file 133/144 [OK]
Generation geaxpby single precision result file 134/144 [OK]
Generation geaxpby single precision result file 135/144 [OK]
Generation geaxpby single precision result file 136/144 [OK]
Generation geaxpby single precision result file 137/144 [OK]
Generation geaxpby single precision result file 138/144 [OK]
Generation geaxpby single precision result file 139/144 [OK]
Generation geaxpby single precision result file 140/144 [OK]
Generation geaxpby single precision result file 141/144 [OK]
Generation geaxpby single precision result file 142/144 [OK]
Generation geaxpby single precision result file 143/144 [OK]
Generation geaxpby single precision result file 144/144 [OK]
Double precision check 1/144 [OK]
Double precision check 2/144 [OK]
Double precision check 3/144 [OK]
Double precision check 4/144 [OK]
Double precision check 5/144 [OK]
Double precision check 6/144 [OK]
Double precision check 7/144 [OK]
Double precision check 8/144 [OK]
Double precision check 9/144 [OK]
Double precision check 10/144 [OK]
Double precision check 11/144 [OK]
Double precision check 12/144 [OK]
Double precision check 13/144 [OK]
Double precision check 14/144 [OK]
Double precision check 15/144 [OK]
Double precision check 16/144 [OK]
Double precision check 17/144 [OK]
Double precision check 18/144 [OK]
Double precision check 19/144 [OK]
Double precision check 20/144 [OK]
Double precision check 21/144 [OK]
Double precision check 22/144 [OK]
Double precision check 23/144 [OK]
Double precision check 24/144 [OK]
Double precision check 25/144 [OK]
Double precision check 26/144 [OK]
Double precision check 27/144 [OK]
Double precision check 28/144 [OK]
Double precision check 29/144 [OK]
Double precision check 30/144 [OK]
Double precision check 31/144 [OK]
Double precision check 32/144 [OK]
Double precision check 33/144 [OK]
Double precision check 34/144 [OK]
Double precision check 35/144 [OK]
Double precision check 36/144 [OK]
Double precision check 37/144 [OK]
Double precision check 38/144 [OK]
Double precision check 39/144 [OK]
Double precision check 40/144 [OK]
Double precision check 41/144 [OK]
Double precision check 42/144 [OK]
Double precision check 43/144 [OK]
Double precision check 44/144 [OK]
Double precision check 45/144 [OK]
Double precision check 46/144 [OK]
Double precision check 47/144 [OK]
Double precision check 48/144 [OK]
Double precision check 49/144 [OK]
Double precision check 50/144 [OK]
Double precision check 51/144 [OK]
Double precision check 52/144 [OK]
Double precision check 53/144 [OK]
Double precision check 54/144 [OK]
Double precision check 55/144 [OK]
Double precision check 56/144 [OK]
Double precision check 57/144 [OK]
Double precision check 58/144 [OK]
Double precision check 59/144 [OK]
Double precision check 60/144 [OK]
Double precision check 61/144 [OK]
Double precision check 62/144 [OK]
Double precision check 63/144 [OK]
Double precision check 64/144 [OK]
Double precision check 65/144 [OK]
Double precision check 66/144 [OK]
Double precision check 67/144 [OK]
Double precision check 68/144 [OK]
Double precision check 69/144 [OK]
Double precision check 70/144 [OK]
Double precision check 71/144 [OK]
Double precision check 72/144 [OK]
Double precision check 73/144 [OK]
Double precision check 74/144 [OK]
Double precision check 75/144 [OK]
Double precision check 76/144 [OK]
Double precision check 77/144 [OK]
Double precision check 78/144 [OK]
Double precision check 79/144 [OK]
Double precision check 80/144 [OK]
Double precision check 81/144 [OK]
Double precision check 82/144 [OK]
Double precision check 83/144 [OK]
Double precision check 84/144 [OK]
Double precision check 85/144 [OK]
Double precision check 86/144 [OK]
Double precision check 87/144 [OK]
Double precision check 88/144 [OK]
Double precision check 89/144 [OK]
Double precision check 90/144 [OK]
Double precision check 91/144 [OK]
Double precision check 92/144 [OK]
Double precision check 93/144 [OK]
Double precision check 94/144 [OK]
Double precision check 95/144 [OK]
Double precision check 96/144 [OK]
Double precision check 97/144 [OK]
Double precision check 98/144 [OK]
Double precision check 99/144 [OK]
Double precision check 100/144 [OK]
Double precision check 101/144 [OK]
Double precision check 102/144 [OK]
Double precision check 103/144 [OK]
Double precision check 104/144 [OK]
Double precision check 105/144 [OK]
Double precision check 106/144 [OK]
Double precision check 107/144 [OK]
Double precision check 108/144 [OK]
Double precision check 109/144 [OK]
Double precision check 110/144 [OK]
Double precision check 111/144 [OK]
Double precision check 112/144 [OK]
Double precision check 113/144 [OK]
Double precision check 114/144 [OK]
Double precision check 115/144 [OK]
Double precision check 116/144 [OK]
Double precision check 117/144 [OK]
Double precision check 118/144 [OK]
Double precision check 119/144 [OK]
Double precision check 120/144 [OK]
Double precision check 121/144 [OK]
Double precision check 122/144 [OK]
Double precision check 123/144 [OK]
Double precision check 124/144 [OK]
Double precision check 125/144 [OK]
Double precision check 126/144 [OK]
Double precision check 127/144 [OK]
Double precision check 128/144 [OK]
Double precision check 129/144 [OK]
Double precision check 130/144 [OK]
Double precision check 131/144 [OK]
Double precision check 132/144 [OK]
Double precision check 133/144 [OK]
Double precision check 134/144 [OK]
Double precision check 135/144 [OK]
Double precision check 136/144 [OK]
Double precision check 137/144 [OK]
Double precision check 138/144 [OK]
Double precision check 139/144 [OK]
Double precision check 140/144 [OK]
Double precision check 141/144 [OK]
Double precision check 142/144 [OK]
Double precision check 143/144 [OK]
Double precision check 144/144 [OK]

Loading…
Cancel
Save