gpt4 book ai didi

java - Java 中的 Fortran GOTO

转载 作者:搜寻专家 更新时间:2023-11-01 01:37:41 24 4
gpt4 key购买 nike

是的,我查看了在 Java 中实现 GOTO 的各种方法,但这是真实世界:我需要将最新的 fortran LAPACK 例程之一转换为 java,看 http://www.netlib.org/lapack/timing/eig/eigsrc/dlasq3.f例如:

10 CONTINUE
IF( N0.LT.I0 )
$ RETURN
IF( N0.EQ.I0 )
$ GO TO 20
NN = 4*N0 + PP
IF( N0.EQ.( I0+1 ) )
$ GO TO 40
OPS = OPS + DBLE( 3 )
IF( Z( NN-5 ).GT.TOL2*( SIGMA+Z( NN-3 ) ) .AND.
$ Z( NN-2*PP-4 ).GT.TOL2*Z( NN-7 ) )
$ GO TO 30
20 CONTINUE
fortran code ...
GO TO 10
30 CONTINUE
OPS = OPS + DBLE( 2 )
IF( Z( NN-9 ).GT.TOL2*SIGMA .AND.
$ Z( NN-2*PP-8 ).GT.TOL2*Z( NN-11 ) )
$ GO TO 50
40 CONTINUE
fortran code ...
GO TO 10
50 CONTINUE

处理所有可能的 GOTO 的“标准”方法是什么?

最佳答案

处理这个问题的最好方法是将每个逻辑 block 组成一个部分,并为整个功能制作一个状态图。

不要忘记,从状态开始处跌落被认为是一种转变,应该这样对待。当您将这些分解为它们的状态转换时,您可以开始看到可以将它们简化为少数函数的位置,并在必要时应用递归或迭代。

现在,我完全承认我不了解该功能或它正在做什么或应该做什么,但这是制作状态图的第一次尝试,目的是让您了解我的意思。注意 80 上的循环,可能需要一个循环。请注意,10 和 100 是您唯一的返回状态。注意一旦你从 30 岁到 50 岁就没有回头路了。这向我表明 50+ 可能是它自己的独立函数,而 10-40 是它自己的带有循环的函数,当它达到 30 时说 return functionRepresenting50Pluss(...)

enter image description here

请注意,某些状态转换上的实心方 block 表示如果没有其他转换离开该状态,则可以保证选择此转换。请注意它在 80 上不存在,因为我无法真正确定 80 或 90 是否是它的保证目的地。有没有可能永远在 80 左右循环?如果不了解更多功能,我不能说。

关于java - Java 中的 Fortran GOTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7843649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com