diff --git a/test/computational_routines/geaxpby/geaxpby.f90 b/test/computational_routines/geaxpby/geaxpby.f90 index 22766d65..f2a6e5e2 100644 --- a/test/computational_routines/geaxpby/geaxpby.f90 +++ b/test/computational_routines/geaxpby/geaxpby.f90 @@ -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 \ No newline at end of file diff --git a/test/computational_routines/geaxpby/psb_geaxpby_test.f90 b/test/computational_routines/geaxpby/psb_geaxpby_test.f90 index fbf20f53..cf3929e1 100644 --- a/test/computational_routines/geaxpby/psb_geaxpby_test.f90 +++ b/test/computational_routines/geaxpby/psb_geaxpby_test.f90 @@ -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 diff --git a/test/computational_routines/geaxpby/psblas_geaxpby_test.log b/test/computational_routines/geaxpby/psblas_geaxpby_test.log index 8100e3df..f28f43d6 100644 --- a/test/computational_routines/geaxpby/psblas_geaxpby_test.log +++ b/test/computational_routines/geaxpby/psblas_geaxpby_test.log @@ -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]