8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Fortran 循环构造和避免 goto

Achal Utkarsh 1月前

12 0

下面的 Fortran 源代码片段包含一个 goto、一个标签、一个可能多余的逻辑变量、一个 end do 之前的 exit 语句以及可能的其他不良特性......

下面的 Fortran 源代码片段包含 goto 、一个标签、一个可能多余的逻辑变量 going 、一个 exit 位于之前的语句 end do 以及可能的其他不良特征。

您会怎样用 Fortran 来编写它,以实现简洁性、清晰性、简洁性、可维护性和性能?

          allocate (level(lower%noRows))
          level = 0 ! array assignment
          noLevels = 0
          do
             going = .FALSE.
             do row = 1, lower%noRows
                if (level(row) .eq. 0) then
                   maxLevel = 0
                   do k = lower%rowPtr(row), lower%rowPtr(row+1)-1
                      l = level(lower%colIndex(k))
                      if (l .eq. 0) goto 10
                      maxLevel = max(maxLevel,l)
                   end do
                   level(row) = maxLevel + 1
                   noLevels = max(noLevels,level(row))
                   going = .TRUE.
10                 continue
                end if
             end do
             if (.not. going) exit
          end do
          lower%noLevels = noLevels

如果你好奇的话,它会计算预排序的 CSR 格式下三角稀疏矩阵每一行的有向无环图依赖级别 lower .

帖子版权声明 1、本帖标题:Fortran 循环构造和避免 goto
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Achal Utkarsh在本站《loops》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: