Math Engine 상태와 오류 계약
문서 탐색
성공 판정
MATH_ENGINE_STATUS_OK 만 요청이 계약대로 완료됐음을 뜻한다. 검색 miss와 empty result처럼
정상적으로 결과가 없는 경우는 status OK와 result flag를 함께 사용할 수 있다. 사용할 수
있는 값이지만 오차가 남으면 uncertain flag를 사용할 수 있고, 요청한 보증 자체를 만족할
수 없으면 uncertain status를 반환한다.
정확한 enum 값과 이름 조회 function은 Status module이 소유하고 공통 result POD와 flag는 Types module이 소유한다.
Output 보존
별도 module 계약이 partial output 또는 required-size 출력을 허용하지 않으면 OK가 아닌 반환에서 caller-owned output object와 buffer content는 호출 전 값으로 보존된다. 구현은 input, alias와 capacity를 모두 검사한 뒤 output을 commit한다.
Consumer는 실패 뒤 output이 0이나 빈 값으로 바뀌었다고 가정하지 않는다. Required-size query, partial result와 convergence record를 허용하는 API는 해당 function Reference의 명시 계약만 따른다.
오류 분류
- Argument·size·range·shift·alias와 nullability 위반.
- 지원하지 않는 build, backend, mode 또는 capability.
- Non-finite, domain, pole, degenerate와 singular input.
- Overflow, underflow, divide-by-zero와 표현 불가능한 결과.
- 수렴 실패, uncertainty, iteration/evaluation budget 소진과 cancellation.
- Workspace·buffer 부족과 library invariant 위반.
각 function section은 실제로 반환할 수 있는 상태, 실패 조건과 output 의미를 public header Doxygen에서 가져온다.
진단 문자열
Status 이름 조회가 반환하는 문자열은 진단과 log를 위한 안정된 영문 이름이다. 사용자 locale 문장, retry 정책과 exception mapping은 consumer 계층이 소유하며 pointer ownership과 lifetime은 Status module의 선언을 따른다.