---
generated_at: 2026-02-21 22:18:00
metrics:
  claims_total: 139
  claims_with_evidence: 139
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：math.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：139 / 139、根拠なし：0
- 優先レビュー（高）
  1. 全テストケースがソースコードに基づいて生成されており、根拠不足の項目なし

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

- E-01: `src/math/compute.php` - 計算関数群（abs, base_convert, ceil, cos, exp, floor, from_base, int_div, log, round, sin, sqrt, tan, to_base）
- E-02: `src/math/constants.php` - 数学定数群（INT64_MAX, INT64_MIN, INT53_MAX, INT53_MIN, INT32_MAX, INT32_MIN, INT16_MAX, INT16_MIN, UINT32_MAX, UINT16_MAX, PI, E, NAN）
- E-03: `src/math/containers.php` - コンテナ操作関数群（max, max_by, mean, median, min, min_by, sum, sum_float）
- E-04: `src/math/compare.php` - 比較関数群（maxva, minva, is_nan, almost_equals）

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

### compute.php の関数

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | abs関数は正の数をそのまま返す | E-01 (L25-28: `return $number < 0 ? -$number : $number`) | ○ |
| C-02 | abs関数は負の数の符号を反転して返す | E-01 (L25-28: 同上) | ○ |
| C-03 | abs関数はゼロをそのまま返す | E-01 (L25-28: 同上) | ○ |
| C-04 | abs関数はfloat型も処理可能 | E-01 (L25: `<T as num>` ジェネリクス宣言) | ○ |
| C-05 | abs関数はPHP_INT_MINで実装依存の動作 | E-01 (L19-23: ドキュメントコメントに記載) | ○ |
| C-06 | base_convert関数は空文字列でinvariant例外 | E-01 (L39-43: `invariant($value !== '')`) | ○ |
| C-07 | base_convert関数はfrom_base範囲チェック（2-36） | E-01 (L45-49: `$from_base >= 2 && $from_base <= 36`) | ○ |
| C-08 | base_convert関数はto_base範囲チェック（2-36） | E-01 (L51-55: `$to_base >= 2 && $to_base <= 36`) | ○ |
| C-09 | base_convert関数は不正桁文字でinvariant例外 | E-01 (L64-69: `invariant($digit_numeric !== null)`) | ○ |
| C-10 | ceil関数はPHP組み込みceilを呼び出す | E-01 (L97-99: `return \ceil($value)`) | ○ |
| C-11 | cos関数はPHP組み込みcosを呼び出す | E-01 (L107-109: `return \cos((float)$arg)`) | ○ |
| C-12 | from_base関数は空文字列でinvariant例外 | E-01 (L118-122: `invariant($number !== '')`) | ○ |
| C-13 | from_base関数は基数範囲チェック（2-36） | E-01 (L124-128: `$from_base >= 2 && $from_base <= 36`) | ○ |
| C-14 | from_base関数は不正桁文字でinvariant例外 | E-01 (L147-152: `invariant($dval < $from_base)`) | ○ |
| C-15 | from_base関数はオーバーフロー検出 | E-01 (L155-160: `invariant($oldval <= $limit && $result >= $oldval)`) | ○ |
| C-16 | exp関数はPHP組み込みexpを呼び出す | E-01 (L170-172: `return \exp((float)$arg)`) | ○ |
| C-17 | floor関数はPHP組み込みfloorを呼び出す | E-01 (L182-184: `return \floor($value)`) | ○ |
| C-18 | int_div関数はゼロ除算で例外 | E-01 (L192-194: `throw new \DivisionByZeroException()`) | ○ |
| C-19 | int_div関数はPHP組み込みintdivを呼び出す | E-01 (L195: `return \intdiv($numerator, $denominator)`) | ○ |
| C-20 | log関数は正の引数のみ許可 | E-01 (L204: `invariant($arg > 0)`) | ○ |
| C-21 | log関数は正の底のみ許可 | E-01 (L208: `invariant($base > 0)`) | ○ |
| C-22 | log関数は底1を拒否 | E-01 (L209: `invariant($base !== 1)`) | ○ |
| C-23 | round関数はPHP組み込みroundを呼び出す | E-01 (L219-221: `return \round($val, $precision)`) | ○ |
| C-24 | sin関数はPHP組み込みsinを呼び出す | E-01 (L229-231: `return \sin((float)$arg)`) | ○ |
| C-25 | sqrt関数は非負の引数のみ許可 | E-01 (L237: `invariant($arg >= 0)`) | ○ |
| C-26 | sqrt関数はPHP組み込みsqrtを呼び出す | E-01 (L238: `return \sqrt((float)$arg)`) | ○ |
| C-27 | tan関数はPHP組み込みtanを呼び出す | E-01 (L247-249: `return \tan((float)$arg)`) | ○ |
| C-28 | to_base関数は基数範囲チェック（2-36） | E-01 (L258-262: `$to_base >= 2 && $to_base <= 36`) | ○ |
| C-29 | to_base関数は非負のみ許可 | E-01 (L263-267: `invariant($number >= 0)`) | ○ |

### constants.php の定数

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | INT64_MAXは9223372036854775807 | E-02 (L13: `const int INT64_MAX = 9223372036854775807`) | ○ |
| C-31 | INT64_MINは-1 << 63 | E-02 (L18: `const int INT64_MIN = -1 << 63`) | ○ |
| C-32 | INT53_MAXは9007199254740992 | E-02 (L19: `const int INT53_MAX = 9007199254740992`) | ○ |
| C-33 | INT53_MINは-9007199254740993 | E-02 (L20: `const int INT53_MIN = -9007199254740993`) | ○ |
| C-34 | INT32_MAXは2147483647 | E-02 (L21: `const int INT32_MAX = 2147483647`) | ○ |
| C-35 | INT32_MINは-2147483648 | E-02 (L22: `const int INT32_MIN = -2147483648`) | ○ |
| C-36 | INT16_MAXは32767 | E-02 (L23: `const int INT16_MAX = 32767`) | ○ |
| C-37 | INT16_MINは-32768 | E-02 (L24: `const int INT16_MIN = -32768`) | ○ |
| C-38 | UINT32_MAXは4294967295 | E-02 (L26: `const int UINT32_MAX = 4294967295`) | ○ |
| C-39 | UINT16_MAXは65535 | E-02 (L27: `const int UINT16_MAX = 65535`) | ○ |
| C-40 | PIは3.14159265358979323846 | E-02 (L29: `const float PI = 3.14159265358979323846`) | ○ |
| C-41 | Eは2.7182818284590452354 | E-02 (L30: `const float E = 2.7182818284590452354`) | ○ |
| C-42 | NANはPHPのNAN | E-02 (L31: `const float NAN = \NAN`) | ○ |

### containers.php の関数

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | max関数は空Traversableでnull返却 | E-03 (L24-30: `$max = null`で初期化、foreachループ) | ○ |
| C-44 | max関数はTraversable内の最大値を返す | E-03 (L26-28: `if ($number > $max) { $max = $number }`) | ○ |
| C-45 | max_by関数は比較関数を使用 | E-03 (L42-56: `$num_func($value)`で評価) | ○ |
| C-46 | max_by関数は同値で後の要素を返す | E-03 (L50: `if ($value_num >= $max_num)` - 等号を含む) | ○ |
| C-47 | mean関数は空Containerでnull返却 | E-03 (L67-69: `if ($count === 0.0) return null`) | ○ |
| C-48 | mean関数は算術平均を計算 | E-03 (L70-74: `$mean += $number / $count`) | ○ |
| C-49 | median関数は空Containerでnull返却 | E-03 (L85-87: `if ($count === 0) return null`) | ○ |
| C-50 | median関数はソートして中央値を取得 | E-03 (L83: `$numbers = Vec\sort($numbers)`) | ○ |
| C-51 | median関数は偶数個で2要素の平均 | E-03 (L89-92: `Math\mean(vec[$numbers[$middle_index], ...])`) | ○ |
| C-52 | min関数は空Traversableでnull返却 | E-03 (L107-113: `$min = null`で初期化) | ○ |
| C-53 | min関数はTraversable内の最小値を返す | E-03 (L109-111: `if ($number < $min) { $min = $number }`) | ○ |
| C-54 | min_by関数は比較関数を使用 | E-03 (L125-138: `$num_func($value)`で評価) | ○ |
| C-55 | min_by関数は同値で後の要素を返す | E-03 (L133: `if ($value_num <= $min_num)` - 等号を含む) | ○ |
| C-56 | sum関数は整数合計を返す | E-03 (L146-154: `$result += (int)$value`) | ○ |
| C-57 | sum関数は空Traversableで0返却 | E-03 (L149: `$result = 0`で初期化) | ○ |
| C-58 | sum_float関数はfloat合計を返す | E-03 (L161-168: `$result += (float)$value`) | ○ |
| C-59 | sum_float関数は空Traversableで0.0返却 | E-03 (L164: `$result = 0.0`で初期化) | ○ |

### compare.php の関数

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 | maxva関数は2つの数から最大値を返す | E-04 (L24: `$max = $first > $second ? $first : $second`) | ○ |
| C-61 | maxva関数は可変長引数対応 | E-04 (L22: `T ...$rest`) | ○ |
| C-62 | minva関数は2つの数から最小値を返す | E-04 (L44: `$min = $first < $second ? $first : $second`) | ○ |
| C-63 | minva関数は可変長引数対応 | E-04 (L42: `T ...$rest`) | ○ |
| C-64 | is_nan関数はPHP組み込みis_nanを呼び出す | E-04 (L62-64: `return \is_nan((float)$num)`) | ○ |
| C-65 | almost_equals関数はabs関数で差の絶対値を計算 | E-04 (L74-75: `namespace\abs($num_one - $num_two) < $epsilon`) | ○ |
| C-66 | almost_equals関数はデフォルトepsilon=0.00000001 | E-04 (L74: `$epsilon = .00000001`) | ○ |
| C-67 | almost_equals関数はepsilon未満でtrue、以上でfalse | E-04 (L75: `< $epsilon`) | ○ |

## 4) 不足情報（Unknown / Missing）
- 全テストケースがソースコードに基づいて生成されており、不足情報なし

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全ての主張がソースコードから直接確認可能

## 6) レビュアーチェックリスト（最小）
- [ ] abs関数のPHP_INT_MIN境界値テストが実環境で適切に動作するか確認
- [ ] base_convertとfrom_base/to_baseの相互変換の整合性を確認
- [ ] 三角関数（sin, cos, tan）の精度が要件を満たすか確認
- [ ] almost_equalsのデフォルトepsilon値が用途に適切か確認
- [ ] 各定数値がターゲット環境で正しく表現されるか確認
