퇴근하고 왔는데 아직도 싸우고있네..


이 논쟁의 시작은 어떤 갤러가 피보나치의 일반항을 구하는 식을가져왔음. 


물론 일반항이니 O(1)로 계산이 가능하다라는 말이 나왔는데, 수식안에 제곱이 있으니 logN이라는 주장이 나왔다.


그래서 내가 실제로 시간 측정을 해보고, 컴퓨터에서 계산할 수 있는 수에서는 pow함수가 수식에 영향을 주지않으니 상수시간에 계산이 가능하다고 주장했음.


그런데 여기서 106.102라는 아이피가 2의 100만승을 넣으라고함 ㅋㅋ



컴퓨터에서 표현가능한 수의범위가 64비트에서 2의64승까지라 그 이상 수를 계산할때는 빅인테저로 계산해야하고 그 시간복잡도가 pow()함수의 시간복잡도 보다 크니 계산이 불가능 하다고 주장했음. 실제로 다른갤러가 파이썬으로 측정해보니 빅테저는 O(N)이 나옴. 그럼 O(N)+ O(logN) = O(N)임.

그래서 아예 pow()의 시간측정이 불가능함.


근데 얘는 이제 O(N)+ O(logN) = O(logN) 라고 주장함 (여기서좀 빡쳤음)


이래놓고



이래놓고 시간복잡도 보고오라하니 화가치밀어오르더라 2의 백만승거릴때 걸렀어야했는데...



정리 

1. 지수계산은 log(N)이 맞음.

2. 그러나 pow()는 아키텍트에 의존적이고 현 컴퓨터환경에서는 O(1)두고 계산해도 무방함 (성능상의 차이가없음)

3. 나는 C++ pow()가 수식에서 계산할때 log(N)으로 시간복잡도를 계산할 필요가없다고 주장 


아무튼 이렇게 싸운거임 ㅇㅇ; 엄밀하게 말하면 pow함수는 logN이맞는데, 우리 아키텍트가 64비트이고, 컴퓨터를 사용할때는 O(1)로 생각해도무방
그리고 더큰수를 넣어서 시간측정하라는데 그게 불가능함. 끝.