# 弱い高域スペクトルの複素値とFPU状態を観測する

2026-10-26。追加の一録音診断の固定計画。元比較、12件診断、2件の数値観測は変更しない。別版の作成・静的レビュー・コンパイル・照合を終え、実行前に凍結する。

## 負の無限大を作る演算を、保存された入力で説明できるか

二件の数値観測では、高域対象録音のSTFT振幅89点が負の無限大であり、対数変換後にNaNとなった。前段の入力は有限で微小だった。既存ELFの振幅変換にはrsqrtpsによる平方根の高速計算があるが、その命令の入力や実行スレッドのFPU状態は未取得である。

対象はlibrispeech_121-127105-0035、フレーム371、帯域3、調波0を含む全片側スペクトル1025点に固定する。元PCM側の同じフレームも対照として記録する。同じ原入力・時計、24 kHz、全係数1、seed0で一度だけ解析し、復号・品質・係数最適化は行わない。異なる結果が出ても再現するまで試さない。

## FFTの出力をそのまま保存し、平方根の式は変えない

STFT内部でFFTから返った実部・虚部のfloat32 bitsを、既存の振幅変換の直前にコピーする。振幅変換直前・直後の実行スレッドのMXCSRも記録し、丸め・非正規化数・例外状態を後から読めるようにする。既存の振幅変換式、FFT、窓、正規化、ログ、ピーク補間は変更しない。二乗和を新しく計算して観測値と偽らず、命令列と保存された複素値からの推論は実測欄と分ける。

既存の66,712-byte観測は維持し、FFTの追加記録には別の版・getterを設ける。境界は固定長・容量明示・有効flag付きとする。元の256-byte失敗記録も取得し、全ての生bytesを保持する。追加記録が欠落しても、先の診断や元の状態コードを消さない。

## FFTの作業スレッドが一つの対象記録だけを書く

親のTLSへ作業スレッドから直接アクセスしても、同じ記録にはならない。呼出し元で対象行と記録領域を取得してSTFTへ明示的に渡し、その行を担当する作業スレッドだけが対応領域へ書く構造にする。元PCMと高域は別領域にする。共有された記録先の寿命は解析終了まで保ち、STFTの完了同期後に読み取る。

OpenMPやpthreadの並列度、コンパイラーの最適化設定は、観測の都合で変更しない。FPU設定は読み取るだけとし、FTZ・DAZ・丸めモードなどを書き換えない。観測領域は復号に使わず、アルゴリズムへ値を戻さない。

## 五役の二巡で、介入と観測を分ける

第一巡。数値担当は負の無限大とNaNを分け、rsqrtの入力とFPU状態の不足を挙げた。信号処理担当はFFTの複素出力が有限かをまず確認するよう求めた。実装担当はTLSと作業スレッドを跨ぐ記録所有の危険を指摘した。評価担当は一録音の観測を元比較の成功へ代入しないとした。批評家は先にstrict平方根へ置換して成功させると、原因の観測と修正効果が混ざると指摘した。

第二巡。元の振幅式は触らず、その前後の生データと状態を記録する案にした。一つの対象行だけが書く所有関係を静的に検証する。計装によりコード生成が変わる可能性は残し、実行した新ELFの命令列も読む。保存された複素値・FPU状態・命令列で観測値を説明できても、元binaryの全ての実行を直接観測したとは主張しない。

実行前の機械語確認では、観測対象の分岐に元と同じベクトル平方根の命令列が残り、作業スレッドのMXCSR読取りが全1025点の演算を挟むことを確認した。最初の1024点がベクトル演算、最後の1点がscalar sqrtssである。FPU設定の書換えや間の関数呼出しはない。実際の記録完成と値は実行後に照合する。
