to_string_matrix_dp Function

private function to_string_matrix_dp(array) result(trimmed_str)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: array(:,:)

Return Value character(len=:), allocatable


Called by

proc~~to_string_matrix_dp~~CalledByGraph proc~to_string_matrix_dp to_string_matrix_dp interface~to_string to_string interface~to_string->proc~to_string_matrix_dp proc~flop_rate_report flop_rate_type%flop_rate_report proc~flop_rate_report->interface~to_string proc~print_matrix_dp print_matrix_dp proc~print_matrix_dp->interface~to_string proc~print_matrix_int32 print_matrix_int32 proc~print_matrix_int32->interface~to_string proc~print_matrix_int64 print_matrix_int64 proc~print_matrix_int64->interface~to_string proc~print_matrix_sp print_matrix_sp proc~print_matrix_sp->interface~to_string proc~print_packed_matrix_dp print_packed_matrix_dp proc~print_packed_matrix_dp->interface~to_string proc~print_packed_matrix_int32 print_packed_matrix_int32 proc~print_packed_matrix_int32->interface~to_string proc~print_packed_matrix_int64 print_packed_matrix_int64 proc~print_packed_matrix_int64->interface~to_string proc~print_packed_matrix_sp print_packed_matrix_sp proc~print_packed_matrix_sp->interface~to_string proc~print_vector_dp print_vector_dp proc~print_vector_dp->interface~to_string proc~print_vector_int32 print_vector_int32 proc~print_vector_int32->interface~to_string proc~print_vector_int64 print_vector_int64 proc~print_vector_int64->interface~to_string proc~print_vector_sp print_vector_sp proc~print_vector_sp->interface~to_string proc~timer_print_time pic_timer_type%timer_print_time proc~timer_print_time->interface~to_string interface~pic_print_array pic_print_array interface~pic_print_array->proc~print_matrix_dp interface~pic_print_array->proc~print_matrix_int32 interface~pic_print_array->proc~print_matrix_int64 interface~pic_print_array->proc~print_matrix_sp interface~pic_print_array->proc~print_packed_matrix_dp interface~pic_print_array->proc~print_packed_matrix_int32 interface~pic_print_array->proc~print_packed_matrix_int64 interface~pic_print_array->proc~print_packed_matrix_sp interface~pic_print_array->proc~print_vector_dp interface~pic_print_array->proc~print_vector_int32 interface~pic_print_array->proc~print_vector_int64 interface~pic_print_array->proc~print_vector_sp proc~print_3d_tensor_dp print_3d_tensor_dp interface~pic_print_array->proc~print_3d_tensor_dp proc~print_3d_tensor_int32 print_3d_tensor_int32 interface~pic_print_array->proc~print_3d_tensor_int32 proc~print_3d_tensor_int64 print_3d_tensor_int64 interface~pic_print_array->proc~print_3d_tensor_int64 proc~print_3d_tensor_sp print_3d_tensor_sp interface~pic_print_array->proc~print_3d_tensor_sp proc~print_3d_tensor_dp->interface~pic_print_array proc~print_3d_tensor_int32->interface~pic_print_array proc~print_3d_tensor_int64->interface~pic_print_array proc~print_3d_tensor_sp->interface~pic_print_array

Variables

Type Visibility Attributes Name Initial
integer, private :: i
integer, private :: j
integer, private :: ncols
integer, private :: nrows
character(len=32), private :: style
character(len=50), private :: temp_str
integer, private :: total_len

Source Code

   function to_string_matrix_dp(array) result(trimmed_str)
      real(kind=dp), intent(in) :: array(:, :)
      character(len=:), allocatable :: trimmed_str
      character(len=50) :: temp_str
      character(len=32) :: style
      integer :: i, j, total_len, nrows, ncols

      nrows = size(array, 1)
      ncols = size(array, 2)

      ! Set up format
      write (style, '(A,I0,A)') '(F0.', dp_precision, ')'

      ! Estimate total length needed (rough estimate)
      total_len = 10 + nrows  ! for outer brackets and newlines
      do i = 1, nrows
         total_len = total_len + 3  ! for row brackets and comma
         do j = 1, ncols
            write (temp_str, style) array(i, j)
            total_len = total_len + len_trim(temp_str) + 2  ! +2 for ", "
         end do
      end do

      ! Allocate result string
      allocate (character(len=total_len) :: trimmed_str)

      ! Build the string with newlines
      trimmed_str = "["//new_line('a')
      do i = 1, nrows
         trimmed_str = trimmed_str//" ["
         do j = 1, ncols
            write (temp_str, style) array(i, j)
            if (j < ncols) then
               trimmed_str = trimmed_str//trim(temp_str)//", "
            else
               trimmed_str = trimmed_str//trim(temp_str)
            end if
         end do
         if (i < nrows) then
            trimmed_str = trimmed_str//"],"//new_line('a')
         else
            trimmed_str = trimmed_str//"]"//new_line('a')
         end if
      end do
      trimmed_str = trimmed_str//"]"
   end function to_string_matrix_dp