▲GN⁺ 2025-02-17 | parent | ★ favorite | on: 계산기 앱? 누구나 만들 수 있는 거자나요?(chadnauseam.com)Hacker News 의견 흥미로운 이야기임. 숫자를 표현하는 더 강력한 방법은 연분수로 표현하는 것임. 연분수는 실수와 유리수를 효율적으로 표현할 수 있음 재미있는 사실로, 오래되지 않은 수학 교과서에 따르면 연분수의 덧셈/곱셈 알고리즘은 존재하지 않을 가능성이 높다고 함. 그러나 1972년 Bill Gosper가 연분수는 산술에 완벽하게 적합하다고 증명했음 나는 reals라는 Python 라이브러리를 작업 중임. 이 라이브러리는 Decimal이나 Fraction 타입을 대체할 수 있도록 설계되었음. Bill Gosper의 기술을 사용하여 연분수를 조작함 링크가 짧아져서 클릭할 수 없는 것은 불행한 일임. 여기에 논문에 대한 실제 링크가 있음 제목을 읽자마자 웃음이 나왔음. IEEE 754는 최악이지만 다른 모든 것보다는 나음. 예제를 보자마자 Kahan summation이나 전체 컴퓨터 대수 시스템일 것이라고 생각했음. Recursive Real Arithmetic는 들어본 적이 없었음 초기 C++ 영웅 중 한 명에 대한 통찰력을 얻었음. 간단해 보이는 것들이 얼마나 깊을 수 있는지 상기시켜줌 NYC 지하철 요금은 $2.90임. iOS에서 PCalc를 사용하여 남은 MetroCard 값을 계산했을 때 0이 아닌 -8.881784197E-16이 나왔음. Apple의 계산기를 사용할 때는 이런 일이 발생하지 않음 개발자에게 문의했더니 Apple은 자체 수학 라이브러리를 사용하고 있으며, 이를 대체할 다른 라이브러리를 찾아야 한다고 답변받음 거의 모든 사람이 완전한 계산기 앱을 만들지 않았음. TI-89 같은 완전한 계산기를 의미함 Android에서 TI-89 계산기 에뮬레이터를 사용 중임. Android 앱 중 절반의 기능도 없고 잘 작동하지 않음 RRA로 전환하는 것의 단점은 사용자 경험뿐만이 아님. 결과가 0.0000000...일 때, 계산기는 그 숫자의 역수를 계산할 수 있는지 결정할 수 없음 예를 들어, 1/(atan(1/5)-atan(1/239)-pi/4)는 "계산할 수 없음"을 출력함. 1/(atan(1/5)-atan(1/239)-pi/4+10^(-100000))을 시도해도 여전히 "계산할 수 없음"을 출력함 거의 모든 숫자는 IEEE 부동 소수점으로 표현할 수 없음. 무작위 숫자가 이론적으로 설명할 수 없는 확률이 약 100%일 수 있음 일부 문제는 bignums를 사용하면 피할 수 있음. 순간적인 존재적 불안이 해소됨 고급 TI 계산기, 예를 들어 TI-92가 이 시스템을 사용했는지 아는 사람 있음? '유리수' 모드가 있었고 RRA를 사용했을 가능성이 있음 "recursive real arithmetic" (RRA)를 사용하는 방식이 Conal Elliot과의 훌륭한 토론을 떠올리게 함. 사물을 이산적으로 표현하는 것에서 연속적으로 표현하는 것으로 이동하는 것에 대해 이야기했음 예를 들어, 이전에는 글꼴을 픽셀 블록으로 표현했지만, 이제는 선/벡터로 인식됨. 컴퓨터 과학은 최신 상업 도구를 배우는 것뿐만 아니라 진실을 추구하는 것이어야 함 Android Open Source Project의 계산기 소스 코드를 가지고 놀아봤음. Google이 이를 Google Play Services로 이전했지만, 오래된 소스는 여전히 사용 가능함 몇 가지 실제 문제를 해결하며, 라이브러리에서 사용할 수 있기를 바람. 이전 기사에서 몇 가지 라이브러리에 대한 논의가 있었음
Hacker News 의견