---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 180
  claims_with_evidence: 172
  claims_without_evidence: 8
confidence_derived: 0.96
---

# 根拠レポート：mruby-bigint 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：172 / 180、根拠なし：8
- 優先レビュー（高）
  1. **C-016〜C-019（Float関連テスト）**：MRB_NO_FLOAT未定義時の挙動をソースコードから推定。FIXABLE_FLOATマクロの境界値が不明確
  2. **C-112（空バイト列テスト）**：len=0の場合のmrb_bint_from_bytesの挙動が実装上保証されるか要確認
  3. **C-168〜C-169（Montgomery/Barrett）**：大きなモジュラスでの内部アルゴリズム選択閾値の正確な検証が困難

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `mrbgems/mruby-bigint/core/bigint.c` - メインソースファイル（6336行）
- E-02: `mrbgems/mruby-bigint/core/bigint.h` - ヘッダファイル（117行、mpz_t構造体・RBigint構造体・マクロ定義）
- E-03: `mrbgems/mruby-bigint/core/bigint.c` 行5309-5315 - mrb_bint_new_int関数定義
- E-04: `mrbgems/mruby-bigint/core/bigint.c` 行230-260 - mpz_set_int関数定義
- E-05: `mrbgems/mruby-bigint/core/bigint.c` 行264-277 - mpz_set_uint64関数定義
- E-06: `mrbgems/mruby-bigint/core/bigint.c` 行5330-5340 - mrb_bint_new_uint64関数定義
- E-07: `mrbgems/mruby-bigint/core/bigint.c` 行5355-5373 - mrb_bint_new_str関数定義
- E-08: `mrbgems/mruby-bigint/core/bigint.c` 行3241-3330 - mpz_init_set_str関数定義
- E-09: `mrbgems/mruby-bigint/core/bigint.c` 行5386-5451 - mrb_bint_new_float/mrb_bint_as_float関数定義
- E-10: `mrbgems/mruby-bigint/core/bigint.c` 行5460-5471 - mrb_bint_as_int関数定義
- E-11: `mrbgems/mruby-bigint/core/bigint.c` 行5498-5516 - mrb_bint_as_uint64関数定義
- E-12: `mrbgems/mruby-bigint/core/bigint.c` 行5536-5579 - mrb_bint_add/mrb_bint_add_n関数定義
- E-13: `mrbgems/mruby-bigint/core/bigint.c` 行5582-5623 - mrb_bint_sub/mrb_bint_sub_n関数定義
- E-14: `mrbgems/mruby-bigint/core/bigint.c` 行5662-5684 - mrb_bint_mul/mrb_bint_mul_n関数定義
- E-15: `mrbgems/mruby-bigint/core/bigint.c` 行5686-5713 - mrb_bint_div関数定義
- E-16: `mrbgems/mruby-bigint/core/bigint.c` 行5760-5809 - mrb_bint_mod/mrb_bint_rem関数定義
- E-17: `mrbgems/mruby-bigint/core/bigint.c` 行5811-5832 - mrb_bint_divmod関数定義
- E-18: `mrbgems/mruby-bigint/core/bigint.c` 行5834-5865 - mrb_bint_cmp関数定義
- E-19: `mrbgems/mruby-bigint/core/bigint.c` 行5871-5905 - mrb_bint_pow関数定義
- E-20: `mrbgems/mruby-bigint/core/bigint.c` 行5907-5979 - mrb_bint_powm関数定義
- E-21: `mrbgems/mruby-bigint/core/bigint.c` 行5981-5999 - mrb_bint_to_s関数定義
- E-22: `mrbgems/mruby-bigint/core/bigint.c` 行6001-6078 - mrb_bint_and/or/xor関数定義
- E-23: `mrbgems/mruby-bigint/core/bigint.c` 行6080-6105 - mrb_bint_neg/mrb_bint_rev関数定義
- E-24: `mrbgems/mruby-bigint/core/bigint.c` 行6107-6139 - mrb_bint_lshift/mrb_bint_rshift関数定義
- E-25: `mrbgems/mruby-bigint/core/bigint.c` 行6141-6159 - mrb_bint_copy/mrb_bint_memsize関数定義
- E-26: `mrbgems/mruby-bigint/core/bigint.c` 行6161-6177 - mrb_bint_sqrt関数定義
- E-27: `mrbgems/mruby-bigint/core/bigint.c` 行6179-6191 - mrb_bint_sign/mrb_bint_size関数定義
- E-28: `mrbgems/mruby-bigint/core/bigint.c` 行6193-6206 - mrb_bint_from_bytes関数定義
- E-29: `mrbgems/mruby-bigint/core/bigint.c` 行6208-6217 - mrb_bint_hash関数定義
- E-30: `mrbgems/mruby-bigint/core/bigint.c` 行6220-6243 - mrb_bint_2comp関数定義
- E-31: `mrbgems/mruby-bigint/core/bigint.c` 行6272-6321 - mrb_bint_gcd/mrb_bint_lcm関数定義
- E-32: `mrbgems/mruby-bigint/core/bigint.c` 行6323-6335 - mrb_bint_abs関数定義
- E-33: `mrbgems/mruby-bigint/core/bigint.c` 行108-114 - mpz_init関数定義
- E-34: `mrbgems/mruby-bigint/core/bigint.c` 行173-207 - mpz_realloc関数定義
- E-35: `mrbgems/mruby-bigint/core/bigint.c` 行306-324 - mpz_clear関数定義
- E-36: `mrbgems/mruby-bigint/core/bigint.c` 行454-569 - mpz_add関数定義
- E-37: `mrbgems/mruby-bigint/core/bigint.c` 行596-614 - mpz_sub関数定義
- E-38: `mrbgems/mruby-bigint/core/bigint.c` 行2320-2470 - mpz_mul関数定義（Karatsuba/Toom-3/特殊パス含む）
- E-39: `mrbgems/mruby-bigint/core/bigint.c` 行2700-2987 - udiv/div_limb関数定義
- E-40: `mrbgems/mruby-bigint/core/bigint.c` 行4457-4498 - mpz_pow関数定義
- E-41: `mrbgems/mruby-bigint/core/bigint.c` 行4504-4590 - mpz_powm関数定義
- E-42: `mrbgems/mruby-bigint/core/bigint.c` 行3161-3172 - mpz_cmp関数定義
- E-43: `mrbgems/mruby-bigint/core/bigint.c` 行65-99 - pool_save/pool_restore/pool_alloc関数定義
- E-44: `mrbgems/mruby-bigint/core/bigint.c` 行5375-5384 - mrb_gc_free_bint関数定義
- E-45: `mrbgems/mruby-bigint/core/bigint.c` 行5453-5458 - mrb_as_bint関数定義
- E-46: `mrbgems/mruby-bigint/core/bigint.c` 行5342-5353 - bint_norm関数定義
- E-47: `mrbgems/mruby-bigint/core/bigint.c` 行6246-6270 - mrb_bint_reduce関数定義
- E-48: `mrbgems/mruby-bigint/core/bigint.h` 行47-59 - mpz_t/RBigint構造体定義
- E-49: `mrbgems/mruby-bigint/core/bigint.h` 行74-113 - RBIGINT_EMBED_*マクロ定義
- E-50: `mrbgems/mruby-bigint/core/bigint.c` 行2161-2231 - mpz_sqr関数定義
- E-51: `mrbgems/mruby-bigint/core/bigint.c` 行3082-3113 - mpz_mod_limb関数定義
- E-52: `mrbgems/mruby-bigint/core/bigint.c` 行5715-5758 - mrb_bint_add_ii/sub_ii/mul_ii関数定義

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | 正の整数からBigintが生成される | E-03, E-04 | ○ |
| C-002 | 負の整数からBigintが生成される | E-03, E-04 | ○ |
| C-003 | 0からBigintが生成される | E-03, E-04 | ○ |
| C-004 | MRB_INT_MAXからBigintが生成される | E-04 | ○ |
| C-005 | MRB_INT_MINからBigintが生成される | E-04（行245: v==MRB_INT_MINの分岐） | ○ |
| C-006 | uint64からBigintが生成される | E-05, E-06 | ○ |
| C-007 | uint64=0からBigintが生成される | E-05（行270: sn=(u!=0)） | ○ |
| C-008 | 10進文字列からBigintが生成される | E-07, E-08 | ○ |
| C-009 | 負の符号付き文字列からBigintが生成される | E-07（行5361-5371: base<0でsn=-1）, E-08 | ○ |
| C-010 | 16進文字列からBigintが生成される | E-08（行3305-3327: 他のbase処理） | ○ |
| C-011 | 2進文字列からBigintが生成される | E-08 | ○ |
| C-012 | 長い10進文字列からBigintが生成される | E-08（行3258-3303: 最適化10進パース） | ○ |
| C-013 | アンダースコア区切り文字列がパースされる | E-08（行3262, 3308: '_'のスキップ処理） | ○ |
| C-014 | 空文字列からBigintが生成される | E-08 | ○ |
| C-015 | 不正文字を含む文字列でエラー | E-08（行3263-3264, 3315-3318: retval=-1） | ○ |
| C-016 | 正のfloatからBigintが生成される | E-09 | △ |
| C-017 | 負のfloatからBigintが生成される | E-09（行5398-5401: sn=-1） | △ |
| C-018 | 大きなfloatからBigintが生成される | E-09 | △ |
| C-019 | 0.5未満のfloatから0が返される | E-09（行5405-5407: x<1.0で0返却） | △ |
| C-020 | Bigintがfloatに変換される（正） | E-09（行5433-5451） | ○ |
| C-021 | Bigintがfloatに変換される（負） | E-09（行5446-5448: sn<0でval=-val） | ○ |
| C-022 | mrb_int範囲内のBigintが整数に変換される | E-10（行5467: mpz_get_int） | ○ |
| C-023 | mrb_int範囲外の変換でE_RANGE_ERROR | E-10（行5468: mrb_raise） | ○ |
| C-024 | 正のBigintがuint64に変換される | E-11 | ○ |
| C-025 | 負のBigintのuint64変換でE_RANGE_ERROR | E-11（行5507: sn<0チェック） | ○ |
| C-026 | uint64範囲外のuint64変換でE_RANGE_ERROR | E-11（行5507: len*sizeof(mp_limb)>sizeof(uint64_t)チェック） | ○ |
| C-027 | 正+正の加算 | E-12, E-36（行543-546） | ○ |
| C-028 | 正+負の加算 | E-12, E-36（行551-565） | ○ |
| C-029 | Bigint+Integer加算 | E-12（行5545-5557: int_fit_limb_p最適化） | ○ |
| C-030 | Bigint+Float加算 | E-12（行5570-5575: float_p分岐） | ○ |
| C-031 | ゼロとの加算 | E-36（行457-466: zero_pチェック） | ○ |
| C-032 | 桁上がり加算 | E-36, E-12 | ○ |
| C-033 | mrb_int加算オーバーフロー | E-52（行5715-5728） | ○ |
| C-034 | 正-正の減算 | E-13, E-37 | ○ |
| C-035 | 負結果の減算 | E-13, E-37 | ○ |
| C-036 | 同値減算でゼロ | E-37, E-36（行555-557: ucmp==0でzero） | ○ |
| C-037 | mrb_int減算アンダーフロー | E-52（行5730-5743） | ○ |
| C-038 | 正*正の乗算 | E-14, E-38 | ○ |
| C-039 | 正*負の乗算 | E-14, E-38（行2468: sn=u->sn*v->sn） | ○ |
| C-040 | ゼロ乗算 | E-14（行5666: mrb_integer(y)==0で0返却） | ○ |
| C-041 | 1乗算 | E-14（行5667: mrb_integer(y)==1でbint_norm返却） | ○ |
| C-042 | 大きな数の乗算 | E-38 | ○ |
| C-043 | mrb_int乗算オーバーフロー | E-52（行5745-5758） | ○ |
| C-044 | 正/正の除算 | E-15, E-39 | ○ |
| C-045 | 端数のある除算 | E-15（行5711: mpz_mdiv→floor除算） | ○ |
| C-046 | ゼロ除算エラー（Integer 0） | E-15（行5690: mrb_int_zerodiv） | ○ |
| C-047 | Bigintゼロ除算エラー | E-15（行5704-5706: zero_p/uzero_pチェック） | ○ |
| C-048 | 1除算 | E-15（行5691: mrb_integer(y)==1でbint_norm返却） | ○ |
| C-049 | 負のfloor除算 | E-15, mpz_mdiv（行2989-3012: 負方向丸め処理） | ○ |
| C-050 | 正%正の剰余 | E-16（行5760-5786: mpz_mmod） | ○ |
| C-051 | 負%正の剰余（Ruby仕様） | E-16, mpz_mmod（行3014-3042: Ruby的mod） | ○ |
| C-052 | ゼロモジュロエラー | E-16（行5770-5772: mrb_int_zerodiv） | ○ |
| C-053 | 正%正のremainder | E-16（行5788-5809: mpz_mod使用） | ○ |
| C-054 | 負%正のremainder | E-16（行3119-3158: mpz_mod, sn維持） | ○ |
| C-055 | divmod基本 | E-17（行5830: mpz_mdivmod） | ○ |
| C-056 | 負数divmod | E-17, mpz_mdivmod（行3044-3080） | ○ |
| C-057 | ゼロdivmodエラー | E-17（行5816-5823: mrb_int_zerodiv） | ○ |
| C-058 | 等値比較 | E-18（行5853-5854: i1==i2で0返却） | ○ |
| C-059 | 大なり比較 | E-18, E-42 | ○ |
| C-060 | 小なり比較 | E-18, E-42 | ○ |
| C-061 | Bigint vs Integer比較 | E-18（行5849-5857: integer_p分岐） | ○ |
| C-062 | 異符号比較 | E-42（行3164-3167: sn比較） | ○ |
| C-063 | 型不一致で-2返却 | E-18（行5850: !mrb_integer_pで-2） | ○ |
| C-064 | 正のべき乗 | E-19, E-40 | ○ |
| C-065 | 0乗で1 | E-19, E-40（行4460-4463: e==0で1設定） | ○ |
| C-066 | 1乗で元の値 | E-19, E-40 | ○ |
| C-067 | 負の指数でE_ARGUMENT_ERROR | E-19（行5887-5889: exp<0でraise） | ○ |
| C-068 | Bigint型指数でE_TYPE_ERROR | E-19（行5881: MRB_TT_BIGINTでraise） | ○ |
| C-069 | 大きすぎる結果でE_RANGE_ERROR | E-19（行5895-5897: MRB_BIGINT_POW_MAX_BITSチェック） | ○ |
| C-070 | 負の基数のべき乗 | E-19, E-40 | ○ |
| C-071 | モジュラべき乗 | E-20, E-41 | ○ |
| C-072 | modゼロエラー | E-20（行5917: m==0でzerodiv） | ○ |
| C-073 | 負指数powmエラー | E-20（行5956-5961: e<0でraise） | ○ |
| C-074 | 基数0の冪のmod | E-20（行5937-5950: zero_pで0返却） | ○ |
| C-075 | 負modの処理 | E-20（行5966-5968: neg_mod調整） | ○ |
| C-076 | 10進文字列変換 | E-21（行5990-5997: mpz_get_str） | ○ |
| C-077 | 負の値の文字列変換 | E-21 | ○ |
| C-078 | 16進文字列変換 | E-21 | ○ |
| C-079 | 2進文字列変換 | E-21 | ○ |
| C-080 | ゼロの文字列変換 | E-21（行5987-5989: "0"返却） | ○ |
| C-081 | ビットAND | E-22（行6001-6025） | ○ |
| C-082 | ゼロAND | E-22（行6009: z==0で0返却） | ○ |
| C-083 | -1 AND | E-22（行6014: z==-1でx返却） | ○ |
| C-084 | ビットOR | E-22（行6027-6047） | ○ |
| C-085 | ゼロOR | E-22（行6035: z==0でx返却） | ○ |
| C-086 | ビットXOR | E-22（行6049-6078） | ○ |
| C-087 | 同値XOR | E-22 | ○ |
| C-088 | ゼロXOR | E-22（行6058: z==0でx返却） | ○ |
| C-089 | 正の符号反転 | E-23（行6080-6092: mpz_neg） | ○ |
| C-090 | 負の符号反転 | E-23 | ○ |
| C-091 | ゼロの符号反転 | E-23 | ○ |
| C-092 | ビット反転基本 | E-23（行6094-6105: -x-1） | ○ |
| C-093 | 正のビット反転 | E-23 | ○ |
| C-094 | 左シフト | E-24（行6107-6122: mpz_mul_2exp） | ○ |
| C-095 | 負width左シフト→右シフト | E-24（行6115-6117: width<0でdiv_2exp） | ○ |
| C-096 | ゼロシフト | E-24 | ○ |
| C-097 | 右シフト | E-24（行6124-6139: mpz_div_2exp） | ○ |
| C-098 | 負width右シフト→左シフト | E-24（行6132-6134: width<0でmul_2exp） | ○ |
| C-099 | 全ビットシフトアウト | E-24 | ○ |
| C-100 | Bigintコピー | E-25（行6141-6150: mpz_init_set→bint_set） | ○ |
| C-101 | メモリサイズ取得 | E-25（行6152-6159: z.sz*sizeof(mp_limb)） | ○ |
| C-102 | 完全平方数の平方根 | E-26（行6161-6177: mpz_sqrt） | ○ |
| C-103 | 非完全平方数の平方根 | E-26 | ○ |
| C-104 | 負の平方根エラー | E-26（行6167-6169: sn<0でE_ARGUMENT_ERROR） | ○ |
| C-105 | ゼロの平方根 | E-26 | ○ |
| C-106 | 1の平方根 | E-26 | ○ |
| C-107 | 正の符号取得 | E-27（行6179-6183: RBIGINT_SIGN） | ○ |
| C-108 | 負の符号取得 | E-27 | ○ |
| C-109 | ゼロの符号取得 | E-27 | ○ |
| C-110 | バイトサイズ取得 | E-27（行6185-6191） | ○ |
| C-111 | バイト列からBigint生成 | E-28（行6193-6206） | ○ |
| C-112 | 空バイト列で0 | E-28 | △ |
| C-113 | 同一値のハッシュ一致 | E-29（行6208-6217: mrb_byte_hash） | ○ |
| C-114 | 異値のハッシュ不一致 | E-29 | ○ |
| C-115 | 2の補数変換 | E-30（行6220-6243: make_2comp） | ○ |
| C-116 | GCD計算 | E-31（行6272-6286: mpz_gcd） | ○ |
| C-117 | 互いに素のGCD | E-31 | ○ |
| C-118 | 同値GCD | E-31 | ○ |
| C-119 | LCM計算 | E-31（行6288-6321: mpz_lcm） | ○ |
| C-120 | ゼロLCM | E-31（行6296-6298: zero_pで0返却） | ○ |
| C-121 | 正の絶対値 | E-32（行6323-6335: mpz_abs） | ○ |
| C-122 | 負の絶対値 | E-32 | ○ |
| C-123 | ゼロの絶対値 | E-32 | ○ |
| C-124 | GCによるヒープ解放 | E-44（行5375-5384: RBIGINT_EMBED_P判定） | ○ |
| C-125 | GCによる埋め込み解放 | E-44 | ○ |
| C-126 | Integer→Bigint変換 | E-45（行5456-5457: mrb_bint_new_int呼出） | ○ |
| C-127 | Bigint→Bigintの冪等性 | E-45（行5456: mrb_bigint_pでそのまま返却） | ○ |
| C-128 | mpz初期化 | E-33（行108-114） | ○ |
| C-129 | mpz正整数設定 | E-04（行230-260） | ○ |
| C-130 | mpz負整数設定 | E-04 | ○ |
| C-131 | mpzゼロ設定 | E-04（行234-238: v==0分岐） | ○ |
| C-132 | mpz加算（正+正） | E-36 | ○ |
| C-133 | mpz加算（相殺） | E-36 | ○ |
| C-134 | mpz減算 | E-37 | ○ |
| C-135 | mpz乗算（schoolbook） | E-38（行760-815: mpz_mul_basic） | ○ |
| C-136 | Karatsuba乗算 | E-38（行990-1098: mpz_mul_karatsuba_limbs, 閾値32） | ○ |
| C-137 | Toom-3乗算 | E-38（行1296-1638: mpz_mul_toom3, 閾値100） | ○ |
| C-138 | 2の冪乗乗算最適化 | E-38（行2362-2371: mpz_power_of_2_exp→mpz_mul_2exp） | ○ |
| C-139 | all-ones乗算最適化 | E-38（行2336-2341, 行2100-2159: mpz_mul_all_ones） | ○ |
| C-140 | スパース乗算最適化 | E-38（行2374-2383: mpz_sparse_p→mpz_mul_sparse） | ○ |
| C-141 | バランス乗算 | E-38（行2393-2396: mpz_mul_balance） | ○ |
| C-142 | 符号なし除算 | E-39（行2834-2987: udiv） | ○ |
| C-143 | 余りのある除算 | E-39 | ○ |
| C-144 | 小さな被除数の除算 | E-39（行2844-2848: cmp<0分岐） | ○ |
| C-145 | 同値除算 | E-39（行2839-2843: cmp==0分岐） | ○ |
| C-146 | 単一limb除算 | E-39（行2701-2832: div_limb） | ○ |
| C-147 | 2のべき乗除算最適化 | E-39（行2722-2781: power-of-2分岐） | ○ |
| C-148 | mpzべき乗 | E-40 | ○ |
| C-149 | mpz二乗（schoolbook） | E-50（行2188-2198: mpz_sqr_basic_limbs） | ○ |
| C-150 | Toom-3二乗 | E-50（行2200-2231: mpz_sqr_toom3） | ○ |
| C-151 | mpz GCD | E-31 | ○ |
| C-152 | 2^n乗算 | E-38 | ○ |
| C-153 | 2^n除算 | E-24 | ○ |
| C-154 | mpz比較 | E-42 | ○ |
| C-155 | mpz AND（正同士） | E-22 | ○ |
| C-156 | mpz AND（負含む） | E-22 | ○ |
| C-157 | mpz OR | E-22 | ○ |
| C-158 | mpz XOR（正同士） | E-22 | ○ |
| C-159 | mpz XOR（負含む） | E-22 | ○ |
| C-160 | mpzメモリ再確保 | E-34 | ○ |
| C-161 | 不要な再確保スキップ | E-34（行176: x->sz<size条件） | ○ |
| C-162 | サイズオーバーフロー検出 | E-34（行178-181: SIZE_MAXチェック） | ○ |
| C-163 | mpzメモリ解放 | E-35 | ○ |
| C-164 | 文字列からmpz初期化 | E-08 | ○ |
| C-165 | 36進文字列パース | E-08（行3311-3314: a-z処理） | ○ |
| C-166 | mpz→文字列変換 | E-21 | ○ |
| C-167 | mpzモジュラべき乗 | E-41 | ○ |
| C-168 | Montgomeryべき乗 | E-41（行4531-4534: 奇数モジュラス>=4 limb） | △ |
| C-169 | Barrett簡約 | E-41（行3136-3148: y->sz>=4, x->sz>=y->sz+2） | △ |
| C-170 | Bigint正規化（Integer化） | E-46（行5349-5351: mpz_get_int成功でmrb_int_value） | ○ |
| C-171 | Bigint正規化スキップ | E-46（行5352: get_int失敗でmrb_obj_value） | ○ |
| C-172 | 単一limb剰余 | E-51 | ○ |
| C-173 | プール管理 | E-43 | ○ |
| C-174 | プール割り当て | E-43（行88-98: pool_alloc） | ○ |
| C-175 | プール容量超過 | E-43（行91-93: NULL返却） | ○ |
| C-176 | 埋め込み判定 | E-49（行97: RBIGINT_EMBED_P） | ○ |
| C-177 | ヒープ判定 | E-49 | ○ |
| C-178 | 埋め込み符号取得 | E-49（行99: RBIGINT_EMBED_SIGN） | ○ |
| C-179 | 埋め込みサイズ取得 | E-49（行100: RBIGINT_EMBED_SIZE） | ○ |
| C-180 | 有理数約分 | E-47（行6246-6270: mpz_gcd→mpz_mdiv） | ○ |

## 4) 不足情報（Unknown / Missing）

- **Float関連テスト（C-016〜C-019）**：`FIXABLE_FLOAT` マクロの定義・閾値が `mruby/numeric.h` にあると思われるが、本モジュール（mruby-bigint）のコードからは間接参照のため確認困難。Float→Bigintの丸め方向・精度の詳細仕様は外部ドキュメントなし。
  - 候補：`include/mruby/numeric.h` / Ruby言語仕様 / mruby公式ドキュメント
- **空バイト列テスト（C-112）**：len=0の場合のmrb_bint_from_bytesの挙動は実装コード（行6202: `z.sn = (len > 0) ? 1 : 0`）から推定可能だが、limb_len=0でのmpz_init_heap(ctx, &z, 0)の挙動が明示的にテストされていない。
  - 候補：テストコード `mrbgems/mruby-bigint/test/bigint.rb`
- **Montgomery/Barrett内部アルゴリズム（C-168, C-169）**：閾値（4 limb以上・奇数判定等）はソースコードから確認できるが、数学的正当性の検証にはGMPやBignum実装の参考文献が必要。
  - 候補：Knuth TAOCP Vol.2 / GMP documentation

## 5) リスクフラグ（レビュー観点）

- **0: 低リスク** - メモリプール管理テスト（C-173〜C-175）：MRB_BIGINT_POOL_SIZE==0の場合はマクロでバイパスされるため、コンパイル設定によりテスト不可
- **1: 中リスク** - Float変換テスト（C-016〜C-021）：MRB_NO_FLOATが定義されている環境ではコンパイルされないため、環境依存テスト
- **1: 中リスク** - Montgomery法テスト（C-168）：大きなモジュラス（>=4 limb）かつ奇数の場合のみ発動。テスト入力の設計が重要
- **1: 中リスク** - MRB_INT32環境テスト（C-006, C-024〜C-026）：mrb_bint_new_int64/mrb_bint_as_int64はMRB_INT32定義時のみコンパイルされるため、32bit環境でのテスト設計が必要
- **2: 高リスク** - ゼロ除算テスト（C-046, C-047, C-052, C-057, C-072）：セキュリティ上重要。全ての除算系APIでゼロチェックが行われていることを確認済みだが、uzero_p（全桁ゼロ）チェックとzero_p（sn==0）チェックの両方が必要な箇所がある

## 6) レビュアーチェックリスト（最小）

- [ ] Float関連テスト（C-016〜C-021）：FIXABLE_FLOATの閾値と丸め挙動を確認
- [ ] ゼロ除算テスト（C-046, C-047, C-052, C-057, C-072）：zero_pとuzero_pの両方のチェックが漏れていないか確認
- [ ] Montgomery/Barrett選択ロジック（C-168, C-169）：閾値の正当性と境界ケースを確認
- [ ] 32bit/64bit環境差異：MRB_INT32/MRB_INT64でのテストケースの適用可否を確認
- [ ] MRB_BIGINT_POOL_SIZE=0設定時：プール関連テスト（C-173〜C-175）がスキップされることを確認
- [ ] Karatsuba/Toom-3閾値：KARATSUBA_THRESHOLD=32, TOOM3_THRESHOLD=100の境界でのテスト入力サイズ設計を確認
- [ ] 大きな数のメモリ使用量：MRB_BIGINT_POW_MAX_BITS=1000000の制限が適切か確認
