다음은 C 프로그램의 스 니펫입니다.용어 순서를 변경하여 다른 답변을 얻는 이유
WARNING: sum = -5.551115e-17 at time index = 1
WARNING: sum = 0.000000e+00 at time index = 1
를 인쇄를 여기
printf(" WARNING: sum = %e at time index = %d\n",C[21]*X[0] + C[22]*X[1] + C[23]*X[2] + C[24]*X[3] + C[25]*X[4] + C[26]*X[5] + C[27]*X[6],TIME_INDEX);
printf(" WARNING: sum = %e at time index = %d\n",C[21]*X[0] + C[27]*X[6] + C[22]*X[1] + C[26]*X[5] + C[23]*X[2] + C[25]*X[4] + C[24]*X[3],TIME_INDEX);
이있어 대답은 제로에 정확히 같아야한다 :이 두 문장이 표현은 수학적으로 동일하더라도 다른 값을 줄 이유
은 누군가가 말해 주시겠습니까 . 요약에서 용어의 순서가 중요한 이유를 이해할 수 없습니다.
편집 : X [0] = X [6], X [1] = X [5], X [2] = X [4]를 명시 적으로 정의한다고 말해야합니다.
중심 차이 계수는 C [21] = -1.0/60.0; C [22] = 9.0/60.0; C [23] = -45.0/60.0; C [24] = 0.0/60.0; C [25] = 45.0/60.0; C [26] = -9.0/60.0; C [27] = 1.0/60.0;
오버플로/언더 플로우 이벤트가 발생할 수 있습니다. 깨끗하게 컴파일 된 코드를 게시하고 문제를 표시하십시오. 관심있는 것은 배열 C []와 X []의 '유형'은 무엇이며 그 배열의 크기는 얼마나됩니까? – user3629249
가능한 [부동 소수점 연산이 깨졌습니다] (https://stackoverflow.com/questions/588004). – user3386109
@ user3629249 둘 다'double' 유형입니다. C의 배열에는 49 개의 값이 포함되어 있으며 X의 배열은 동적으로 할당되고 문제에 따라 다릅니다. – ThatsRightJack