이거야 원...피해망상이라도 걸릴 것 같은 일이 일어났다.

지난주까지, gcc에 math.h에서 연결해서 쓰던 atan[각주:1]하고 log[각주:2]함수들이, 갑자기 정신을 잃고 나한테 헛소리를 한다. nan[각주:3]이라든가, inf[각주:4]라든가.

그럼 대체 지지난주까지 잘 작동했던 그 함수는 어디갔는데...

결국 나만 교수님한테 개갈굼 받게 생겼네. "넌 정신이 있는거니?"

내가 지금까지 환상을 봤나? Maple 결과랑 잘 맞춰봤었는데...
미치겠다. 젠장.


추가
square root, cubic root, log, arc tan, arc cos함수를 전부 새로 코딩했다. 미쳤지. 애초에 시작하는게 아니었는데 -_-;
그러나 결과에는 별다른 영향이 없다는 거.
산수공부는 많이 하게 되었다. C언어에서 연산자 여러개 겹쳐쓰면 빡(=nan)난다는 것도 알았고  
추가2
전에는 나눗셈 때문에 골치아팠는데.
Maple은 왜 지맘대로 3차방정식 근의 순서를 바꾸는 것일까.
아무튼, 내 코드에서 3차방정식도 제대로 풀리는 것으로 보인다.

추가3
문제의 원인은 놀랍게도 #include<math.h>를 빼먹어서였다. 왜? 왜 빠져 있었지??
그러나 atan이 가진 부호 문제때문에 그냥 내가 직접 작성한 함수를 쓰기로 했다. log는 math.h에 있는걸로 쓴다. 제곱근은 괜찮은데, 세제곱근에 문제가 있어서, 세제곱근도 직접 작성했다. 에휴. 삽질.

추가4
atan의 부호 문제를 해결한 함수가 atan2더라. 역시 난감하다 -_-;
아무튼, 그럭저럭 괜찮은 결과가 나왔으니, 이제 오늘만 밤새면 된다. 결국 직접 만든 함수 쓰는건 세제곱근 뿐.

  1. arc tangent, 탄젠트의 역함수 [본문으로]
  2. 지수함수의 역함수 [본문으로]
  3. Not A Number. "이건 숫자가 아닌겨" [본문으로]
  4. infinity. "이건 숫자가 아닌것도 아닌겨" [본문으로]
by snowall 2007. 7. 3. 01:56