---
generated_at: 2026-02-17 11:25:00
metrics:
  claims_total: 32
  claims_with_evidence: 32
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：47-math

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：32 / 32、根拠なし：0
- 優先レビュー（高）
  - 全ての主張に根拠が存在するため、優先レビュー項目なし

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `lib/pure/math.nim` 10-17行目（モジュールドキュメント）
- E-02: `lib/pure/math.nim` 162-179行目（定数定義）
- E-03: `lib/pure/math.nim` 182-191行目（FloatClass列挙型）
- E-04: `lib/pure/math.nim` 193-206行目（isNaN関数）
- E-05: `lib/pure/math.nim` 231-243行目（signbit関数）
- E-06: `lib/pure/math.nim` 245-268行目（copySign関数）
- E-07: `lib/pure/math.nim` 270-293行目（classify関数）
- E-08: `lib/pure/math.nim` 295-322行目（almostEqual関数）
- E-09: `lib/pure/math.nim` 324-337行目（isPowerOfTwo関数）
- E-10: `lib/pure/math.nim` 339-362行目（nextPowerOfTwo関数）
- E-11: `lib/pure/math.nim` 367-410行目（sqrt, cbrt, ln - C/JS版）
- E-12: `lib/pure/math.nim` 412-425行目（log関数）
- E-13: `lib/pure/math.nim` 450-561行目（三角関数群）
- E-14: `lib/pure/math.nim` 590-616行目（補助三角関数）
- E-15: `lib/pure/math.nim` 621-640行目（hypot, pow関数）
- E-16: `lib/pure/math.nim` 644-673行目（erf, erfc, gamma, lgamma）
- E-17: `lib/pure/math.nim` 675-799行目（丸め関数群）
- E-18: `lib/pure/math.nim` 840-858行目（round with places）
- E-19: `lib/pure/math.nim` 860-895行目（floorDiv, floorMod）
- E-20: `lib/pure/math.nim` 897-923行目（euclDiv, euclMod）
- E-21: `lib/pure/math.nim` 925-975行目（ceilDiv関数）
- E-22: `lib/pure/math.nim` 977-1027行目（frexp関数）
- E-23: `lib/pure/math.nim` 1061-1078行目（splitDecimal関数）
- E-24: `lib/pure/math.nim` 1081-1099行目（degToRad, radToDeg）
- E-25: `lib/pure/math.nim` 1101-1113行目（sgn関数）
- E-26: `lib/pure/math.nim` 1118-1210行目（集計関数群）
- E-27: `lib/pure/math.nim` 1212-1284行目（べき乗演算子）
- E-28: `lib/pure/math.nim` 1286-1351行目（gcd関数群）
- E-29: `lib/pure/math.nim` 1353-1386行目（lcm関数群）
- E-30: `lib/pure/math.nim` 117-128行目（binom関数）
- E-31: `lib/pure/math.nim` 135-155行目（fac関数）
- E-32: `lib/pure/math.nim` 98-115行目（divmod関数）

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 三角関数はラジアン単位で動作する | E-01 (14-16行目) | ○ |
| C-02 | PIは3.1415926535897932384626433と定義されている | E-02 (163行目) | ○ |
| C-03 | TAUは2 * PIと定義されている | E-02 (164行目) | ○ |
| C-04 | Eは2.71828182845904523536028747と定義されている | E-02 (165行目) | ○ |
| C-05 | FloatClassは7つの分類値を持つ | E-03 (185-191行目) | ○ |
| C-06 | isNaNはx != xで判定する（JS/nimscript以外はc_isnan使用） | E-04 (201-205行目) | ○ |
| C-07 | signbitはc_signbit != 0を返却する（C版） | E-05 (243行目) | ○ |
| C-08 | copySignはxの大きさとyの符号を持つ値を返却する | E-06 (246-247行目) | ○ |
| C-09 | classifyはisNaN、ゼロ、無限大、非正規化数を順に判定する | E-07 (282-293行目) | ○ |
| C-10 | almostEqualはデフォルトで4ULPの誤差を許容する | E-08 (295-296行目) | ○ |
| C-11 | isPowerOfTwoは(x > 0) and ((x and (x - 1)) == 0)で判定する | E-09 (337行目) | ○ |
| C-12 | nextPowerOfTwoはビットシフトで次の2のべき乗を計算する | E-10 (352-362行目) | ○ |
| C-13 | sqrt/cbrt/lnはCバックエンドでmath.hからimportcする | E-11 (368-400行目) | ○ |
| C-14 | log(x, base)はln(x) / ln(base)で計算する | E-12 (425行目) | ○ |
| C-15 | sin/cos/tanはCバックエンドでmath.hからimportcする | E-13 (450-476行目) | ○ |
| C-16 | cot/sec/cscは1/tan, 1/cos, 1/sinで計算する | E-14 (590-594行目) | ○ |
| C-17 | hypotは斜辺sqrt(x*x + y*y)を計算する | E-15 (622-626行目) | ○ |
| C-18 | erf/erfc/gamma/lgammaはJSバックエンドでは利用不可 | E-16 (648, 652行目) | ○ |
| C-19 | floorは最大の整数で引数以下の値を返却する | E-17 (676-677行目) | ○ |
| C-20 | round(x, places)はplaces == 0の場合round(x)を呼び出す | E-18 (854-855行目) | ○ |
| C-21 | floorDivは0方向ではなく下方向に丸める除算を行う | E-19 (861-865行目) | ○ |
| C-22 | euclModは常に非負の結果を返却する | E-20 (913-914行目) | ○ |
| C-23 | ceilDivはx >= 0かつy > 0を前提条件とする | E-21 (928-929, 958行目) | ○ |
| C-24 | frexpは仮数部と指数部のタプルを返却する | E-22 (977-980行目) | ○ |
| C-25 | splitDecimalは整数部と小数部のタプルを返却する | E-23 (1061-1066行目) | ○ |
| C-26 | degToRadはd * RadPerDegで計算する | E-24 (1089行目) | ○ |
| C-27 | sgnは負数で-1、正数で1、0とNaNで0を返却する | E-25 (1104-1107行目) | ○ |
| C-28 | sumは空配列に対して0を返却する | E-26 (1121行目) | ○ |
| C-29 | ^演算子はy=0で1、y=1でx、y=2でx*x、y=3でx*x*xを返却する | E-27 (1228-1232行目) | ○ |
| C-30 | 整数版gcdはバイナリGCD（スタインのアルゴリズム）を使用する | E-28 (1307-1339行目) | ○ |
| C-31 | lcmはx div gcd(x, y) * yで計算する | E-29 (1362行目) | ○ |
| C-32 | facは事前計算されたルックアップテーブルを使用する | E-31 (146-155行目) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし。全ての主張にソースコードからの根拠が存在する。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全ての主張がソースコードの実装に基づいており、信頼性が高い

## 6) レビュアーチェックリスト（最小）
- [x] 全ての主張に根拠（ソースコード行番号）が存在することを確認
- [x] 数学定数の値が正確であることを確認
- [x] プラットフォーム依存の実装分岐が正確に記述されていることを確認
- [x] 各除算関数（floorDiv, euclDiv, ceilDiv）の違いが正確であることを確認
- [x] バイナリGCDアルゴリズムの説明が正確であることを確認
- [ ] runnableExamplesの動作確認（任意）
