From 5201520a74d8fa49f77a588204d768d8157f73f7 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 19 Oct 2025 13:07:36 +0900 Subject: draft --- slides.typ | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 2 deletions(-) diff --git a/slides.typ b/slides.typ index 3bf2fa9..ce77d60 100644 --- a/slides.typ +++ b/slides.typ @@ -20,8 +20,131 @@ #about-slide() -Hoge +数値の範囲を指定して検索する API --- -Piyo +半開区間 +[x, y) +x を含み、y を含まない + +--- + +[3, 7) +3, 4, 5, 6 + +--- + +ちょうど 5 +[5, 6) + +--- + +ちょうど n +[n, n+1) + +--- + +整数ならこれで OK + +--- + +実数なら? + +--- + +ちょうど 1 +[1, 2) +1, 1.5, 1.7, 1.989 + +--- + +[1, 1より少しだけ大きい値) +間に 1 しか入らない範囲 + +--- + +[1, p) +間に 1 しか入らない範囲? + +--- + +[1, p) +間に 1 しか入らない範囲? +(1+p)/2 が入る + +--- + +無理 (実数では) + +--- + +実数は無限精度ある + +--- + +コンピュータ上の実数表現は +有限精度 + +--- + +[1, p) + +--- + +[1, p) +コンピュータ上なら +都合のいい p が存在する + +--- + +64 bit の浮動小数点数の場合 +[1, p) +p = 1.0000000000000002 + +--- + +1 = 0011111111110000000000000000000000000000000000000000000000000000 +p = 0011111111110000000000000000000000000000000000000000000000000001 + +--- + +浮動小数点数 +IEEE 754 + +--- + +IEEE 754 +nextUp +nextDown + +--- + +IEEE 754 +nextUp: 僅かに大きい値を返す +nextDown: 僅かに小さい値を返す + +--- + +ちょうど x +[x, nextUp(x)) + +--- + +PHP には nextUp/nextDown が無い + +--- + +無いので作りました +nsfisis/php-next-after + +--- + +```php +use Nsfisis\NextAfter\NextAfter; + +function toExactFloatRange($from) { + $to = NextAfter::nextUp($from); + return [$from, $to]; +} +``` -- cgit v1.2.3-70-g09d2