Show HN: disjoint sets of intervals 위에서 작동하는 calculator를 만들었다
핵심 내용
interval union arithmetic를 지원하는 계산기 구현과 기능 소개.
자세히 보기
Interval Calculator는 실수 하나가 아니라 interval들의 union을 계산 대상으로 삼는 calculator다.
핵심은 interval union arithmetic로, 일반 interval arithmetic보다 더 강력하게 0을 포함하는 interval로도 나눗셈이 닫혀 있다는 점이다. 예를 들어 2 / [-2, 1]은 [-∞, -1] U [2, +∞]처럼 disjoint union으로 결과가 나온다.
또한 이 방식은 inclusion property를 보장한다. 각 입력 union에서 임의의 실수를 하나씩 골라 같은 식을 실수 연산으로 계산하면, 그 결과는 반드시 출력 union 안에 들어간다. 불확실성 표현에도 쓸 수 있어 50 * (10 + [-1, 1]) 같은 식은 [450, 550]으로 계산된다.
지원하는 기능은 꽤 넓다.
- 기본 연산:
+,-,*,/,^ - 함수:
abs,sqrt,sqinv,log,log2,log10,exp,cos,sin,tan,acos,asin,atan,min,max - 상수:
inf,∞,pi,e - 보조 함수:
lo,hi,hull
문법적으로는 [a, b] 형태의 interval과 U로 이어진 union을 입력할 수 있고, 숫자만 입력하면 좁은 interval로 해석된다. 흥미롭게도 interval 안에 interval을 중첩해서 쓸 수 있으며, bound 자리에 들어간 interval은 upper bound를 취하는 방식으로 처리된다.
Full precision mode에서는 IEEE 754 double의 outward rounding을 사용해, 부동소수점 오차를 고려해도 실제 값을 포함하는 interval을 돌려준다. 예를 들어 0.1 + 0.2가 정확히 0.3이 되지 않더라도, 결과 interval은 참값을 감싸도록 계산된다.
작성자는 아직 버그가 남아 있을 수 있다고 밝히며 GitHub로 issue를 받고 있다. 코드와 엔진인 not-so-float도 오픈소스로 공개했고, 향후에는 input interpretation과 display precision 분리, ans 변수, intersection 연산, U 우선순위 개선, empty union 입력 지원을 계획하고 있다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.