Skip to content
Prev Previous commit
Next Next commit
linalg-pinv: gcc-15 test fix
  • Loading branch information
perazz committed Jun 28, 2025
commit f83a79391d7fa2e101f34ead748bde3241c65a4b
31 changes: 26 additions & 5 deletions test/linalg/test_linalg_pseudoinverse.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ module test_linalg_pseudoinverse
allocate(tests(0))

#:for rk,rt,ri in REAL_KINDS_TYPES
tests = [tests,new_unittest("${ri}$_eye_pseudoinverse",test_${ri}$_eye_pseudoinverse)]
call add_test(tests,new_unittest("${ri}$_eye_pseudoinverse",test_${ri}$_eye_pseudoinverse))
#:endfor
#:for rk,rt,ri in RC_KINDS_TYPES
tests = [tests,new_unittest("${ri}$_square_pseudoinverse",test_${ri}$_square_pseudoinverse), &
new_unittest("${ri}$_tall_pseudoinverse",test_${ri}$_tall_pseudoinverse), &
new_unittest("${ri}$_wide_pseudoinverse",test_${ri}$_wide_pseudoinverse), &
new_unittest("${ri}$_singular_pseudoinverse",test_${ri}$_singular_pseudoinverse)]
call add_test(tests,new_unittest("${ri}$_square_pseudoinverse",test_${ri}$_square_pseudoinverse))
call add_test(tests,new_unittest("${ri}$_tall_pseudoinverse",test_${ri}$_tall_pseudoinverse))
call add_test(tests,new_unittest("${ri}$_wide_pseudoinverse",test_${ri}$_wide_pseudoinverse))
call add_test(tests,new_unittest("${ri}$_singular_pseudoinverse",test_${ri}$_singular_pseudoinverse))
#:endfor

end subroutine test_pseudoinverse_matrix
Expand Down Expand Up @@ -218,6 +218,27 @@ module test_linalg_pseudoinverse

#:endfor

! gcc-15 bugfix utility
pure subroutine add_test(tests,new_test)
type(unittest_type), allocatable, intent(inout) :: tests(:)
type(unittest_type), intent(in) :: new_test

integer :: n
type(unittest_type), allocatable :: new_tests(:)

if (allocated(tests)) then
n = size(tests)
else
n = 0
end if

allocate(new_tests(n+1))
if (n>0) new_tests(1:n) = tests(1:n)
new_tests(1+n) = new_test
call move_alloc(from=new_tests,to=tests)

end subroutine add_test

end module test_linalg_pseudoinverse

program test_inv
Expand Down