如果我要使用嵌套括号计算多项式,那么单独声明每个常量并将它们声明为数组之间是否存在差异?
例如,两者之间是否存在差异
real(kind = c_double), parameter :: &
P0 = .5, &
P1 = .8, &
P2 = -.1, &
P3 = -.7, &
P4 = -.4, &
P5 = -.6, &
P6 = -.2
Run Code Online (Sandbox Code Playgroud)
并计算
x = ((((((P6 * a + P5) * a + P4) * a + P3) * a + P2) * a + P1) * a + P0)
Run Code Online (Sandbox Code Playgroud)
要么
real(kind = c_double), parameter, dimension(7) :: P = &
[.5, .8, -.1, -.7, -.4, -.6, -.2]
Run Code Online (Sandbox Code Playgroud)
并计算
x = ((((((P(7) * a + P(6)) * a + P(5)) * a + P(4)) * a + P(3)) * a + P(2)) * a + P(1))
Run Code Online (Sandbox Code Playgroud)
是的,存在差异,但这些差异并不是您在此处使用的重要区别.
差异来自于给出(与问题略有不同)声明的事实
real, parameter :: P1=0.1, P2=0.2, P(2)=[0.1,0.2]
Run Code Online (Sandbox Code Playgroud)
P1和P2是常数,但P(1)并P(2)没有. P是一个常数,但这不是一回事.所以,P1可能在某些情况下P(1)无法使用.
但是,在表达式中
((((((P6 * a + P5) * a + P4) * a + P3) * a + P2) * a + P1) * a + P0)
Run Code Online (Sandbox Code Playgroud)
恒定性质并不重要,P可以在那里轻松使用元素.
在诸如复数文字常量和(对于整数)文字常量中的种类参数的情况下会出现差异.此外,P(1)作为一个数组元素,它可以在某些方面使用,不适合P1.
我会注意到这个问题的一些特定内容:
P0被使用的,阵列可以从被索引0: real, parameter, dimension(0:6) :: P=[...];real, parameter, dimension(0:*) :: P=[...]| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |