문제

.f 파일에는 다음을 수행하는 코드가 있습니다.

real Bob, avar
...
avar = Bob( 8.3 )
...

Bob은 함수 인 것처럼 보이지만 파일의 시작 부분에서 실제로 선언됩니다.

그런 다음 Bob에 대한 참조가있는 .D 파일이 있습니다. 또한 Avar가 보간 된 것으로 보이는 값을 보유하고 있음을 알고 있습니다. 문제는 보간이 항상 옳지 않다는 것입니다.

Bob    John      35
-17.     -16.     -15.     -14.     -13.     -12.     -11.     -10.     -9.      -8.  
-7.      -6.      -5.      -4.      -3.      -2.      -1.       0.       1.       2.5  
 3.       4.       5.       6.5      7.       8.       9.       10.      11.      12.  
 13.      14.      15.      16.      17.  
 0.001    0.001    0.041    0.098    0.155    0.213    0.27     0.327    0.384    0.441   
 0.499    0.556    0.613    0.670    0.728    0.785    0.844    0.904    0.965    1.058   
 1.089    1.152    1.216    1.314    1.347    1.413    1.479    1.543    1.609    1.670   
 1.733    1.799    1.860    1.925    1.937 

이것은 모든 레거시 코드입니다. 나는 그것을 쓰지 않았다. 나는 그것을 고치려고 노력하고있다. 내 질문은 다음으로 구성됩니다.

이게 무슨 짓을하고 어떻게? .D 파일이란 무엇입니까?

나는 그것이 보간하려고 노력하고 있다고 생각하지만 Fortran 77과 함께 (이런 식으로) 이것을 할 수 있다고 생각하지 않았습니다.

도움이 되었습니까?

해결책 3

혼란을 드려 죄송합니다. 답은 시스템이 독점 매크로 C를 사용하여 보간을하는 Fortran 프로그램을 사용하고 있다는 것입니다. 이것은 제작 파일에서 발생합니다. 나는 모호한 문서를 보면서 발견했습니다. 그들의 의견에 감사드립니다. 그것의 간결한 것에 대해 다시 죄송합니다. 나는 어려워 지려고 노력하지 않았다. 그것은 내가 본 것과 혼란 스러웠다. 다른 회사에서 구매 한 30 년 된 레거시 코드로 작업하는 것은 때때로 어려운 일입니다. 나는 Fortran을 처음 접했기 때문에 내가 익숙하지 않은 언어 기능처럼보아야 할 것을 보지 못했다고 생각했습니다. 나는 어리 석다. 그것은 나를 더 깊이 파고 들었습니다. 교훈을 배웠습니다.

다른 팁

Bob이 기능인 것처럼 보이며, 실제 값 8.3이 전달되고 있으며 Avar에 저장된 Reactiung입니다. 그러나 그것이 당신이 게시 한 코드에서 얻을 수있는 전부입니다.

.D 파일에는 거의 선형 데이터가 포함 된 것 같습니다. 실험 데이터처럼 보입니다. 35는 당신이 가진 포인트 수입니다. 그런 다음 x가 있고 y가 있습니다.

밥과 존은 일종의 문자열 마커 나 식별자처럼 보입니다. 아마도 코드 어딘가에 데이터를 사용하여 무엇을 해야하는지 또는 어떤 종류의 데이터를 나타내는지를 결정하는 데 사용됩니다.

밥은 기능처럼 보입니다. 함수를 선언하는 두 가지 방법이 있습니다.

real function foo(a)
    implicit none
    real, intent(in) :: a
    foo = 3.0+a
end function

program test
   implicit none
   real foo, bar, a, b
   bar(b) = b+5.0

   a=foo(5.3)
   print *, a, bar(2.3)
end program

하나는 명시 적 사례 (FOO)이며, 여기서 함수 자체로 지정된 변수에 할당하여 값을 반환합니다. 다른 경우는 "암시 적"(공식 이름을 모릅니다)은 막대를 참조하십시오. 당신은 그것을 "배열"으로 선언 한 다음 어떻게 행동 해야하는지 표현합니다. 거의 거의 보지 못했지만 매우 작곡입니다.

.D 파일은 아마도 Dope의 abreviating .dat 방법 일 것입니다. 그는 두 명의 추가 캐릭터를 입력하기에는 너무 게으르다. 옛날 프로그래머는 그렇게되었습니다.

"bob"이 -17에서 +17까지의 x 축이고 "John"은 Bob 지점에 해당하는 y 방향의 값 세트 인 그래프에 간단한 보간 함수가있는 것 같습니다. (32 포인트 만 표시되므로 35의 것이 무엇인지 모릅니다.)

코드는 다음과 같이 묻습니다. x 축의 값은 8.3, y 방향의 보간 된 값은 무엇입니까? 선형 형태에서는 1.413과 1.479의 차이의 .3 배를 반환합니다. 고차 보간기가 될 수 있지만 코드를 표시하지 않으므로 가장 간단하다고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top