pure subroutine mat_mat_rel_AB_opt(A, B, C, option)
real(rk), intent(in), contiguous :: A(:,:), B(:,:)
real(rk), intent(inout), contiguous :: C(:,:)
character(*), intent(in) :: option
select case (option)
case ('m1')
call mm_AB_1(A, B, C)
case ('m2')
call mm_AB_2(A, B, C)
case ('m3')
call mm_AB_3(A, B, C)
case ('m4')
call mm_AB_4(A, B, C)
case ('m5')
call mm_AB_5(A, B, C)
case ('m6')
call mm_AB_6(A, B, C)
case ('m7')
call mm_AB_7(A, B, C)
case ('m8')
call mm_AB_8(A, B, C)
case ('m9')
call mm_AB_9(A, B, C)
case ('m10')
call mm_AB_10(A, B, C)
case ('m11')
call mm_AB_11(A, B, C)
case ('m12')
call mm_AB_12(A, B, C)
case ('m13')
call mm_AB_13(A, B, C)
end select
end subroutine mat_mat_rel_AB_opt