NEPLg2 Standard Library - math
Web Playground
Web Playground

math: core/math.nepl に関する機能を提供するライブラリ

目的もくてき:

注意ちゅうい:

TESTskip
#entry main
#target core
fn main <()*>i32> ():
    ()
    0

add: i32 の加算(mod 2^32)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 42 add 40 2;
    assert_eq_i32 0 add -1 1;

sub: i32 の減算(mod 2^32)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 5 sub 9 4;
    assert_eq_i32 -5 sub 4 9;

mul: i32 の乗算(mod 2^32)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 42 mul 6 7;
    assert_eq_i32 0 mul 0 12345;

div_s: i32 の符号付き除算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 -3 div_s -9 3;
    assert_eq_i32 -3 div_s 10 -3;

div_u: i32 の符号なし除算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 3 div_u 11 3;
    assert_eq_i32 2147483647 div_u -1 2;

rem_s: i32 の符号付き剰余

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 1 rem_s 10 3;
    assert_eq_i32 -1 rem_s -10 3;

mod_s: i32 の符号付き剰余(rem_s の別名)
rem_u: i32 の符号なし剰余

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 2 rem_u 11 3;
    assert_eq_i32 5 rem_u -1 10;

and: i32 のビット AND

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 2 and 6 3;
    assert_eq_i32 7 or 6 3;
    assert_eq_i32 5 xor 6 3;
    assert_eq_i32 8 shl 1 3;
    assert_eq_i32 -2 shr_s -8 2;
    assert_eq_i32 1073741822 shr_u -8 2;
    assert_eq_i32 2 rotl 1 1;
    assert_eq_i32 1 rotr 2 1;

or: i32 のビット OR

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

xor: i32 のビット XOR

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

shl: i32 の左シフト

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

shr_s: i32 の算術右シフト

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

shr_u: i32 の論理右シフト

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

rotl: i32 の左ローテート

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

rotr: i32 の右ローテート

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

clz: 先頭ゼロビット数を数える

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert_eq_i32 31 clz 1;
    assert_eq_i32 3 ctz 8;
    assert_eq_i32 4 popcnt 15;

ctz: 末尾ゼロビット数を数える

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

popcnt: 1 ビットの個数を数える

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

eq: i32 の等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    assert eq 7 7;
    assert ne 7 8;
    assert lt -1 0;
    assert lt_u 0 -1;
    assert le 7 7;
    assert le_u 7 8;
    assert gt 9 3;
    assert gt_u -1 0;
    assert ge 9 9;
    assert ge_u -1 -1;

ne: i32 の非等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

lt: i32 の符号付き小なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

lt_u: i32 の符号なし小なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

le: i32 の符号付き以下比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

le_u: i32 の符号なし以下比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

gt: i32 の符号付き大なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

gt_u: i32 の符号なし大なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ge: i32 の符号付き以上比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ge_u: i32 の符号なし以上比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

add_u8: u8 の加算(mod 2^8)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

sub_u8: u8 の減算(mod 2^8)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

mul_u8: u8 の乗算(mod 2^8)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

div_u_u8: u8 の符号なし除算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

rem_u_u8: u8 の符号なし剰余

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

eq_u8: u8 の等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ne_u8: u8 の非等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

lt_u_u8: u8 の符号なし小なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

le_u_u8: u8 の符号なし以下比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

gt_u_u8: u8 の符号なし大なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ge_u_u8: u8 の符号なし以上比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

add: u8 の加算(mod 2^8)
sub: u8 の減算(mod 2^8)
mul: u8 の乗算(mod 2^8)
div_u: u8 の符号なし除算
rem_u: u8 の符号なし剰余
eq: u8 の等値比較
ne: u8 の非等値比較
lt_u: u8 の符号なし小なり比較
le_u: u8 の符号なし以下比較
gt_u: u8 の符号なし大なり比較
ge_u: u8 の符号なし以上比較
add: i64 の加算(mod 2^64)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let a <i64> cast 40;
    let b <i64> cast 2;
    let r0 <i64> add a b;
    assert eq r0 <i64> cast 42;
    let a <i64> cast 0;
    let b <i64> cast 7;
    let r1 <i64> add a b;
    assert eq r1 b;

sub: i64 の減算(mod 2^64)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let a <i64> cast 44;
    let b <i64> cast 2;
    let r0 <i64> sub a b;
    assert eq r0 <i64> cast 42;
    let z <i64> cast 0;
    let one <i64> cast 1;
    let r1 <i64> sub z one;
    assert lt r1 z;

mul: i64 の乗算(mod 2^64)

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let a <i64> cast 6;
    let b <i64> cast 7;
    let r0 <i64> mul a b;
    assert eq r0 <i64> cast 42;
    let z <i64> cast 0;
    let n <i64> cast 999;
    let r1 <i64> mul z n;
    assert eq r1 z;

div_s: i64 の符号付き除算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let n9 <i64> cast -9;
    let p9 <i64> cast 9;
    let p3 <i64> cast 3;
    let n3 <i64> cast -3;
    let p <i64> div_s n9 p3;
    let q <i64> div_s p9 n3;
    assert eq p <i64> cast -3;
    assert eq q <i64> cast -3;

div_u: i64 の符号なし除算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let a <i64> cast 100;
    let b <i64> cast 9;
    let r0 <i64> div_u a b;
    assert eq r0 <i64> cast 11;
    let a <i64> cast 9;
    let b <i64> cast 10;
    let r1 <i64> div_u a b;
    assert eq r1 <i64> cast 0;

rem_s: i64 の符号付き剰余

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let n10 <i64> cast -10;
    let p10 <i64> cast 10;
    let p3 <i64> cast 3;
    let a <i64> rem_s n10 p3;
    let b <i64> rem_s p10 p3;
    assert eq a <i64> cast -1;
    assert eq b <i64> cast 1;

rem_u: i64 の符号なし剰余

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let a <i64> cast 100;
    let b <i64> cast 9;
    let r0 <i64> rem_u a b;
    assert eq r0 <i64> cast 1;
    let a <i64> cast 9;
    let b <i64> cast 10;
    let r1 <i64> rem_u a b;
    assert eq r1 a;

and: i64 のビット AND

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let a <i64> cast 14;
    let b <i64> cast 11;
    let r_and <i64> and a b;
    let r_or <i64> or a b;
    let r_xor <i64> xor a b;
    assert eq r_and <i64> cast 10;
    assert eq r_or <i64> cast 15;
    assert eq r_xor <i64> cast 5;

or: i64 のビット OR

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

xor: i64 のビット XOR

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

shl: i64 の左シフト

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

shr_s: i64 の算術右シフト

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

shr_u: i64 の論理右シフト

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

rotl: i64 の左ローテート

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

rotr: i64 の右ローテート

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

clz: 先頭ゼロビット数の計算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ctz: 末尾ゼロビット数の計算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

popcnt: 1 ビット数の計算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

eq: i64 の等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let a <i64> cast -1;
    let b <i64> cast 1;
    let c <i64> cast -2;
    let d <i64> cast -1;
    assert eq a d;
    assert ne a b;
    assert lt c d;
    assert gt_u a b;

ne: i64 の非等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

lt: i64 の符号付き小なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

lt_u: i64 の符号なし小なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

le: i64 の符号付き以下比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

le_u: i64 の符号なし以下比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

gt: i64 の符号付き大なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

gt_u: i64 の符号なし大なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ge: i64 の符号付き以上比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ge_u: i64 の符号なし以上比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

add: f32 の加算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let x <f32> add 1.5 2.25;
    let y <f32> sub x 1.25;
    assert eq x 3.75;
    assert eq y 2.5;

sub: f32 の減算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

mul: f32 の乗算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

div: f32 の除算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

sqrt_f32: f32 の平方根

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

abs_f32: f32 の絶対値

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

neg: f32 の符号反転

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ceil_f32: f32 の切り上げ

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

floor_f32: f32 の切り下げ

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_f32: f32 の小数部切り捨て

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

nearest_f32: f32 の最近接整数丸め

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

min_f32: f32 の最小値

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

max_f32: f32 の最大値

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

copysign_f32: f32 の符号コピー

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

eq: f32 の等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ne: f32 の非等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

lt: f32 の小なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

le: f32 の以下比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

gt: f32 の大なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ge: f32 の以上比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

add: f64 の加算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let one <f64> cast 1;
    let two <f64> cast 2;
    let three <f64> cast 3;
    let six <f64> cast 6;
    let x <f64> add one two;
    let y <f64> mul x two;
    assert eq x three;
    assert eq y six;

sub: f64 の減算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

mul: f64 の乗算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

div: f64 の除算

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

sqrt_f64: f64 の平方根

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

abs_f64: f64 の絶対値

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

neg: f64 の符号反転

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ceil_f64: f64 の切り上げ

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

floor_f64: f64 の切り下げ

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_f64: f64 の小数部切り捨て

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

nearest_f64: f64 の最近接整数丸め

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

min_f64: f64 の最小値

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

max_f64: f64 の最大値

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

copysign_f64: f64 の符号コピー

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

eq: f64 の等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ne: f64 の非等値比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

lt: f64 の小なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

le: f64 の以下比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

gt: f64 の大なり比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

ge: f64 の以上比較

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

extend8_s_i32: i8 相当値の符号拡張

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

extend16_s_i32: i16 相当値の符号拡張

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

<i64> cast: i32 を符号拡張して i64 へ変換する

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let v <i64> cast -1;
    assert lt v <i64> cast 0;
    let v <i64> cast 123;
    assert eq v <i64> cast 123;

<i64> cast: i32 をゼロ拡張して i64 へ変換する

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/cast" as *
#import "core/math" as *
fn main <()*>()> ():
    let v <i64> cast -1;
    assert gt_u v <i64> cast 0;
    let v <i64> cast 1;
    assert eq v <i64> cast 1;

wrap_i64_to_i32: i64 を i32 へ切り詰める

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

convert_s_i32_to_f32: i32(符号付き) を f32 へ変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

convert_u_i32_to_f32: i32(符号なし) を f32 へ変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

convert_s_i64_to_f32: i64(符号付き) を f32 へ変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

convert_u_i64_to_f32: i64(符号なし) を f32 へ変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_s_f32_to_i32: f32 を i32(符号付き)へ切り捨て変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_u_f32_to_i32: f32 を i32(符号なし)へ切り捨て変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_sat_s_f32_to_i32: f32 を i32(符号付き)へ飽和変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_sat_u_f32_to_i32: f32 を i32(符号なし)へ飽和変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_s_f32_to_i64: f32 を i64(符号付き)へ切り捨て変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_u_f32_to_i64: f32 を i64(符号なし)へ切り捨て変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_sat_s_f32_to_i64: f32 を i64(符号付き)へ飽和変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_sat_u_f32_to_i64: f32 を i64(符号なし)へ飽和変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

<f64> cast: i32(符号付き) を f64 へ変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

convert_u_i32_to_f64: i32(符号なし) を f64 へ変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

convert_s_i64_to_f64: i64(符号付き) を f64 へ変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

convert_u_i64_to_f64: i64(符号なし) を f64 へ変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_s_f64_to_i32: f64 を i32(符号付き)へ切り捨て変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_u_f64_to_i32: f64 を i32(符号なし)へ切り捨て変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_sat_s_f64_to_i32: f64 を i32(符号付き)へ飽和変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_sat_u_f64_to_i32: f64 を i32(符号なし)へ飽和変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_s_f64_to_i64: f64 を i64(符号付き)へ切り捨て変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_u_f64_to_i64: f64 を i64(符号なし)へ切り捨て変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_sat_s_f64_to_i64: f64 を i64(符号付き)へ飽和変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

trunc_sat_u_f64_to_i64: f64 を i64(符号なし)へ飽和変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

promote_f32_to_f64: f32 を f64 へ拡張変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

demote_f64_to_f32: f64 を f32 へ縮小変換

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

reinterpret_i32_to_f32: i32 のビット列を f32 として再解釈

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

reinterpret_f32_to_i32: f32 のビット列を i32 として再解釈

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

reinterpret_i64_to_f64: i64 のビット列を f64 として再解釈

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

reinterpret_f64_to_i64: f64 のビット列を i64 として再解釈

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

extend_s: 符号拡張を行う

目的もくてき:

wrap: i64 を i32 へ切り詰める

目的もくてき:

convert_s: 符号付き整数を浮動小数へ変換する

目的もくてき:

trunc_s: 浮動小数を符号付き整数へ切り捨て変換する

目的もくてき:

promote: f32 を f64 に拡張する
demote: f64 を f32 に縮小する
and: bool の論理積

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

or: bool の論理和

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

not: bool の否定

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

追加整数型 API(u32/u64/u128/i128)

目的もくてき:

実装じっそう:

注意ちゅうい:

TEST
#entry main
#target core
#import "core/test" as *
#import "core/math" as *
#import "core/cast" as *
fn main <()*>()> ():
    assert_eq_i32 3 add 1 2;
    assert lt_u <i64> cast 9 <i64> cast 10;

u128: u128 相当(上位/下位 64-bit)
new: hi/lo から u128 値を構築する
to_u128: u64 値から u128 値を作る
add: u128 の加算(mod 2^128)
sub: u128 の減算(mod 2^128)
lt: u128 の大小比較(a < b)
i128: i128 相当(上位/下位 64-bit, 2 の補数)
new: hi/lo から i128 値を構築する
to_i128: i64 値を符号拡張して i128 に変換する
add: i128 の加算(mod 2^128)
sub: i128 の減算(mod 2^128)
mul_wide: u64 × u64 の 128-bit 積を返す

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

mul: i128 の乗算(mod 2^128)

目的もくてき:

実装じっそう:

a_lo*b_lo の 128-bit 積と交差項 a_hi*b_lo, a_lo*b_hi を合成します。

注意ちゅうい:

計算量けいさんりょう:

lt: i128 の大小比較(a < b)