Files
FESADev/docs/hht-implicit-dynamics/formulation-carried-a-noise.md
2026-10-18 14:32:55 +09:00

93 lines
8.3 KiB
Markdown

# Carried-A HHT의 arithmetic/noise 인계
읽기 구분: 현재 CA radius 계산이 참조하는 산술 원본이다. 아래 full-coordinate carried-A 연산 경로 자체는 비교 이력이며, 현재 reduced Ar·pair update와 basis radius 적용 범위는 [축소 좌표](formulation-reduced-coordinate.md)·[고정 null 기저](formulation-fixed-null-basis.md)를 따른다. 현재 검증은 [기능 요약](README.md)에서 확인한다.
본문의 검토·ADR·N1–N7 등 과거 기록명은 당시 근거의 식별명이며, 이 문서의 현재 요약 링크가 원자료 전문을 제공한다는 뜻은 아니다.
작성 당시 상태: `implementation-ready-estimator; independent-review-pending`, 2026-10-12. [축소 좌표 정식화](formulation-reduced-coordinate.md)와 별개로, 동일 full-coordinate HHT에서 A를 직접 갱신하는 산술을 다룬다. 기존 `N7`의 separation 기준을 완화하지 않는다. Half-ULP `q-qp-sA` closure는 이전 predictor·seed·update 오차 또는 history bound가 아니다.
## 1. 실제 연산 경로
`s=beta*h²`, `r=gamma*h`, `k=1+alpha`다. Frozen accepted history에서 qp/vp를 기존 predictor로 계산한다. 첫 trial assembly가 기존 `EvaluateNewtonStart`의 qn 또는 qp를 선택한다면 그 **실제** Aseed와 seed inverse 연산을 포함한다. 이후 모든 Newton correction에 대해
\[
\Delta A=\Delta q/s,\quad A\leftarrow A+\Delta A,\quad
q=qp+sA,\quad v=vp+rA,\quad a=(A+\alpha a_{old})/k.
\tag{CA-01}
\]
Requested Δq와 rounded reconstructed q 차이는 다른 값이다. 외력·평형 및 마지막 linear/nonlinear solve defect는 기존 N7 경로에서 별도로 계산한다. Stored last correction 하나는 앞선 update의 arithmetic를 나타내지 않는다.
## 2. 최소 online component radius
전체 Δq 목록을 저장하지 않고 component별 A radius `B_A`를 반복마다 누적할 수 있다. `hat x`는 실제 binary64 값, `B_x≥|hat x-x*|`는 같은 frozen input/correction path의 exact arithmetic 값에 대한 절대 radius다. 실제 evaluation order를 따라 아래 primitive rule로 scalar coefficient, predictor, seed, update, reconstruction의 모든 연산을 추적한다. Constrained 성분은 정확한 0이며 새로운 scale floor는 없다.
Normal finite binary64 operation의 rounding term은
\[
\rho(\hat z)=\frac{u}{1-u}|\hat z|+\eta,\quad u=2^{-53},
\tag{CA-02}
\]
로 둘 수 있다. eta는 underflow를 지원하는 실제 IEEE 실행의 absolute rounding bound다. Flush-to-zero 여부를 확인하지 않은 채 정상 수의 상대오차 식만으로 subnormal을 인증하지 않는다. η를 물리 scale floor나 acceptance floor로 사용하지 않는다. 일반 범위에서는 검증된 gamma_m의 uncancelled operand sum bound로 구현해도 된다.
\[
\begin{aligned}
B_{x\pm y}&=B_x+B_y+\rho(\widehat{x\pm y}),\\
B_{xy}&=|\hat x|B_y+|\hat y|B_x+B_xB_y+\rho(\widehat{xy}),\\
B_{x/y}&=\frac{B_x+|\widehat{x/y}|B_y}{|\hat y|-B_y}
+\rho(\widehat{x/y})\left(1+\frac{B_y}{|\hat y|-B_y}\right).
\end{aligned}
\tag{CA-03}
\]
Division은 `|hat y|-B_y>0`일 때만 bound가 성립한다. 식은 실제 quotient에 대한 rounding uncertainty도 denominator perturbation과 함께 전파한 보수적인 bound다. Radius 계산 자체의 부동소수점 오차도 upper rounding/추가 gamma bound로 포함해야 한다. Bound 계산의 down-rounding으로 실제보다 작은 B를 반환하지 않는다.
Predictor의 `h*h*(.5-beta)` 및 `h*(1-gamma)`, `s,r,k`, 두 predictor sums를 CA-03으로 계산한다. Seed `(q_start-qp)/s`도 subtraction/division rule을 사용한다. q_start가 qp인 정확 동일-object 분기에서는 exact seed=0의 correlation을 사용 가능하지만 검증되지 않은 다른 state에 같은 cancellation을 적용하지 않는다. Old coordinate start에서는 actual qold radius를 seed에 포함한다.
매 correction Δq의 산술 입력 radius를 0으로 둘 때, 그 correction을 exact로 고정한 arithmetic-only radius다. Linear/nonlinear solve estimator는 별도이며 이를 correction rounding 0의 근거로 혼동하지 않는다. Δq scatter/scaling에 rounding이 있으면 그 primitive도 radius에 포함한다. 다음 방식으로 B_A를 반복마다 갱신한다:
\[
B_{\Delta A}=\operatorname{divideBound}(\Delta q,s),\quad
B_{A,new}=B_{A,old}+B_{\Delta A}+\rho(\widehat{A+\Delta A}).
\tag{CA-04}
\]
최종 accepted q/v/a radius는
\[
\begin{aligned}
B_q&=B_{qp}+|\hat s|B_A+|\hat A|B_s+B_sB_A+\rho_{mul}+\rho_{add},\\
B_v&=B_{vp}+|\hat r|B_A+|\hat A|B_r+B_rB_A+\rho_{mul}+\rho_{add},\\
B_{num}&=B_A+|\alpha|B_{a,old}+\rho_{\alpha a}+\rho_{sum},\\
B_a&=\operatorname{divideBound}(\widehat{A+\alpha a_{old}},\hat k).
\end{aligned}
\tag{CA-05}
\]
CA-05의 rho terms는 corresponding 실제 연산의 term이다. 사용한 alpha 자체를 exact binary64 입력으로 고정했다면 Balpha=0; alpha가 별도 계산 결과이면 해당 product term을 추가한다. Predictor의 correlation을 이용하지 않는 bound는 더 보수적이어도 유효하나 자동 PASS를 위한 cancellation은 금지다. Accepted A/predictor/last-solve만으로 CA-04 전체를 복원할 수 없으므로 online accumulator 또는 actual trace가 필수다.
## 3. Frozen-step과 history를 구분
각 step 시작의 old q/v/a/A radius를 0으로 두면 **frozen-step local arithmetic bound**다. 이를 global discretization error나 전체 history bound로 보고하지 않는다. 이전 accepted radii를 다음 predictor/seed/CA-04/05의 input radii로 넘기면 고정 Newton corrections 및 고정 선택 분기의 whole-history arithmetic bound를 얻는다. 그 bound는 rounding의 전파를 포함하나 perturbed nonlinear equilibrium의 correction sensitivity는 포함하지 않는다. 기존 solve defect/stability evidence와 함께 판단한다.
Equivalent 선형화 설명: state 순서 `(q,v,a,A)`, `b=h²(.5-beta)`, `d=h(1-gamma)`에서 frozen correction path의 initial-seed derivative는 q-start가 predictor일 때 `j=0`, old q일 때 `j=(0,-h/s,0,-b/s)`다. Exact accepted transition의 rows는
\[
T_A=j,\quad T_q=(1,h,0,b)+s j,\quad
T_v=(0,1,0,d)+r j,\quad T_a=j/k+(0,0,\alpha/k,0).
\tag{CA-06}
\]
`B_next≤|T|B_old+B_local`는 scalar coefficient uncertainty를 별도로 포함했을 때의 보수적인 component-history bound다. 이 fixed-correction-path |T| propagation은 cancellation을 잃어 커질 수 있다. Bound가 커지거나 overflow하면 N7 inconclusive로 남겨야 한다; norm을 줄이거나 floor를 추가하지 않는다. 실제 nonlinear stable trajectory의 더 날카로운 a posteriori bound는 독립 review가 필요한 별도 작업이다.
고정밀 replay는 stored binary64 history/coefficients/각 δq를 exact inputs로 보고 실제 selection 및 evaluation 순서를 재현해야 한다. Local replay는 local 산술 검산, recursively replayed whole path는 CA-06/online history bound의 독립 검산이다. High-precision 재계산 결과를 current accepted physical a로 덮어쓰거나 equilibrium-consistent corrected solution으로 표시하지 않는다.
## 4. N7 판정 인계
Component radii를 기존 length/time normalization으로 q/v/a 병진·회전 channels에 모아 전체 endpoint 최대를 구한다. Finest error/self-difference와 비교할 때 기존 N7의 approved factor/separation assertion을 유지하고 solve noise와 complete carried-A arithmetic evidence 중 큰 값을 사용한다. Grid pair는 기존처럼 두 grid의 radius를 함께 포함한다.
기존 q-subtraction 기반 gamma32 estimator를 carried-A의 완전한 estimator로 승계하지 않는다. Predictor·seed division·모든 update·재구성 및 필요한 history 전파가 없으면 해당 arithmetic evidence는 incomplete다. 반대로 기존 arithmetic estimate를 함께 보존하면 regression 진단에 도움이 되지만 새 경로의 correctness 증명은 아니다. 기존 N7 time amplification을 새 local radius에 곱하는 선택은 승인된 heuristic의 비교 evidence이며 독립적으로 whole-history rigorous bound라고 부르지 않는다.
필수 검산은 (1) exact/고정밀 frozen arithmetic와 primitive radius 비교, (2) seed qn/qp 양 분기, (3) multiple corrections와 tiny correction/addition absorption, (4) finite/division denominator/underflow 실패, (5) solver defect와 arithmetic radius의 별도 기록이다. Source·test·tolerance를 본 owner가 변경하거나 통과 승인하지 않았다.