38 lines
1.4 KiB
WebAssembly Text Format
38 lines
1.4 KiB
WebAssembly Text Format
(module
|
|
(memory 0 0)
|
|
(memory $m 1 1)
|
|
(memory 0 0)
|
|
(func (export "init") (param $i i32) (param $x f64)
|
|
(f64.store $m (local.get $i) (local.get $x)))
|
|
|
|
(func (export "run") (param $n i32) (param $z f64)
|
|
(local $i i32)
|
|
(block $exit
|
|
(loop $cont
|
|
(f64.store $m
|
|
(local.get $i)
|
|
(f64.div (f64.load $m (local.get $i)) (local.get $z))
|
|
)
|
|
(local.set $i (i32.add (local.get $i) (i32.const 8)))
|
|
(br_if $cont (i32.lt_u (local.get $i) (local.get $n)))
|
|
)
|
|
)
|
|
)
|
|
|
|
(func (export "check") (param $i i32) (result f64) (f64.load $m (local.get $i)))
|
|
)
|
|
|
|
(invoke "init" (i32.const 0) (f64.const 15.1))
|
|
(invoke "init" (i32.const 8) (f64.const 15.2))
|
|
(invoke "init" (i32.const 16) (f64.const 15.3))
|
|
(invoke "init" (i32.const 24) (f64.const 15.4))
|
|
(assert_return (invoke "check" (i32.const 0)) (f64.const 15.1))
|
|
(assert_return (invoke "check" (i32.const 8)) (f64.const 15.2))
|
|
(assert_return (invoke "check" (i32.const 16)) (f64.const 15.3))
|
|
(assert_return (invoke "check" (i32.const 24)) (f64.const 15.4))
|
|
(invoke "run" (i32.const 32) (f64.const 3.0))
|
|
(assert_return (invoke "check" (i32.const 0)) (f64.const 0x1.4222222222222p+2))
|
|
(assert_return (invoke "check" (i32.const 8)) (f64.const 0x1.4444444444444p+2))
|
|
(assert_return (invoke "check" (i32.const 16)) (f64.const 0x1.4666666666667p+2))
|
|
(assert_return (invoke "check" (i32.const 24)) (f64.const 0x1.4888888888889p+2))
|
|
|