diff --git a/kmath-ast/build.gradle.kts b/kmath-ast/build.gradle.kts index ca6937172..972cf15e4 100644 --- a/kmath-ast/build.gradle.kts +++ b/kmath-ast/build.gradle.kts @@ -2,6 +2,24 @@ plugins { id("ru.mipt.npm.mpp") } +kotlin.js { + nodejs { // or `browser` + testTask { + useMocha { + timeout = "0"// mochaTimeout here as string + } + } + } + + browser { // or `browser` + testTask { + useMocha { + timeout = "0"// mochaTimeout here as string + } + } + } +} + kotlin.sourceSets { commonMain { dependencies { @@ -21,6 +39,7 @@ kotlin.sourceSets { dependencies { implementation(npm("binaryen", "98.0.0")) implementation(npm("js-base64", "3.6.0")) + implementation(npm("webassembly", "0.11.0")) } } } diff --git a/kmath-ast/src/jsMain/kotlin/binaryen/index.binaryen.kt b/kmath-ast/src/jsMain/kotlin/index.binaryen.kt similarity index 97% rename from kmath-ast/src/jsMain/kotlin/binaryen/index.binaryen.kt rename to kmath-ast/src/jsMain/kotlin/index.binaryen.kt index 227f4e25f..e75bfdd85 100644 --- a/kmath-ast/src/jsMain/kotlin/binaryen/index.binaryen.kt +++ b/kmath-ast/src/jsMain/kotlin/index.binaryen.kt @@ -1,7 +1,15 @@ @file:Suppress( - "INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS", - "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", "KDocMissingDocumentation", "SortModifiers", "SpellCheckingInspection", - "ClassName" + "INTERFACE_WITH_SUPERCLASS", + "OVERRIDING_FINAL_MEMBER", + "RETURN_TYPE_MISMATCH_ON_OVERRIDE", + "CONFLICTING_OVERLOADS", + "PackageDirectoryMismatch", + "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", + "KDocMissingDocumentation", + "PropertyName", + "ClassName", + "SortModifiers", + "SpellCheckingInspection", ) @file:JsModule("binaryen") @@ -12,21 +20,35 @@ import org.khronos.webgl.Uint8Array import kotlin.js.Promise external var isReady: Boolean + external var ready: Promise + external var none: Type + external var i32: Type + external var i64: Type + external var f32: Type + external var f64: Type + external var v128: Type + external var funcref: Type + external var anyref: Type + external var nullref: Type + external var exnref: Type + external var unreachable: Type + external var auto: Type external fun createType(types: Array): Type + external fun expandType(type: Type): Array external enum class ExpressionIds { @@ -1180,19 +1202,18 @@ external var WidenHighUVecI16x8ToVecI32x4: Operations external var SwizzleVec8x16: Operations - -external interface `T$0` { +external interface `T$2` { fun get(index: Number, type: Type): ExpressionRef fun set(index: Number, value: ExpressionRef): ExpressionRef fun tee(index: Number, value: ExpressionRef, type: Type): ExpressionRef } -external interface `T$1` { +external interface `T$3` { fun get(name: String, type: Type): ExpressionRef fun set(name: String, value: ExpressionRef): ExpressionRef } -external interface `T$2` { +external interface `T$4` { fun size(): ExpressionRef fun grow(value: ExpressionRef): ExpressionRef fun init(segment: Number, dest: ExpressionRef, offset: ExpressionRef, size: ExpressionRef): ExpressionRef @@ -1200,16 +1221,16 @@ external interface `T$2` { fun fill(dest: ExpressionRef, value: ExpressionRef, size: ExpressionRef): ExpressionRef } -external interface `T$3` { +external interface `T$5` { fun drop(segment: Number): ExpressionRef } -external interface `T$4` { +external interface `T$6` { fun f32(value: ExpressionRef): ExpressionRef fun f64(value: ExpressionRef): ExpressionRef } -external interface `T$5` { +external interface `T$7` { fun add(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun sub(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun and(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef @@ -1219,20 +1240,20 @@ external interface `T$5` { fun cmpxchg(offset: Number, ptr: ExpressionRef, expected: ExpressionRef, replacement: ExpressionRef): ExpressionRef } -external interface `T$6` { +external interface `T$8` { fun load(offset: Number, ptr: ExpressionRef): ExpressionRef fun load8_u(offset: Number, ptr: ExpressionRef): ExpressionRef fun load16_u(offset: Number, ptr: ExpressionRef): ExpressionRef fun store(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun store8(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun store16(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef - var rmw: `T$5` - var rmw8_u: `T$5` - var rmw16_u: `T$5` + var rmw: `T$7` + var rmw8_u: `T$7` + var rmw16_u: `T$7` fun wait(ptr: ExpressionRef, expected: ExpressionRef, timeout: ExpressionRef): ExpressionRef } -external interface `T$7` { +external interface `T$9` { fun load(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef fun load8_s(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef fun load8_u(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef @@ -1246,10 +1267,10 @@ external interface `T$7` { fun ctz(value: ExpressionRef): ExpressionRef fun popcnt(value: ExpressionRef): ExpressionRef fun eqz(value: ExpressionRef): ExpressionRef - var trunc_s: `T$4` - var trunc_u: `T$4` - var trunc_s_sat: `T$4` - var trunc_u_sat: `T$4` + var trunc_s: `T$6` + var trunc_u: `T$6` + var trunc_s_sat: `T$6` + var trunc_u_sat: `T$6` fun reinterpret(value: ExpressionRef): ExpressionRef fun extend8_s(value: ExpressionRef): ExpressionRef fun extend16_s(value: ExpressionRef): ExpressionRef @@ -1279,11 +1300,11 @@ external interface `T$7` { fun gt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef fun ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef fun ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef - var atomic: `T$6` + var atomic: `T$8` fun pop(): ExpressionRef } -external interface `T$8` { +external interface `T$10` { fun load(offset: Number, ptr: ExpressionRef): ExpressionRef fun load8_u(offset: Number, ptr: ExpressionRef): ExpressionRef fun load16_u(offset: Number, ptr: ExpressionRef): ExpressionRef @@ -1292,14 +1313,14 @@ external interface `T$8` { fun store8(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun store16(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun store32(offset: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef - var rmw: `T$5` - var rmw8_u: `T$5` - var rmw16_u: `T$5` - var rmw32_u: `T$5` + var rmw: `T$7` + var rmw8_u: `T$7` + var rmw16_u: `T$7` + var rmw32_u: `T$7` fun wait(ptr: ExpressionRef, expected: ExpressionRef, timeout: ExpressionRef): ExpressionRef } -external interface `T$9` { +external interface `T$11` { fun load(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef fun load8_s(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef fun load8_u(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef @@ -1316,10 +1337,10 @@ external interface `T$9` { fun ctz(value: ExpressionRef): ExpressionRef fun popcnt(value: ExpressionRef): ExpressionRef fun eqz(value: ExpressionRef): ExpressionRef - var trunc_s: `T$4` - var trunc_u: `T$4` - var trunc_s_sat: `T$4` - var trunc_u_sat: `T$4` + var trunc_s: `T$6` + var trunc_u: `T$6` + var trunc_s_sat: `T$6` + var trunc_u_sat: `T$6` fun reinterpret(value: ExpressionRef): ExpressionRef fun extend8_s(value: ExpressionRef): ExpressionRef fun extend16_s(value: ExpressionRef): ExpressionRef @@ -1351,11 +1372,11 @@ external interface `T$9` { fun gt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef fun ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef fun ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef - var atomic: `T$8` + var atomic: `T$10` fun pop(): ExpressionRef } -external interface `T$10` { +external interface `T$12` { fun load(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef fun store(offset: Number, align: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun const(value: Number): ExpressionRef @@ -1368,8 +1389,8 @@ external interface `T$10` { fun nearest(value: ExpressionRef): ExpressionRef fun sqrt(value: ExpressionRef): ExpressionRef fun reinterpret(value: ExpressionRef): ExpressionRef - var convert_s: `T$4` - var convert_u: `T$4` + var convert_s: `T$6` + var convert_u: `T$6` fun demote(value: ExpressionRef): ExpressionRef fun add(left: ExpressionRef, right: ExpressionRef): ExpressionRef fun sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef @@ -1387,7 +1408,7 @@ external interface `T$10` { fun pop(): ExpressionRef } -external interface `T$11` { +external interface `T$13` { fun load(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef fun store(offset: Number, align: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun const(value: Number): ExpressionRef @@ -1400,8 +1421,8 @@ external interface `T$11` { fun nearest(value: ExpressionRef): ExpressionRef fun sqrt(value: ExpressionRef): ExpressionRef fun reinterpret(value: ExpressionRef): ExpressionRef - var convert_s: `T$4` - var convert_u: `T$4` + var convert_s: `T$6` + var convert_u: `T$6` fun promote(value: ExpressionRef): ExpressionRef fun add(left: ExpressionRef, right: ExpressionRef): ExpressionRef fun sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef @@ -1419,7 +1440,7 @@ external interface `T$11` { fun pop(): ExpressionRef } -external interface `T$12` { +external interface `T$14` { fun load(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef fun store(offset: Number, align: Number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef fun const(value: Number): ExpressionRef @@ -1432,7 +1453,7 @@ external interface `T$12` { fun pop(): ExpressionRef } -external interface `T$13` { +external interface `T$15` { fun splat(value: ExpressionRef): ExpressionRef fun extract_lane_s(vec: ExpressionRef, index: ExpressionRef): ExpressionRef fun extract_lane_u(vec: ExpressionRef, index: ExpressionRef): ExpressionRef @@ -1469,7 +1490,7 @@ external interface `T$13` { fun narrow_i16x8_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef } -external interface `T$14` { +external interface `T$16` { fun splat(value: ExpressionRef): ExpressionRef fun extract_lane_s(vec: ExpressionRef, index: ExpressionRef): ExpressionRef fun extract_lane_u(vec: ExpressionRef, index: ExpressionRef): ExpressionRef @@ -1512,7 +1533,7 @@ external interface `T$14` { fun load8x8_u(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef } -external interface `T$15` { +external interface `T$17` { fun splat(value: ExpressionRef): ExpressionRef fun extract_lane(vec: ExpressionRef, index: ExpressionRef): ExpressionRef fun replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef @@ -1545,7 +1566,7 @@ external interface `T$15` { fun load16x4_u(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef } -external interface `T$16` { +external interface `T$18` { fun splat(value: ExpressionRef): ExpressionRef fun extract_lane(vec: ExpressionRef, index: ExpressionRef): ExpressionRef fun replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef @@ -1563,7 +1584,7 @@ external interface `T$16` { fun load32x2_u(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef } -external interface `T$17` { +external interface `T$19` { fun splat(value: ExpressionRef): ExpressionRef fun extract_lane(vec: ExpressionRef, index: ExpressionRef): ExpressionRef fun replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef @@ -1588,42 +1609,42 @@ external interface `T$17` { fun convert_i32x4_u(value: ExpressionRef): ExpressionRef } -external interface `T$18` { +external interface `T$20` { fun shuffle(left: ExpressionRef, right: ExpressionRef, mask: Array): ExpressionRef fun swizzle(left: ExpressionRef, right: ExpressionRef): ExpressionRef fun load_splat(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef } -external interface `T$19` { +external interface `T$21` { fun load_splat(offset: Number, align: Number, ptr: ExpressionRef): ExpressionRef } -external interface `T$20` { +external interface `T$22` { fun pop(): ExpressionRef } -external interface `T$21` { +external interface `T$23` { fun `null`(): ExpressionRef fun is_null(value: ExpressionRef): ExpressionRef fun func(name: String): ExpressionRef } -external interface `T$22` { +external interface `T$24` { fun notify(ptr: ExpressionRef, notifyCount: ExpressionRef): ExpressionRef fun fence(): ExpressionRef } -external interface `T$23` { +external interface `T$25` { fun make(elements: Array): ExpressionRef fun extract(tuple: ExpressionRef, index: Number): ExpressionRef } -external interface `T$24` { +external interface `T$26` { var imported: Boolean var segments: Array } -external interface `T$25` { +external interface `T$27` { var binary: Uint8Array var sourceMap: String? } @@ -1673,32 +1694,32 @@ external open class Module { results: Type ): ExpressionRef - open var local: `T$0` - open var global: `T$1` - open var memory: `T$2` - open var data: `T$3` - open var i32: `T$7` - open var i64: `T$9` - open var f32: `T$10` - open var f64: `T$11` - open var v128: `T$12` - open var i8x16: `T$13` - open var i16x8: `T$14` - open var i32x4: `T$15` - open var i64x2: `T$16` - open var f32x4: `T$17` - open var f64x2: `T$17` - open var v8x16: `T$18` - open var v16x8: `T$19` - open var v32x4: `T$19` - open var v64x2: `T$19` - open var funcref: `T$20` - open var anyref: `T$20` - open var nullref: `T$20` - open var exnref: `T$20` - open var ref: `T$21` - open var atomic: `T$22` - open var tuple: `T$23` + open var local: `T$2` + open var global: `T$3` + open var memory: `T$4` + open var data: `T$5` + open var i32: `T$9` + open var i64: `T$11` + open var f32: `T$12` + open var f64: `T$13` + open var v128: `T$14` + open var i8x16: `T$15` + open var i16x8: `T$16` + open var i32x4: `T$17` + open var i64x2: `T$18` + open var f32x4: `T$19` + open var f64x2: `T$19` + open var v8x16: `T$20` + open var v16x8: `T$21` + open var v32x4: `T$21` + open var v64x2: `T$21` + open var funcref: `T$22` + open var anyref: `T$22` + open var nullref: `T$22` + open var exnref: `T$22` + open var ref: `T$23` + open var atomic: `T$24` + open var tuple: `T$25` open fun `try`(body: ExpressionRef, catchBody: ExpressionRef): ExpressionRef open fun `throw`(event: String, operands: Array): ExpressionRef open fun rethrow(exnref: ExpressionRef): ExpressionRef @@ -1767,7 +1788,7 @@ external open class Module { offset: ExpressionRef = definedExternally ) - open fun getFunctionTable(): `T$24` + open fun getFunctionTable(): `T$26` open fun setMemory( initial: Number, maximum: Number, @@ -1796,7 +1817,7 @@ external open class Module { open fun autoDrop() open fun dispose() open fun emitBinary(): Uint8Array - open fun emitBinary(sourceMapUrl: String?): `T$25` + open fun emitBinary(sourceMapUrl: String?): `T$27` open fun interpret() open fun addDebugInfoFileName(filename: String): Number open fun getDebugInfoFileName(index: Number): String? @@ -1921,13 +1942,13 @@ external interface StoreInfo : ExpressionInfo { var value: ExpressionRef } -external interface `T$26` { +external interface `T$28` { var low: Number var high: Number } external interface ConstInfo : ExpressionInfo { - var value: dynamic /* Number | `T$26` */ + var value: dynamic /* Number | `T$28` */ get() = definedExternally set(value) = definedExternally } diff --git a/kmath-ast/src/jsMain/kotlin/binaryen/typealiases.kt b/kmath-ast/src/jsMain/kotlin/index.binaryen.typealiases.kt similarity index 66% rename from kmath-ast/src/jsMain/kotlin/binaryen/typealiases.kt rename to kmath-ast/src/jsMain/kotlin/index.binaryen.typealiases.kt index e15851209..fa110cf73 100644 --- a/kmath-ast/src/jsMain/kotlin/binaryen/typealiases.kt +++ b/kmath-ast/src/jsMain/kotlin/index.binaryen.typealiases.kt @@ -1,11 +1,11 @@ -@file:Suppress("NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", "KDocMissingDocumentation") +@file:Suppress("PackageDirectoryMismatch", "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", "KDocMissingDocumentation") package binaryen typealias Type = Number -typealias RelooperBlockRef = Number typealias ExpressionRef = Number typealias FunctionRef = Number typealias GlobalRef = Number typealias ExportRef = Number typealias EventRef = Number +typealias RelooperBlockRef = Number diff --git a/kmath-ast/src/jsMain/kotlin/kscience/kmath/ast/Initial.kt b/kmath-ast/src/jsMain/kotlin/kscience/kmath/ast/Initial.kt index 36741dcf7..5a4746174 100644 --- a/kmath-ast/src/jsMain/kotlin/kscience/kmath/ast/Initial.kt +++ b/kmath-ast/src/jsMain/kotlin/kscience/kmath/ast/Initial.kt @@ -1,5051 +1,6 @@ package kscience.kmath.ast -internal const val INITIAL = "(module\n" + - " (type \$t0 (func))\n" + - " (type \$t1 (func (param f64) (result f64)))\n" + - " (type \$t2 (func (param f64 f64) (result f64)))\n" + - " (type \$t3 (func (param i32 i32 i32 i32 i32) (result i32)))\n" + - " (type \$t4 (func (param f64 i32) (result i32)))\n" + - " (type \$t5 (func (param f64 f64 i32) (result f64)))\n" + - " (type \$t6 (func (param f64 i32) (result f64)))\n" + - " (type \$t7 (func (param i32 i32 i32) (result i32)))\n" + - " (func \$__wasm_call_ctors (type \$t0))\n" + - " (func \$acos (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i64) (local \$l1 i32) (local \$l2 f64) (local \$l3 f64)\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l0\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.const 1072693248\n" + - " i32.lt_u\n" + - " br_if \$B2\n" + - " get_local \$l1\n" + - " i32.const -1072693248\n" + - " i32.add\n" + - " get_local \$l0\n" + - " i32.wrap/i64\n" + - " i32.or\n" + - " i32.eqz\n" + - " br_if \$B1\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.div\n" + - " return\n" + - " end\n" + - " block \$B3\n" + - " block \$B4\n" + - " get_local \$l1\n" + - " i32.const 1071644671\n" + - " i32.gt_u\n" + - " br_if \$B4\n" + - " f64.const 0x1.921fb54442d18p+0 (;=1.5708;)\n" + - " set_local \$l2\n" + - " get_local \$l1\n" + - " i32.const 1012924417\n" + - " i32.lt_u\n" + - " br_if \$B3\n" + - " f64.const 0x1.1a62633145c07p-54 (;=6.12323e-17;)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " tee_local \$l2\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " f64.const 0x1.23de10dfdf709p-15 (;=3.47933e-05;)\n" + - " f64.mul\n" + - " f64.const 0x1.9efe07501b288p-11 (;=0.000791535;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.48228b5688f3bp-5 (;=-0.0400555;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.9c1550e884455p-3 (;=0.201213;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.4d61203eb6f7dp-2 (;=-0.325566;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.5555555555555p-3 (;=0.166667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " f64.const 0x1.3b8c5b12e9282p-4 (;=0.0770382;)\n" + - " f64.mul\n" + - " f64.const -0x1.6066c1b8d0159p-1 (;=-0.688284;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.02ae59c598ac8p+1 (;=2.02095;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.33a271c8a2d4bp+1 (;=-2.40339;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " f64.sub\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.const 0x1.921fb54442d18p+0 (;=1.5708;)\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " get_local \$l0\n" + - " i64.const -1\n" + - " i64.le_s\n" + - " br_if \$B0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.sqrt\n" + - " tee_local \$l3\n" + - " i64.reinterpret/f64\n" + - " i64.const -4294967296\n" + - " i64.and\n" + - " f64.reinterpret/i64\n" + - " tee_local \$l2\n" + - " get_local \$l2\n" + - " f64.mul\n" + - " f64.sub\n" + - " get_local \$l3\n" + - " get_local \$l2\n" + - " f64.add\n" + - " f64.div\n" + - " get_local \$l3\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.23de10dfdf709p-15 (;=3.47933e-05;)\n" + - " f64.mul\n" + - " f64.const 0x1.9efe07501b288p-11 (;=0.000791535;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.48228b5688f3bp-5 (;=-0.0400555;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.9c1550e884455p-3 (;=0.201213;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.4d61203eb6f7dp-2 (;=-0.325566;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.5555555555555p-3 (;=0.166667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.3b8c5b12e9282p-4 (;=0.0770382;)\n" + - " f64.mul\n" + - " f64.const -0x1.6066c1b8d0159p-1 (;=-0.688284;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.02ae59c598ac8p+1 (;=2.02095;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.33a271c8a2d4bp+1 (;=-2.40339;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " f64.mul\n" + - " f64.add\n" + - " get_local \$l2\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " set_local \$l2\n" + - " end\n" + - " get_local \$l2\n" + - " return\n" + - " end\n" + - " f64.const 0x1.921fb54442d18p+1 (;=3.14159;)\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " get_local \$l0\n" + - " i64.const 0\n" + - " i64.lt_s\n" + - " select\n" + - " return\n" + - " end\n" + - " f64.const 0x1.921fb54442d18p+0 (;=1.5708;)\n" + - " get_local \$p0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " tee_local \$p0\n" + - " f64.sqrt\n" + - " tee_local \$l2\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.23de10dfdf709p-15 (;=3.47933e-05;)\n" + - " f64.mul\n" + - " f64.const 0x1.9efe07501b288p-11 (;=0.000791535;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.48228b5688f3bp-5 (;=-0.0400555;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.9c1550e884455p-3 (;=0.201213;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.4d61203eb6f7dp-2 (;=-0.325566;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.5555555555555p-3 (;=0.166667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.3b8c5b12e9282p-4 (;=0.0770382;)\n" + - " f64.mul\n" + - " f64.const -0x1.6066c1b8d0159p-1 (;=-0.688284;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.02ae59c598ac8p+1 (;=2.02095;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.33a271c8a2d4bp+1 (;=-2.40339;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " f64.mul\n" + - " f64.const -0x1.1a62633145c07p-54 (;=-6.12323e-17;)\n" + - " f64.add\n" + - " f64.add\n" + - " f64.sub\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.add)\n" + - " (func \$acosh (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32)\n" + - " block \$B0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " i64.const 52\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2047\n" + - " i32.and\n" + - " tee_local \$l0\n" + - " i32.const 1023\n" + - " i32.gt_u\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.add\n" + - " f64.sqrt\n" + - " f64.add\n" + - " call \$log1p\n" + - " return\n" + - " end\n" + - " block \$B1\n" + - " get_local \$l0\n" + - " i32.const 1048\n" + - " i32.gt_u\n" + - " br_if \$B1\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.add\n" + - " f64.sqrt\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.div\n" + - " f64.add\n" + - " call \$log\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " call \$log\n" + - " f64.const 0x1.62e42fefa39efp-1 (;=0.693147;)\n" + - " f64.add)\n" + - " (func \$asin (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i64) (local \$l1 i32) (local \$l2 f64) (local \$l3 f64) (local \$l4 f64)\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " block \$B3\n" + - " block \$B4\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l0\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.const 1072693248\n" + - " i32.lt_u\n" + - " br_if \$B4\n" + - " get_local \$l1\n" + - " i32.const -1072693248\n" + - " i32.add\n" + - " get_local \$l0\n" + - " i32.wrap/i64\n" + - " i32.or\n" + - " i32.eqz\n" + - " br_if \$B3\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.div\n" + - " return\n" + - " end\n" + - " block \$B5\n" + - " get_local \$l1\n" + - " i32.const 1071644671\n" + - " i32.gt_u\n" + - " br_if \$B5\n" + - " get_local \$l1\n" + - " i32.const -1048576\n" + - " i32.add\n" + - " i32.const 1044381696\n" + - " i32.ge_u\n" + - " br_if \$B2\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$p0\n" + - " f64.abs\n" + - " f64.sub\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.23de10dfdf709p-15 (;=3.47933e-05;)\n" + - " f64.mul\n" + - " f64.const 0x1.9efe07501b288p-11 (;=0.000791535;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.48228b5688f3bp-5 (;=-0.0400555;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.9c1550e884455p-3 (;=0.201213;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.4d61203eb6f7dp-2 (;=-0.325566;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.5555555555555p-3 (;=0.166667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.3b8c5b12e9282p-4 (;=0.0770382;)\n" + - " f64.mul\n" + - " f64.const -0x1.6066c1b8d0159p-1 (;=-0.688284;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.02ae59c598ac8p+1 (;=2.02095;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.33a271c8a2d4bp+1 (;=-2.40339;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " set_local \$l2\n" + - " get_local \$p0\n" + - " f64.sqrt\n" + - " set_local \$l3\n" + - " get_local \$l1\n" + - " i32.const 1072640819\n" + - " i32.lt_u\n" + - " br_if \$B1\n" + - " f64.const 0x1.921fb54442d18p+0 (;=1.5708;)\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " get_local \$l2\n" + - " f64.mul\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.const -0x1.1a62633145c07p-54 (;=-6.12323e-17;)\n" + - " f64.add\n" + - " f64.sub\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x1.921fb54442d18p+0 (;=1.5708;)\n" + - " f64.mul\n" + - " f64.const 0x1p-120 (;=7.52316e-37;)\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " tee_local \$l3\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " f64.const 0x1.23de10dfdf709p-15 (;=3.47933e-05;)\n" + - " f64.mul\n" + - " f64.const 0x1.9efe07501b288p-11 (;=0.000791535;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.48228b5688f3bp-5 (;=-0.0400555;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.9c1550e884455p-3 (;=0.201213;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.4d61203eb6f7dp-2 (;=-0.325566;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.5555555555555p-3 (;=0.166667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " f64.const 0x1.3b8c5b12e9282p-4 (;=0.0770382;)\n" + - " f64.mul\n" + - " f64.const -0x1.6066c1b8d0159p-1 (;=-0.688284;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.02ae59c598ac8p+1 (;=2.02095;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.33a271c8a2d4bp+1 (;=-2.40339;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " f64.const 0x1.921fb54442d18p-1 (;=0.785398;)\n" + - " get_local \$l3\n" + - " i64.reinterpret/f64\n" + - " i64.const -4294967296\n" + - " i64.and\n" + - " f64.reinterpret/i64\n" + - " tee_local \$l4\n" + - " get_local \$l4\n" + - " f64.add\n" + - " f64.sub\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " f64.add\n" + - " get_local \$l2\n" + - " f64.mul\n" + - " f64.const 0x1.1a62633145c07p-54 (;=6.12323e-17;)\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " f64.mul\n" + - " f64.sub\n" + - " get_local \$l3\n" + - " get_local \$l4\n" + - " f64.add\n" + - " f64.div\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.sub\n" + - " f64.sub\n" + - " f64.sub\n" + - " f64.const 0x1.921fb54442d18p-1 (;=0.785398;)\n" + - " f64.add\n" + - " set_local \$p0\n" + - " end\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " get_local \$p0\n" + - " get_local \$l0\n" + - " i64.const 0\n" + - " i64.lt_s\n" + - " select)\n" + - " (func \$asinh (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i32) (local \$l3 f64)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " f64.reinterpret/i64\n" + - " set_local \$p0\n" + - " block \$B0\n" + - " block \$B1\n" + - " get_local \$l1\n" + - " i64.const 52\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2047\n" + - " i32.and\n" + - " tee_local \$l2\n" + - " i32.const 1049\n" + - " i32.lt_u\n" + - " br_if \$B1\n" + - " get_local \$p0\n" + - " call \$log\n" + - " f64.const 0x1.62e42fefa39efp-1 (;=0.693147;)\n" + - " f64.add\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " block \$B2\n" + - " get_local \$l2\n" + - " i32.const 1024\n" + - " i32.lt_u\n" + - " br_if \$B2\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.sqrt\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.div\n" + - " f64.add\n" + - " call \$log\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " block \$B3\n" + - " get_local \$l2\n" + - " i32.const 997\n" + - " i32.lt_u\n" + - " br_if \$B3\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " tee_local \$l3\n" + - " get_local \$l3\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.sqrt\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " get_local \$p0\n" + - " f64.add\n" + - " call \$log1p\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+120 (;=1.32923e+36;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " get_local \$p0\n" + - " get_local \$l1\n" + - " i64.const 0\n" + - " i64.lt_s\n" + - " select)\n" + - " (func \$atan (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i32) (local \$l3 i32) (local \$l4 i32) (local \$l5 f64) (local \$l6 f64)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " set_local \$l0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 63\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " set_local \$l2\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " get_local \$l1\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l3\n" + - " i32.const 1141899264\n" + - " i32.lt_u\n" + - " br_if \$B2\n" + - " get_local \$l1\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " i64.const 9218868437227405312\n" + - " i64.gt_u\n" + - " br_if \$B1\n" + - " f64.const -0x1.921fb54442d18p+0 (;=-1.5708;)\n" + - " f64.const 0x1.921fb54442d18p+0 (;=1.5708;)\n" + - " get_local \$l2\n" + - " select\n" + - " return\n" + - " end\n" + - " block \$B3\n" + - " block \$B4\n" + - " get_local \$l3\n" + - " i32.const 1071382527\n" + - " i32.gt_u\n" + - " br_if \$B4\n" + - " i32.const -1\n" + - " set_local \$l4\n" + - " get_local \$l3\n" + - " i32.const 1044381695\n" + - " i32.gt_u\n" + - " br_if \$B3\n" + - " get_local \$l3\n" + - " i32.const 1048575\n" + - " i32.gt_u\n" + - " br_if \$B1\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f32.demote/f64\n" + - " f32.store offset=12\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " f64.abs\n" + - " set_local \$p0\n" + - " block \$B5\n" + - " block \$B6\n" + - " block \$B7\n" + - " get_local \$l3\n" + - " i32.const 1072889855\n" + - " i32.gt_u\n" + - " br_if \$B7\n" + - " get_local \$l3\n" + - " i32.const 1072037887\n" + - " i32.gt_u\n" + - " br_if \$B6\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.add\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1 (;=2;)\n" + - " f64.add\n" + - " f64.div\n" + - " set_local \$p0\n" + - " i32.const 0\n" + - " set_local \$l4\n" + - " br \$B3\n" + - " end\n" + - " get_local \$l3\n" + - " i32.const 1073971199\n" + - " i32.gt_u\n" + - " br_if \$B5\n" + - " get_local \$p0\n" + - " f64.const -0x1.8p+0 (;=-1.5;)\n" + - " f64.add\n" + - " get_local \$p0\n" + - " f64.const 0x1.8p+0 (;=1.5;)\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " set_local \$p0\n" + - " i32.const 2\n" + - " set_local \$l4\n" + - " br \$B3\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.add\n" + - " get_local \$p0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " set_local \$p0\n" + - " i32.const 1\n" + - " set_local \$l4\n" + - " br \$B3\n" + - " end\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " get_local \$p0\n" + - " f64.div\n" + - " set_local \$p0\n" + - " i32.const 3\n" + - " set_local \$l4\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " tee_local \$l5\n" + - " get_local \$l5\n" + - " f64.mul\n" + - " tee_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " f64.const -0x1.2b4442c6a6c2fp-5 (;=-0.0365316;)\n" + - " f64.mul\n" + - " f64.const -0x1.dde2d52defd9ap-5 (;=-0.0583357;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.3b0f2af749a6dp-4 (;=-0.0769188;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.c71c6fe231671p-4 (;=-0.111111;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.999999998ebc4p-3 (;=-0.2;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$l5\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " f64.const 0x1.0ad3ae322da11p-6 (;=0.0162858;)\n" + - " f64.mul\n" + - " f64.const 0x1.97b4b24760debp-5 (;=0.0497688;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.10d66a0d03d51p-4 (;=0.0666107;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.745cdc54c206ep-4 (;=0.0909089;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.24924920083ffp-3 (;=0.142857;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.555555555550dp-2 (;=0.333333;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " f64.mul\n" + - " set_local \$l6\n" + - " get_local \$l4\n" + - " i32.const -1\n" + - " i32.le_s\n" + - " br_if \$B0\n" + - " get_local \$l4\n" + - " i32.const 3\n" + - " i32.shl\n" + - " tee_local \$l3\n" + - " i32.const 1024\n" + - " i32.add\n" + - " f64.load\n" + - " get_local \$l6\n" + - " get_local \$l3\n" + - " i32.const 1056\n" + - " i32.add\n" + - " f64.load\n" + - " f64.sub\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.sub\n" + - " tee_local \$p0\n" + - " f64.neg\n" + - " get_local \$p0\n" + - " get_local \$l2\n" + - " select\n" + - " set_local \$p0\n" + - " end\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$l6\n" + - " f64.sub)\n" + - " (func \$atanh (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i32) (local \$l3 f64)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " f64.reinterpret/i64\n" + - " set_local \$p0\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " get_local \$l1\n" + - " i64.const 52\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2047\n" + - " i32.and\n" + - " tee_local \$l2\n" + - " i32.const 1021\n" + - " i32.gt_u\n" + - " br_if \$B2\n" + - " get_local \$l2\n" + - " i32.const 990\n" + - " i32.gt_u\n" + - " br_if \$B1\n" + - " get_local \$l2\n" + - " br_if \$B0\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f32.demote/f64\n" + - " f32.store offset=12\n" + - " br \$B0\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.div\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " call \$log1p\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " tee_local \$l3\n" + - " get_local \$l3\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.div\n" + - " f64.add\n" + - " call \$log1p\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " set_local \$p0\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " get_local \$p0\n" + - " get_local \$l1\n" + - " i64.const 0\n" + - " i64.lt_s\n" + - " select)\n" + - " (func \$__cos (type \$t2) (param \$p0 f64) (param \$p1 f64) (result f64)\n" + - " (local \$l0 f64) (local \$l1 f64) (local \$l2 f64)\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " tee_local \$l0\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " tee_local \$l1\n" + - " f64.sub\n" + - " tee_local \$l2\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$l2\n" + - " f64.sub\n" + - " get_local \$l1\n" + - " f64.sub\n" + - " get_local \$l0\n" + - " get_local \$l0\n" + - " get_local \$l0\n" + - " get_local \$l0\n" + - " f64.const 0x1.a01a019cb159p-16 (;=2.48016e-05;)\n" + - " f64.mul\n" + - " f64.const -0x1.6c16c16c15177p-10 (;=-0.00138889;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.555555555554cp-5 (;=0.0416667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$l0\n" + - " get_local \$l0\n" + - " f64.mul\n" + - " tee_local \$l1\n" + - " get_local \$l1\n" + - " f64.mul\n" + - " get_local \$l0\n" + - " get_local \$l0\n" + - " f64.const -0x1.8fae9be8838d4p-37 (;=-1.13596e-11;)\n" + - " f64.mul\n" + - " f64.const 0x1.1ee9ebdb4b1c4p-29 (;=2.08757e-09;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.27e4f809c52adp-22 (;=-2.75573e-07;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " get_local \$p1\n" + - " f64.mul\n" + - " f64.sub\n" + - " f64.add\n" + - " f64.add)\n" + - " (func \$__rem_pio2_large (type \$t3) (param \$p0 i32) (param \$p1 i32) (param \$p2 i32) (param \$p3 i32) (param \$p4 i32) (result i32)\n" + - " (local \$l0 i32) (local \$l1 i32) (local \$l2 i32) (local \$l3 i32) (local \$l4 i32) (local \$l5 i32) (local \$l6 i32) (local \$l7 f64) (local \$l8 i32) (local \$l9 i32) (local \$l10 i32) (local \$l11 i32) (local \$l12 i32) (local \$l13 i32) (local \$l14 i32) (local \$l15 i32) (local \$l16 i32) (local \$l17 i32) (local \$l18 f64) (local \$l19 i32) (local \$l20 i32) (local \$l21 i32) (local \$l22 f64) (local \$l23 f64)\n" + - " get_global \$g0\n" + - " i32.const 560\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " get_local \$p2\n" + - " get_local \$p2\n" + - " i32.const -3\n" + - " i32.add\n" + - " i32.const 24\n" + - " i32.div_s\n" + - " tee_local \$l1\n" + - " i32.const 0\n" + - " get_local \$l1\n" + - " i32.const 0\n" + - " i32.gt_s\n" + - " select\n" + - " tee_local \$l2\n" + - " i32.const -24\n" + - " i32.mul\n" + - " i32.add\n" + - " set_local \$l3\n" + - " block \$B0\n" + - " get_local \$p4\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.const 1088\n" + - " i32.add\n" + - " i32.load\n" + - " tee_local \$l4\n" + - " get_local \$p3\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$p2\n" + - " i32.add\n" + - " i32.const 0\n" + - " i32.lt_s\n" + - " br_if \$B0\n" + - " get_local \$l4\n" + - " get_local \$p3\n" + - " i32.add\n" + - " set_local \$l5\n" + - " get_local \$l2\n" + - " get_local \$p2\n" + - " i32.sub\n" + - " set_local \$p2\n" + - " get_local \$l2\n" + - " i32.const 1\n" + - " i32.add\n" + - " get_local \$p3\n" + - " i32.sub\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.const 1104\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$l0\n" + - " i32.const 320\n" + - " i32.add\n" + - " set_local \$l1\n" + - " loop \$L1\n" + - " block \$B2\n" + - " block \$B3\n" + - " get_local \$p2\n" + - " i32.const 0\n" + - " i32.lt_s\n" + - " br_if \$B3\n" + - " get_local \$l6\n" + - " i32.load\n" + - " f64.convert_s/i32\n" + - " set_local \$l7\n" + - " br \$B2\n" + - " end\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l7\n" + - " end\n" + - " get_local \$l1\n" + - " get_local \$l7\n" + - " f64.store\n" + - " get_local \$l1\n" + - " i32.const 8\n" + - " i32.add\n" + - " set_local \$l1\n" + - " get_local \$l6\n" + - " i32.const 4\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$p2\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l5\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l5\n" + - " br_if \$L1\n" + - " end\n" + - " end\n" + - " get_local \$l3\n" + - " i32.const -24\n" + - " i32.add\n" + - " set_local \$l8\n" + - " block \$B4\n" + - " block \$B5\n" + - " get_local \$p3\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " br_if \$B5\n" + - " get_local \$l0\n" + - " i32.const 320\n" + - " i32.add\n" + - " get_local \$p3\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$l9\n" + - " i32.const 0\n" + - " set_local \$l5\n" + - " loop \$L6\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l7\n" + - " get_local \$p0\n" + - " set_local \$p2\n" + - " get_local \$p3\n" + - " set_local \$l6\n" + - " get_local \$l9\n" + - " set_local \$l1\n" + - " loop \$L7\n" + - " get_local \$l7\n" + - " get_local \$p2\n" + - " f64.load\n" + - " get_local \$l1\n" + - " f64.load\n" + - " f64.mul\n" + - " f64.add\n" + - " set_local \$l7\n" + - " get_local \$p2\n" + - " i32.const 8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l1\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$l1\n" + - " get_local \$l6\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l6\n" + - " br_if \$L7\n" + - " end\n" + - " get_local \$l0\n" + - " get_local \$l5\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " get_local \$l7\n" + - " f64.store\n" + - " get_local \$l9\n" + - " i32.const 8\n" + - " i32.add\n" + - " set_local \$l9\n" + - " get_local \$l5\n" + - " get_local \$l4\n" + - " i32.lt_s\n" + - " set_local \$p2\n" + - " get_local \$l5\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l5\n" + - " get_local \$p2\n" + - " br_if \$L6\n" + - " br \$B4\n" + - " end\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 0\n" + - " get_local \$l4\n" + - " i32.const 0\n" + - " get_local \$l4\n" + - " i32.const 0\n" + - " i32.gt_s\n" + - " select\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.const 8\n" + - " i32.add\n" + - " call \$memset\n" + - " drop\n" + - " end\n" + - " i32.const 23\n" + - " get_local \$l8\n" + - " i32.sub\n" + - " set_local \$l10\n" + - " i32.const 24\n" + - " get_local \$l8\n" + - " i32.sub\n" + - " set_local \$l11\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l4\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " i32.const -4\n" + - " i32.add\n" + - " set_local \$l12\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " i32.const -4\n" + - " i32.add\n" + - " set_local \$l13\n" + - " get_local \$l0\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$l14\n" + - " get_local \$l0\n" + - " i32.const 8\n" + - " i32.or\n" + - " set_local \$l15\n" + - " get_local \$l4\n" + - " set_local \$l1\n" + - " loop \$L8 (result i32)\n" + - " get_local \$l0\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.shl\n" + - " tee_local \$l16\n" + - " i32.add\n" + - " f64.load\n" + - " set_local \$l7\n" + - " block \$B9\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " tee_local \$l17\n" + - " br_if \$B9\n" + - " get_local \$l14\n" + - " get_local \$l16\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$l1\n" + - " set_local \$l5\n" + - " loop \$L10\n" + - " block \$B11\n" + - " block \$B12\n" + - " get_local \$l7\n" + - " f64.const 0x1p-24 (;=5.96046e-08;)\n" + - " f64.mul\n" + - " tee_local \$l18\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B12\n" + - " i32.const -2147483648\n" + - " set_local \$l9\n" + - " br \$B11\n" + - " end\n" + - " get_local \$l18\n" + - " i32.trunc_s/f64\n" + - " set_local \$l9\n" + - " end\n" + - " block \$B13\n" + - " block \$B14\n" + - " get_local \$l7\n" + - " get_local \$l9\n" + - " f64.convert_s/i32\n" + - " tee_local \$l18\n" + - " f64.const -0x1p+24 (;=-1.67772e+07;)\n" + - " f64.mul\n" + - " f64.add\n" + - " tee_local \$l7\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B14\n" + - " i32.const -2147483648\n" + - " set_local \$l9\n" + - " br \$B13\n" + - " end\n" + - " get_local \$l7\n" + - " i32.trunc_s/f64\n" + - " set_local \$l9\n" + - " end\n" + - " get_local \$l6\n" + - " get_local \$l9\n" + - " i32.store\n" + - " get_local \$l6\n" + - " i32.const 4\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$p2\n" + - " f64.load\n" + - " get_local \$l18\n" + - " f64.add\n" + - " set_local \$l7\n" + - " get_local \$p2\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l5\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l5\n" + - " br_if \$L10\n" + - " end\n" + - " end\n" + - " block \$B15\n" + - " block \$B16\n" + - " block \$B17\n" + - " block \$B18\n" + - " block \$B19\n" + - " block \$B20\n" + - " block \$B21\n" + - " block \$B22\n" + - " block \$B23\n" + - " block \$B24\n" + - " block \$B25\n" + - " block \$B26\n" + - " block \$B27\n" + - " block \$B28\n" + - " block \$B29\n" + - " block \$B30\n" + - " get_local \$l7\n" + - " get_local \$l8\n" + - " call \$scalbn\n" + - " tee_local \$l7\n" + - " get_local \$l7\n" + - " f64.const 0x1p-3 (;=0.125;)\n" + - " f64.mul\n" + - " f64.floor\n" + - " f64.const -0x1p+3 (;=-8;)\n" + - " f64.mul\n" + - " f64.add\n" + - " tee_local \$l7\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B30\n" + - " i32.const -2147483648\n" + - " set_local \$l19\n" + - " get_local \$l7\n" + - " i32.const -2147483648\n" + - " f64.convert_s/i32\n" + - " f64.sub\n" + - " set_local \$l7\n" + - " get_local \$l8\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " tee_local \$l20\n" + - " i32.eqz\n" + - " br_if \$B29\n" + - " br \$B28\n" + - " end\n" + - " get_local \$l7\n" + - " get_local \$l7\n" + - " i32.trunc_s/f64\n" + - " tee_local \$l19\n" + - " f64.convert_s/i32\n" + - " f64.sub\n" + - " set_local \$l7\n" + - " get_local \$l8\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " tee_local \$l20\n" + - " br_if \$B28\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " i32.const -4\n" + - " i32.add\n" + - " tee_local \$p2\n" + - " get_local \$p2\n" + - " i32.load\n" + - " tee_local \$p2\n" + - " get_local \$p2\n" + - " get_local \$l11\n" + - " i32.shr_s\n" + - " tee_local \$p2\n" + - " get_local \$l11\n" + - " i32.shl\n" + - " i32.sub\n" + - " tee_local \$l6\n" + - " i32.store\n" + - " get_local \$p2\n" + - " get_local \$l19\n" + - " i32.add\n" + - " set_local \$l19\n" + - " get_local \$l6\n" + - " get_local \$l10\n" + - " i32.shr_s\n" + - " tee_local \$l21\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " br_if \$B26\n" + - " br \$B27\n" + - " end\n" + - " block \$B31\n" + - " get_local \$l8\n" + - " i32.eqz\n" + - " br_if \$B31\n" + - " i32.const 2\n" + - " set_local \$l21\n" + - " get_local \$l7\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.ge\n" + - " i32.const 1\n" + - " i32.xor\n" + - " i32.eqz\n" + - " br_if \$B27\n" + - " i32.const 0\n" + - " set_local \$l21\n" + - " get_local \$l7\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " f64.eq\n" + - " br_if \$B25\n" + - " br \$B24\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " i32.const -4\n" + - " i32.add\n" + - " i32.load\n" + - " i32.const 23\n" + - " i32.shr_s\n" + - " tee_local \$l21\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " br_if \$B26\n" + - " end\n" + - " block \$B32\n" + - " block \$B33\n" + - " get_local \$l17\n" + - " br_if \$B33\n" + - " i32.const 0\n" + - " set_local \$l17\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l1\n" + - " set_local \$l9\n" + - " loop \$L34\n" + - " get_local \$p2\n" + - " i32.load\n" + - " set_local \$l6\n" + - " i32.const 16777215\n" + - " set_local \$l5\n" + - " block \$B35\n" + - " block \$B36\n" + - " get_local \$l17\n" + - " br_if \$B36\n" + - " get_local \$l6\n" + - " i32.eqz\n" + - " br_if \$B35\n" + - " i32.const 1\n" + - " set_local \$l17\n" + - " i32.const 16777216\n" + - " set_local \$l5\n" + - " end\n" + - " get_local \$p2\n" + - " get_local \$l5\n" + - " get_local \$l6\n" + - " i32.sub\n" + - " i32.store\n" + - " get_local \$p2\n" + - " i32.const 4\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l9\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l9\n" + - " br_if \$L34\n" + - " br \$B32\n" + - " end\n" + - " i32.const 0\n" + - " set_local \$l17\n" + - " get_local \$p2\n" + - " i32.const 4\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l9\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l9\n" + - " br_if \$L34\n" + - " br \$B32\n" + - " end\n" + - " end\n" + - " i32.const 0\n" + - " set_local \$l17\n" + - " end\n" + - " block \$B37\n" + - " block \$B38\n" + - " block \$B39\n" + - " get_local \$l20\n" + - " br_if \$B39\n" + - " get_local \$l8\n" + - " i32.const 2\n" + - " i32.eq\n" + - " br_if \$B38\n" + - " get_local \$l8\n" + - " i32.const 1\n" + - " i32.ne\n" + - " br_if \$B39\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " i32.const -4\n" + - " i32.add\n" + - " tee_local \$p2\n" + - " get_local \$p2\n" + - " i32.load\n" + - " i32.const 8388607\n" + - " i32.and\n" + - " i32.store\n" + - " end\n" + - " get_local \$l19\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l19\n" + - " get_local \$l21\n" + - " i32.const 2\n" + - " i32.ne\n" + - " br_if \$B26\n" + - " br \$B37\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " i32.const -4\n" + - " i32.add\n" + - " tee_local \$p2\n" + - " get_local \$p2\n" + - " i32.load\n" + - " i32.const 4194303\n" + - " i32.and\n" + - " i32.store\n" + - " get_local \$l19\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l19\n" + - " get_local \$l21\n" + - " i32.const 2\n" + - " i32.ne\n" + - " br_if \$B26\n" + - " end\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$l7\n" + - " f64.sub\n" + - " set_local \$l7\n" + - " i32.const 2\n" + - " set_local \$l21\n" + - " get_local \$l17\n" + - " i32.eqz\n" + - " br_if \$B26\n" + - " get_local \$l7\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$l8\n" + - " call \$scalbn\n" + - " f64.sub\n" + - " tee_local \$l7\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " f64.eq\n" + - " br_if \$B25\n" + - " br \$B24\n" + - " end\n" + - " get_local \$l7\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " f64.ne\n" + - " br_if \$B24\n" + - " end\n" + - " block \$B40\n" + - " get_local \$l1\n" + - " get_local \$l4\n" + - " i32.le_s\n" + - " br_if \$B40\n" + - " get_local \$l13\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$p2\n" + - " i32.const 0\n" + - " set_local \$l6\n" + - " get_local \$l1\n" + - " set_local \$l5\n" + - " loop \$L41\n" + - " get_local \$p2\n" + - " i32.load\n" + - " get_local \$l6\n" + - " i32.or\n" + - " set_local \$l6\n" + - " get_local \$p2\n" + - " i32.const -4\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l5\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l5\n" + - " get_local \$l4\n" + - " i32.gt_s\n" + - " br_if \$L41\n" + - " end\n" + - " get_local \$l6\n" + - " br_if \$B23\n" + - " end\n" + - " get_local \$l12\n" + - " set_local \$p2\n" + - " get_local \$l1\n" + - " set_local \$l9\n" + - " loop \$L42\n" + - " get_local \$l9\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l9\n" + - " get_local \$p2\n" + - " i32.load\n" + - " set_local \$l6\n" + - " get_local \$p2\n" + - " i32.const -4\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " i32.eqz\n" + - " br_if \$L42\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$p2\n" + - " block \$B43\n" + - " get_local \$p3\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " br_if \$B43\n" + - " get_local \$l0\n" + - " i32.const 320\n" + - " i32.add\n" + - " get_local \$p3\n" + - " get_local \$l1\n" + - " i32.add\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$l17\n" + - " loop \$L44\n" + - " get_local \$l0\n" + - " i32.const 320\n" + - " i32.add\n" + - " get_local \$l1\n" + - " get_local \$p3\n" + - " i32.add\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " get_local \$p2\n" + - " tee_local \$l5\n" + - " get_local \$l2\n" + - " i32.add\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.const 1104\n" + - " i32.add\n" + - " i32.load\n" + - " f64.convert_s/i32\n" + - " f64.store\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l7\n" + - " get_local \$p0\n" + - " set_local \$p2\n" + - " get_local \$l17\n" + - " set_local \$l1\n" + - " get_local \$p3\n" + - " set_local \$l6\n" + - " loop \$L45\n" + - " get_local \$l7\n" + - " get_local \$p2\n" + - " f64.load\n" + - " get_local \$l1\n" + - " f64.load\n" + - " f64.mul\n" + - " f64.add\n" + - " set_local \$l7\n" + - " get_local \$p2\n" + - " i32.const 8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l1\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$l1\n" + - " get_local \$l6\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l6\n" + - " br_if \$L45\n" + - " end\n" + - " get_local \$l0\n" + - " get_local \$l5\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " get_local \$l7\n" + - " f64.store\n" + - " get_local \$l17\n" + - " i32.const 8\n" + - " i32.add\n" + - " set_local \$l17\n" + - " get_local \$l5\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l5\n" + - " set_local \$l1\n" + - " get_local \$l5\n" + - " get_local \$l9\n" + - " i32.lt_s\n" + - " br_if \$L44\n" + - " br \$B15\n" + - " end\n" + - " end\n" + - " get_local \$l15\n" + - " get_local \$l16\n" + - " i32.add\n" + - " i32.const 0\n" + - " get_local \$l9\n" + - " get_local \$p2\n" + - " get_local \$l9\n" + - " get_local \$p2\n" + - " i32.gt_s\n" + - " select\n" + - " get_local \$l1\n" + - " i32.sub\n" + - " i32.const 3\n" + - " i32.shl\n" + - " call \$memset\n" + - " drop\n" + - " get_local \$l2\n" + - " get_local \$l1\n" + - " i32.add\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.const 1108\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l0\n" + - " i32.const 320\n" + - " i32.add\n" + - " get_local \$p3\n" + - " get_local \$l1\n" + - " i32.add\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$l6\n" + - " loop \$L46\n" + - " get_local \$l6\n" + - " get_local \$p2\n" + - " i32.load\n" + - " f64.convert_s/i32\n" + - " f64.store\n" + - " get_local \$p2\n" + - " i32.const 4\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " i32.const 8\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.add\n" + - " tee_local \$l1\n" + - " get_local \$l9\n" + - " i32.lt_s\n" + - " br_if \$L46\n" + - " end\n" + - " get_local \$l9\n" + - " set_local \$l1\n" + - " br \$L8\n" + - " end\n" + - " block \$B47\n" + - " get_local \$l7\n" + - " i32.const 0\n" + - " get_local \$l8\n" + - " i32.sub\n" + - " call \$scalbn\n" + - " tee_local \$l7\n" + - " f64.const 0x1p+24 (;=1.67772e+07;)\n" + - " f64.ge\n" + - " i32.const 1\n" + - " i32.xor\n" + - " i32.eqz\n" + - " br_if \$B47\n" + - " get_local \$l7\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B22\n" + - " i32.const -2147483648\n" + - " set_local \$p2\n" + - " br \$B21\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " set_local \$l6\n" + - " get_local \$l7\n" + - " f64.const 0x1p-24 (;=5.96046e-08;)\n" + - " f64.mul\n" + - " tee_local \$l18\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B20\n" + - " i32.const -2147483648\n" + - " set_local \$p2\n" + - " br \$B19\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " i32.const -4\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l8\n" + - " set_local \$l3\n" + - " loop \$L48\n" + - " get_local \$l1\n" + - " i32.const -1\n" + - " i32.add\n" + - " set_local \$l1\n" + - " get_local \$l3\n" + - " i32.const -24\n" + - " i32.add\n" + - " set_local \$l3\n" + - " get_local \$p2\n" + - " i32.load\n" + - " set_local \$l6\n" + - " get_local \$p2\n" + - " i32.const -4\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " i32.eqz\n" + - " br_if \$L48\n" + - " end\n" + - " i32.const 0\n" + - " set_local \$l9\n" + - " get_local \$l1\n" + - " i32.const 0\n" + - " i32.ge_s\n" + - " br_if \$B17\n" + - " br \$B16\n" + - " end\n" + - " get_local \$l7\n" + - " i32.trunc_s/f64\n" + - " set_local \$p2\n" + - " end\n" + - " get_local \$l8\n" + - " set_local \$l3\n" + - " br \$B18\n" + - " end\n" + - " get_local \$l18\n" + - " i32.trunc_s/f64\n" + - " set_local \$p2\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l6\n" + - " i32.add\n" + - " set_local \$l6\n" + - " block \$B49\n" + - " block \$B50\n" + - " get_local \$l7\n" + - " get_local \$p2\n" + - " f64.convert_s/i32\n" + - " f64.const -0x1p+24 (;=-1.67772e+07;)\n" + - " f64.mul\n" + - " f64.add\n" + - " tee_local \$l7\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B50\n" + - " i32.const -2147483648\n" + - " set_local \$l5\n" + - " br \$B49\n" + - " end\n" + - " get_local \$l7\n" + - " i32.trunc_s/f64\n" + - " set_local \$l5\n" + - " end\n" + - " get_local \$l6\n" + - " get_local \$l5\n" + - " i32.store\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l1\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " get_local \$p2\n" + - " i32.store\n" + - " i32.const 0\n" + - " set_local \$l9\n" + - " get_local \$l1\n" + - " i32.const 0\n" + - " i32.lt_s\n" + - " br_if \$B16\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l5\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$l3\n" + - " call \$scalbn\n" + - " set_local \$l7\n" + - " get_local \$l0\n" + - " i32.const 480\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l0\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$l6\n" + - " loop \$L51\n" + - " get_local \$l6\n" + - " get_local \$l7\n" + - " get_local \$p2\n" + - " i32.load\n" + - " f64.convert_s/i32\n" + - " f64.mul\n" + - " f64.store\n" + - " get_local \$p2\n" + - " i32.const -4\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$l7\n" + - " f64.const 0x1p-24 (;=5.96046e-08;)\n" + - " f64.mul\n" + - " set_local \$l7\n" + - " get_local \$l5\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l5\n" + - " get_local \$l9\n" + - " i32.gt_s\n" + - " br_if \$L51\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 0\n" + - " i32.lt_s\n" + - " br_if \$B16\n" + - " get_local \$l0\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$l9\n" + - " get_local \$l1\n" + - " set_local \$p2\n" + - " loop \$L52\n" + - " get_local \$l1\n" + - " get_local \$p2\n" + - " tee_local \$p3\n" + - " i32.sub\n" + - " set_local \$l17\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l7\n" + - " i32.const 0\n" + - " set_local \$p2\n" + - " i32.const 0\n" + - " set_local \$l6\n" + - " block \$B53\n" + - " loop \$L54\n" + - " get_local \$l7\n" + - " get_local \$p2\n" + - " i32.const 3872\n" + - " i32.add\n" + - " f64.load\n" + - " get_local \$l9\n" + - " get_local \$p2\n" + - " i32.add\n" + - " f64.load\n" + - " f64.mul\n" + - " f64.add\n" + - " set_local \$l7\n" + - " get_local \$l6\n" + - " get_local \$l4\n" + - " i32.ge_s\n" + - " br_if \$B53\n" + - " get_local \$p2\n" + - " i32.const 8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " get_local \$l17\n" + - " i32.lt_u\n" + - " set_local \$l5\n" + - " get_local \$l6\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$l5\n" + - " br_if \$L54\n" + - " end\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 160\n" + - " i32.add\n" + - " get_local \$l17\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " get_local \$l7\n" + - " f64.store\n" + - " get_local \$l9\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$l9\n" + - " get_local \$p3\n" + - " i32.const -1\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$p3\n" + - " i32.const 0\n" + - " i32.gt_s\n" + - " br_if \$L52\n" + - " end\n" + - " end\n" + - " block \$B55\n" + - " block \$B56\n" + - " block \$B57\n" + - " block \$B58\n" + - " block \$B59\n" + - " block \$B60\n" + - " block \$B61\n" + - " block \$B62\n" + - " get_local \$p4\n" + - " i32.const -1\n" + - " i32.add\n" + - " i32.const 2\n" + - " i32.lt_u\n" + - " br_if \$B62\n" + - " get_local \$p4\n" + - " i32.eqz\n" + - " br_if \$B61\n" + - " get_local \$p4\n" + - " i32.const 3\n" + - " i32.ne\n" + - " br_if \$B55\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l22\n" + - " block \$B63\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " br_if \$B63\n" + - " get_local \$l0\n" + - " i32.const 160\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " tee_local \$l6\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " f64.load\n" + - " set_local \$l7\n" + - " get_local \$l1\n" + - " set_local \$l6\n" + - " loop \$L64\n" + - " get_local \$p2\n" + - " get_local \$p2\n" + - " f64.load\n" + - " tee_local \$l23\n" + - " get_local \$l7\n" + - " f64.add\n" + - " tee_local \$l18\n" + - " f64.store\n" + - " get_local \$p2\n" + - " i32.const 8\n" + - " i32.add\n" + - " get_local \$l7\n" + - " get_local \$l23\n" + - " get_local \$l18\n" + - " f64.sub\n" + - " f64.add\n" + - " f64.store\n" + - " get_local \$p2\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l18\n" + - " set_local \$l7\n" + - " get_local \$l6\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l6\n" + - " i32.const 0\n" + - " i32.gt_s\n" + - " br_if \$L64\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.lt_s\n" + - " br_if \$B63\n" + - " get_local \$l0\n" + - " i32.const 160\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " tee_local \$l6\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " f64.load\n" + - " set_local \$l7\n" + - " get_local \$l1\n" + - " set_local \$l6\n" + - " loop \$L65\n" + - " get_local \$p2\n" + - " get_local \$p2\n" + - " f64.load\n" + - " tee_local \$l23\n" + - " get_local \$l7\n" + - " f64.add\n" + - " tee_local \$l18\n" + - " f64.store\n" + - " get_local \$p2\n" + - " i32.const 8\n" + - " i32.add\n" + - " get_local \$l7\n" + - " get_local \$l23\n" + - " get_local \$l18\n" + - " f64.sub\n" + - " f64.add\n" + - " f64.store\n" + - " get_local \$p2\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l18\n" + - " set_local \$l7\n" + - " get_local \$l6\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l6\n" + - " i32.const 1\n" + - " i32.gt_s\n" + - " br_if \$L65\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 2\n" + - " i32.lt_s\n" + - " br_if \$B63\n" + - " get_local \$l0\n" + - " i32.const 160\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$p2\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l22\n" + - " loop \$L66\n" + - " get_local \$l22\n" + - " get_local \$p2\n" + - " f64.load\n" + - " f64.add\n" + - " set_local \$l22\n" + - " get_local \$p2\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l1\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l1\n" + - " i32.const 1\n" + - " i32.gt_s\n" + - " br_if \$L66\n" + - " end\n" + - " end\n" + - " get_local \$l0\n" + - " f64.load offset=160\n" + - " set_local \$l7\n" + - " get_local \$l21\n" + - " i32.eqz\n" + - " br_if \$B58\n" + - " get_local \$p1\n" + - " get_local \$l7\n" + - " f64.neg\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$l0\n" + - " f64.load offset=168\n" + - " f64.neg\n" + - " f64.store offset=8\n" + - " get_local \$p1\n" + - " get_local \$l22\n" + - " f64.neg\n" + - " f64.store offset=16\n" + - " br \$B55\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 0\n" + - " i32.lt_s\n" + - " br_if \$B60\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$l0\n" + - " i32.const 160\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$p2\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l7\n" + - " loop \$L67\n" + - " get_local \$l7\n" + - " get_local \$p2\n" + - " f64.load\n" + - " f64.add\n" + - " set_local \$l7\n" + - " get_local \$p2\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l6\n" + - " i32.const 0\n" + - " i32.gt_s\n" + - " br_if \$L67\n" + - " br \$B59\n" + - " end\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 0\n" + - " i32.lt_s\n" + - " br_if \$B57\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.add\n" + - " set_local \$l6\n" + - " get_local \$l0\n" + - " i32.const 160\n" + - " i32.add\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.add\n" + - " set_local \$p2\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l7\n" + - " loop \$L68\n" + - " get_local \$l7\n" + - " get_local \$p2\n" + - " f64.load\n" + - " f64.add\n" + - " set_local \$l7\n" + - " get_local \$p2\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l6\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l6\n" + - " i32.const 0\n" + - " i32.gt_s\n" + - " br_if \$L68\n" + - " br \$B56\n" + - " end\n" + - " end\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l7\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$l7\n" + - " f64.neg\n" + - " get_local \$l7\n" + - " get_local \$l21\n" + - " select\n" + - " f64.store\n" + - " get_local \$l0\n" + - " f64.load offset=160\n" + - " get_local \$l7\n" + - " f64.sub\n" + - " set_local \$l7\n" + - " block \$B69\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.lt_s\n" + - " br_if \$B69\n" + - " get_local \$l0\n" + - " i32.const 160\n" + - " i32.add\n" + - " i32.const 8\n" + - " i32.or\n" + - " set_local \$p2\n" + - " loop \$L70\n" + - " get_local \$l7\n" + - " get_local \$p2\n" + - " f64.load\n" + - " f64.add\n" + - " set_local \$l7\n" + - " get_local \$p2\n" + - " i32.const 8\n" + - " i32.add\n" + - " set_local \$p2\n" + - " get_local \$l1\n" + - " i32.const -1\n" + - " i32.add\n" + - " tee_local \$l1\n" + - " br_if \$L70\n" + - " end\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$l7\n" + - " f64.neg\n" + - " get_local \$l7\n" + - " get_local \$l21\n" + - " select\n" + - " f64.store offset=8\n" + - " br \$B55\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$l7\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$l0\n" + - " i64.load offset=168\n" + - " i64.store offset=8\n" + - " get_local \$p1\n" + - " get_local \$l22\n" + - " f64.store offset=16\n" + - " br \$B55\n" + - " end\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l7\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$l7\n" + - " f64.neg\n" + - " get_local \$l7\n" + - " get_local \$l21\n" + - " select\n" + - " f64.store\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 560\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$l19\n" + - " i32.const 7\n" + - " i32.and\n" + - " return\n" + - " end\n" + - " get_local \$l9\n" + - " set_local \$l1\n" + - " br \$L8\n" + - " end)\n" + - " (func \$__rem_pio2 (type \$t4) (param \$p0 f64) (param \$p1 i32) (result i32)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i32) (local \$l3 i32) (local \$l4 i32) (local \$l5 f64) (local \$l6 f64) (local \$l7 f64) (local \$l8 i32) (local \$l9 f64)\n" + - " get_global \$g0\n" + - " i32.const 48\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 63\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " set_local \$l2\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " block \$B3\n" + - " block \$B4\n" + - " block \$B5\n" + - " block \$B6\n" + - " block \$B7\n" + - " block \$B8\n" + - " block \$B9\n" + - " block \$B10\n" + - " block \$B11\n" + - " block \$B12\n" + - " block \$B13\n" + - " get_local \$l1\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " tee_local \$l3\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l4\n" + - " i32.const 1074752122\n" + - " i32.gt_u\n" + - " br_if \$B13\n" + - " get_local \$l3\n" + - " i32.const 1048575\n" + - " i32.and\n" + - " i32.const 598523\n" + - " i32.eq\n" + - " br_if \$B10\n" + - " get_local \$l4\n" + - " i32.const 1073928572\n" + - " i32.gt_u\n" + - " br_if \$B12\n" + - " get_local \$l2\n" + - " i32.eqz\n" + - " br_if \$B7\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.const 0x1.921fb544p+0 (;=1.5708;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " f64.const 0x1.0b4611a626331p-34 (;=6.0771e-11;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const 0x1.0b4611a626331p-34 (;=6.0771e-11;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const -1\n" + - " return\n" + - " end\n" + - " block \$B14\n" + - " get_local \$l4\n" + - " i32.const 1075594811\n" + - " i32.gt_u\n" + - " br_if \$B14\n" + - " get_local \$l4\n" + - " i32.const 1075183036\n" + - " i32.gt_u\n" + - " br_if \$B11\n" + - " get_local \$l4\n" + - " i32.const 1074977148\n" + - " i32.eq\n" + - " br_if \$B10\n" + - " get_local \$l2\n" + - " i32.eqz\n" + - " br_if \$B3\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.const 0x1.2d97c7f3p+2 (;=4.71239;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " f64.const 0x1.90e91a79394cap-33 (;=1.82313e-10;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const 0x1.90e91a79394cap-33 (;=1.82313e-10;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const -3\n" + - " return\n" + - " end\n" + - " get_local \$l4\n" + - " i32.const 1094263290\n" + - " i32.le_u\n" + - " br_if \$B10\n" + - " get_local \$l4\n" + - " i32.const 2146435072\n" + - " i32.lt_u\n" + - " br_if \$B9\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " tee_local \$p0\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const 0\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " i32.eqz\n" + - " br_if \$B6\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.const 0x1.921fb544p+1 (;=3.14159;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " f64.const 0x1.0b4611a626331p-33 (;=1.21542e-10;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const 0x1.0b4611a626331p-33 (;=1.21542e-10;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const -2\n" + - " return\n" + - " end\n" + - " get_local \$l4\n" + - " i32.const 1075388923\n" + - " i32.ne\n" + - " br_if \$B8\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.45f306dc9c883p-1 (;=0.63662;)\n" + - " f64.mul\n" + - " f64.const 0x1.8p+52 (;=6.7554e+15;)\n" + - " f64.add\n" + - " f64.const -0x1.8p+52 (;=-6.7554e+15;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.const -0x1.921fb544p+0 (;=-1.5708;)\n" + - " f64.mul\n" + - " f64.add\n" + - " tee_local \$l6\n" + - " get_local \$l5\n" + - " f64.const 0x1.0b4611a626331p-34 (;=6.0771e-11;)\n" + - " f64.mul\n" + - " tee_local \$l7\n" + - " f64.sub\n" + - " tee_local \$p0\n" + - " f64.store\n" + - " get_local \$l4\n" + - " i32.const 20\n" + - " i32.shr_u\n" + - " tee_local \$l8\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " i64.const 52\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2047\n" + - " i32.and\n" + - " i32.sub\n" + - " i32.const 17\n" + - " i32.lt_s\n" + - " set_local \$l3\n" + - " block \$B15\n" + - " block \$B16\n" + - " block \$B17\n" + - " get_local \$l5\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B17\n" + - " i32.const -2147483648\n" + - " set_local \$l4\n" + - " get_local \$l3\n" + - " i32.eqz\n" + - " br_if \$B16\n" + - " br \$B15\n" + - " end\n" + - " get_local \$l5\n" + - " i32.trunc_s/f64\n" + - " set_local \$l4\n" + - " get_local \$l3\n" + - " br_if \$B15\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$l6\n" + - " get_local \$l5\n" + - " f64.const 0x1.0b4611a6p-34 (;=6.0771e-11;)\n" + - " f64.mul\n" + - " tee_local \$p0\n" + - " f64.sub\n" + - " tee_local \$l9\n" + - " get_local \$l5\n" + - " f64.const 0x1.3198a2e037073p-69 (;=2.02227e-21;)\n" + - " f64.mul\n" + - " get_local \$l6\n" + - " get_local \$l9\n" + - " f64.sub\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.sub\n" + - " tee_local \$l7\n" + - " f64.sub\n" + - " tee_local \$p0\n" + - " f64.store\n" + - " block \$B18\n" + - " get_local \$l8\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " i64.const 52\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2047\n" + - " i32.and\n" + - " i32.sub\n" + - " i32.const 50\n" + - " i32.lt_s\n" + - " br_if \$B18\n" + - " get_local \$p1\n" + - " get_local \$l9\n" + - " get_local \$l5\n" + - " f64.const 0x1.3198a2ep-69 (;=2.02227e-21;)\n" + - " f64.mul\n" + - " tee_local \$p0\n" + - " f64.sub\n" + - " tee_local \$l6\n" + - " get_local \$l5\n" + - " f64.const 0x1.b839a252049c1p-104 (;=8.47843e-32;)\n" + - " f64.mul\n" + - " get_local \$l9\n" + - " get_local \$l6\n" + - " f64.sub\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.sub\n" + - " tee_local \$l7\n" + - " f64.sub\n" + - " tee_local \$p0\n" + - " f64.store\n" + - " br \$B15\n" + - " end\n" + - " get_local \$l9\n" + - " set_local \$l6\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$l6\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " get_local \$l7\n" + - " f64.sub\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$l4\n" + - " return\n" + - " end\n" + - " get_local \$l1\n" + - " i64.const 4503599627370495\n" + - " i64.and\n" + - " i64.const 4710765210229538816\n" + - " i64.or\n" + - " f64.reinterpret/i64\n" + - " tee_local \$p0\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B5\n" + - " i32.const -2147483648\n" + - " set_local \$l3\n" + - " br \$B4\n" + - " end\n" + - " get_local \$l2\n" + - " i32.eqz\n" + - " br_if \$B2\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.const 0x1.921fb544p+2 (;=6.28319;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " f64.const 0x1.0b4611a626331p-32 (;=2.43084e-10;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const 0x1.0b4611a626331p-32 (;=2.43084e-10;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const -4\n" + - " return\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.const -0x1.921fb544p+0 (;=-1.5708;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " f64.const -0x1.0b4611a626331p-34 (;=-6.0771e-11;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const -0x1.0b4611a626331p-34 (;=-6.0771e-11;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const 1\n" + - " return\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.const -0x1.921fb544p+1 (;=-3.14159;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " f64.const -0x1.0b4611a626331p-33 (;=-1.21542e-10;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const -0x1.0b4611a626331p-33 (;=-1.21542e-10;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const 2\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " i32.trunc_s/f64\n" + - " set_local \$l3\n" + - " end\n" + - " get_local \$l0\n" + - " get_local \$l3\n" + - " f64.convert_s/i32\n" + - " tee_local \$l5\n" + - " f64.store offset=16\n" + - " block \$B19\n" + - " block \$B20\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const 0x1p+24 (;=1.67772e+07;)\n" + - " f64.mul\n" + - " tee_local \$p0\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B20\n" + - " i32.const -2147483648\n" + - " set_local \$l3\n" + - " br \$B19\n" + - " end\n" + - " get_local \$p0\n" + - " i32.trunc_s/f64\n" + - " set_local \$l3\n" + - " end\n" + - " get_local \$l0\n" + - " get_local \$l3\n" + - " f64.convert_s/i32\n" + - " tee_local \$l5\n" + - " f64.store offset=24\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const 0x1p+24 (;=1.67772e+07;)\n" + - " f64.mul\n" + - " tee_local \$p0\n" + - " f64.store offset=32\n" + - " get_local \$p0\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " f64.ne\n" + - " br_if \$B1\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " i32.const 8\n" + - " i32.or\n" + - " set_local \$l3\n" + - " i32.const 2\n" + - " set_local \$l8\n" + - " loop \$L21\n" + - " get_local \$l8\n" + - " i32.const -1\n" + - " i32.add\n" + - " set_local \$l8\n" + - " get_local \$l3\n" + - " f64.load\n" + - " set_local \$p0\n" + - " get_local \$l3\n" + - " i32.const -8\n" + - " i32.add\n" + - " set_local \$l3\n" + - " get_local \$p0\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " f64.eq\n" + - " br_if \$L21\n" + - " br \$B0\n" + - " end\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.const -0x1.2d97c7f3p+2 (;=-4.71239;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " f64.const -0x1.90e91a79394cap-33 (;=-1.82313e-10;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const -0x1.90e91a79394cap-33 (;=-1.82313e-10;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const 3\n" + - " return\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.const -0x1.921fb544p+2 (;=-6.28319;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " f64.const -0x1.0b4611a626331p-32 (;=-2.43084e-10;)\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.const -0x1.0b4611a626331p-32 (;=-2.43084e-10;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const 4\n" + - " return\n" + - " end\n" + - " i32.const 2\n" + - " set_local \$l8\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " get_local \$l0\n" + - " get_local \$l4\n" + - " i32.const 20\n" + - " i32.shr_u\n" + - " i32.const -1046\n" + - " i32.add\n" + - " get_local \$l8\n" + - " i32.const 1\n" + - " i32.add\n" + - " i32.const 1\n" + - " call \$__rem_pio2_large\n" + - " set_local \$l3\n" + - " get_local \$l0\n" + - " f64.load\n" + - " set_local \$p0\n" + - " block \$B22\n" + - " get_local \$l2\n" + - " i32.eqz\n" + - " br_if \$B22\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$l0\n" + - " f64.load offset=8\n" + - " f64.neg\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " i32.const 0\n" + - " get_local \$l3\n" + - " i32.sub\n" + - " return\n" + - " end\n" + - " get_local \$p1\n" + - " get_local \$p0\n" + - " f64.store\n" + - " get_local \$p1\n" + - " get_local \$l0\n" + - " i64.load offset=8\n" + - " i64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 48\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$l3)\n" + - " (func \$__sin (type \$t5) (param \$p0 f64) (param \$p1 f64) (param \$p2 i32) (result f64)\n" + - " (local \$l0 f64) (local \$l1 f64) (local \$l2 f64)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " tee_local \$l0\n" + - " get_local \$l0\n" + - " get_local \$l0\n" + - " f64.mul\n" + - " f64.mul\n" + - " get_local \$l0\n" + - " f64.const 0x1.5d93a5acfd57cp-33 (;=1.58969e-10;)\n" + - " f64.mul\n" + - " f64.const -0x1.ae5e68a2b9cebp-26 (;=-2.50508e-08;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$l0\n" + - " get_local \$l0\n" + - " f64.const 0x1.71de357b1fe7dp-19 (;=2.75573e-06;)\n" + - " f64.mul\n" + - " f64.const -0x1.a01a019c161d5p-13 (;=-0.000198413;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.111111110f8a6p-7 (;=0.00833333;)\n" + - " f64.add\n" + - " f64.add\n" + - " set_local \$l1\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " set_local \$l2\n" + - " block \$B0\n" + - " get_local \$p2\n" + - " i32.eqz\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " get_local \$l2\n" + - " f64.const 0x1.5555555555549p-3 (;=0.166667;)\n" + - " f64.mul\n" + - " get_local \$l0\n" + - " get_local \$p1\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " get_local \$l2\n" + - " get_local \$l1\n" + - " f64.mul\n" + - " f64.sub\n" + - " f64.mul\n" + - " get_local \$p1\n" + - " f64.sub\n" + - " f64.add\n" + - " f64.sub\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " get_local \$l0\n" + - " get_local \$l1\n" + - " f64.mul\n" + - " f64.const -0x1.5555555555549p-3 (;=-0.166667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " f64.add)\n" + - " (func \$cos (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i32) (local \$l2 f64)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.const 1072243195\n" + - " i32.gt_u\n" + - " br_if \$B2\n" + - " get_local \$l1\n" + - " i32.const 1044816029\n" + - " i32.gt_u\n" + - " br_if \$B1\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+120 (;=1.32923e+36;)\n" + - " f64.add\n" + - " f64.store\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " return\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 2146435072\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " call \$__cos\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$l0\n" + - " call \$__rem_pio2\n" + - " set_local \$l1\n" + - " get_local \$l0\n" + - " f64.load offset=8\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " f64.load\n" + - " set_local \$l2\n" + - " block \$B3\n" + - " block \$B4\n" + - " block \$B5\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.const 2\n" + - " i32.eq\n" + - " br_if \$B5\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.eq\n" + - " br_if \$B4\n" + - " get_local \$l1\n" + - " br_if \$B3\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " call \$__cos\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " call \$__cos\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " i32.const 1\n" + - " call \$__sin\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " i32.const 1\n" + - " call \$__sin\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0)\n" + - " (func \$__expo2 (type \$t1) (param \$p0 f64) (result f64)\n" + - " get_local \$p0\n" + - " f64.const -0x1.62066151add8bp+10 (;=-1416.1;)\n" + - " f64.add\n" + - " call \$exp\n" + - " f64.const 0x1p+1021 (;=2.24712e+307;)\n" + - " f64.mul\n" + - " f64.const 0x1p+1021 (;=2.24712e+307;)\n" + - " f64.mul)\n" + - " (func \$cosh (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i32)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " tee_local \$l1\n" + - " f64.reinterpret/i64\n" + - " set_local \$p0\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " get_local \$l1\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " tee_local \$l2\n" + - " i32.const 1072049729\n" + - " i32.gt_u\n" + - " br_if \$B2\n" + - " get_local \$l2\n" + - " i32.const 1045430271\n" + - " i32.gt_u\n" + - " br_if \$B1\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+120 (;=1.32923e+36;)\n" + - " f64.add\n" + - " f64.store offset=8\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " i32.const 1082535489\n" + - " i32.gt_u\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " call \$exp\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$p0\n" + - " f64.div\n" + - " f64.add\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " return\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " call \$expm1\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.div\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " call \$__expo2\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0)\n" + - " (func \$exp (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i32) (local \$l3 i32) (local \$l4 f64) (local \$l5 f64) (local \$l6 f64)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 63\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " set_local \$l2\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " block \$B3\n" + - " block \$B4\n" + - " block \$B5\n" + - " block \$B6\n" + - " block \$B7\n" + - " block \$B8\n" + - " block \$B9\n" + - " get_local \$l1\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l3\n" + - " i32.const 1082532651\n" + - " i32.lt_u\n" + - " br_if \$B9\n" + - " get_local \$l1\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " i64.const 9218868437227405312\n" + - " i64.le_u\n" + - " br_if \$B8\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$l3\n" + - " i32.const 1071001155\n" + - " i32.lt_u\n" + - " br_if \$B7\n" + - " get_local \$l3\n" + - " i32.const 1072734898\n" + - " i32.ge_u\n" + - " br_if \$B5\n" + - " get_local \$l2\n" + - " i32.const 1\n" + - " i32.xor\n" + - " get_local \$l2\n" + - " i32.sub\n" + - " set_local \$l3\n" + - " br \$B2\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x1.62e42fefa39efp+9 (;=709.783;)\n" + - " f64.gt\n" + - " i32.const 1\n" + - " i32.xor\n" + - " br_if \$B6\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1023 (;=8.98847e+307;)\n" + - " f64.mul\n" + - " return\n" + - " end\n" + - " get_local \$l3\n" + - " i32.const 1043333120\n" + - " i32.le_u\n" + - " br_if \$B4\n" + - " i32.const 0\n" + - " set_local \$l3\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l4\n" + - " get_local \$p0\n" + - " set_local \$l5\n" + - " br \$B1\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const -0x1.6232bdd7abcd2p+9 (;=-708.396;)\n" + - " f64.lt\n" + - " i32.const 1\n" + - " i32.xor\n" + - " br_if \$B5\n" + - " get_local \$l0\n" + - " f64.const -0x1p-149 (;=-1.4013e-45;)\n" + - " get_local \$p0\n" + - " f64.div\n" + - " f32.demote/f64\n" + - " f32.store offset=12\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l6\n" + - " get_local \$p0\n" + - " f64.const -0x1.74910d52d3051p+9 (;=-745.133;)\n" + - " f64.lt\n" + - " br_if \$B0\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x1.71547652b82fep+0 (;=1.4427;)\n" + - " f64.mul\n" + - " get_local \$l2\n" + - " i32.const 3\n" + - " i32.shl\n" + - " i32.const 3936\n" + - " i32.add\n" + - " f64.load\n" + - " f64.add\n" + - " tee_local \$l6\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B3\n" + - " i32.const -2147483648\n" + - " set_local \$l3\n" + - " br \$B2\n" + - " end\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1023 (;=8.98847e+307;)\n" + - " f64.add\n" + - " f64.store\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " get_local \$l6\n" + - " i32.trunc_s/f64\n" + - " set_local \$l3\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$l3\n" + - " f64.convert_s/i32\n" + - " tee_local \$l6\n" + - " f64.const -0x1.62e42feep-1 (;=-0.693147;)\n" + - " f64.mul\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " get_local \$l6\n" + - " f64.const 0x1.a39ef35793c76p-33 (;=1.90821e-10;)\n" + - " f64.mul\n" + - " tee_local \$l4\n" + - " f64.sub\n" + - " set_local \$l5\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " f64.mul\n" + - " tee_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " get_local \$l6\n" + - " f64.const 0x1.6376972bea4dp-25 (;=4.13814e-08;)\n" + - " f64.mul\n" + - " f64.const -0x1.bbd41c5d26bf1p-20 (;=-1.65339e-06;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.1566aaf25de2cp-14 (;=6.61376e-05;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.6c16c16bebd93p-9 (;=-0.00277778;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.555555555553ep-3 (;=0.166667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.sub\n" + - " tee_local \$l6\n" + - " f64.mul\n" + - " f64.const 0x1p+1 (;=2;)\n" + - " get_local \$l6\n" + - " f64.sub\n" + - " f64.div\n" + - " get_local \$l4\n" + - " f64.sub\n" + - " f64.add\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " set_local \$l6\n" + - " get_local \$l3\n" + - " i32.eqz\n" + - " br_if \$B0\n" + - " get_local \$l6\n" + - " get_local \$l3\n" + - " call \$scalbn\n" + - " set_local \$l6\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$l6)\n" + - " (func \$expm1 (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i32) (local \$l3 i32) (local \$l4 f64) (local \$l5 f64) (local \$l6 f64) (local \$l7 f64)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " set_local \$l0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 63\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " set_local \$l2\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " block \$B3\n" + - " block \$B4\n" + - " block \$B5\n" + - " block \$B6\n" + - " block \$B7\n" + - " block \$B8\n" + - " block \$B9\n" + - " block \$B10\n" + - " block \$B11\n" + - " block \$B12\n" + - " get_local \$l1\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l3\n" + - " i32.const 1078159482\n" + - " i32.lt_u\n" + - " br_if \$B12\n" + - " get_local \$l1\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " i64.const 9218868437227405312\n" + - " i64.le_u\n" + - " br_if \$B11\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$l3\n" + - " i32.const 1071001155\n" + - " i32.lt_u\n" + - " br_if \$B10\n" + - " get_local \$l3\n" + - " i32.const 1072734897\n" + - " i32.gt_u\n" + - " br_if \$B9\n" + - " get_local \$l2\n" + - " i32.eqz\n" + - " br_if \$B5\n" + - " get_local \$p0\n" + - " f64.const 0x1.62e42feep-1 (;=0.693147;)\n" + - " f64.add\n" + - " set_local \$l4\n" + - " i32.const -1\n" + - " set_local \$l3\n" + - " f64.const -0x1.a39ef35793c76p-33 (;=-1.90821e-10;)\n" + - " set_local \$l5\n" + - " br \$B1\n" + - " end\n" + - " get_local \$l2\n" + - " i32.eqz\n" + - " br_if \$B7\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " return\n" + - " end\n" + - " get_local \$l3\n" + - " i32.const 1016070143\n" + - " i32.gt_u\n" + - " br_if \$B8\n" + - " get_local \$l3\n" + - " i32.const 1048575\n" + - " i32.gt_u\n" + - " br_if \$B6\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f32.demote/f64\n" + - " f32.store offset=12\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x1.71547652b82fep+0 (;=1.4427;)\n" + - " f64.mul\n" + - " set_local \$l5\n" + - " f64.const -0x1p-1 (;=-0.5;)\n" + - " set_local \$l4\n" + - " get_local \$l2\n" + - " br_if \$B2\n" + - " br \$B3\n" + - " end\n" + - " i32.const 0\n" + - " set_local \$l3\n" + - " br \$B0\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x1.62e42fefa39efp+9 (;=709.783;)\n" + - " f64.gt\n" + - " i32.eqz\n" + - " br_if \$B4\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1023 (;=8.98847e+307;)\n" + - " f64.mul\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const -0x1.62e42feep-1 (;=-0.693147;)\n" + - " f64.add\n" + - " set_local \$l4\n" + - " i32.const 1\n" + - " set_local \$l3\n" + - " f64.const 0x1.a39ef35793c76p-33 (;=1.90821e-10;)\n" + - " set_local \$l5\n" + - " br \$B1\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x1.71547652b82fep+0 (;=1.4427;)\n" + - " f64.mul\n" + - " set_local \$l5\n" + - " end\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " set_local \$l4\n" + - " end\n" + - " block \$B13\n" + - " block \$B14\n" + - " get_local \$l5\n" + - " get_local \$l4\n" + - " f64.add\n" + - " tee_local \$l4\n" + - " f64.abs\n" + - " f64.const 0x1p+31 (;=2.14748e+09;)\n" + - " f64.lt\n" + - " br_if \$B14\n" + - " i32.const -2147483648\n" + - " set_local \$l3\n" + - " br \$B13\n" + - " end\n" + - " get_local \$l4\n" + - " i32.trunc_s/f64\n" + - " set_local \$l3\n" + - " end\n" + - " get_local \$l3\n" + - " f64.convert_s/i32\n" + - " tee_local \$l4\n" + - " f64.const 0x1.a39ef35793c76p-33 (;=1.90821e-10;)\n" + - " f64.mul\n" + - " set_local \$l5\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " f64.const -0x1.62e42feep-1 (;=-0.693147;)\n" + - " f64.mul\n" + - " f64.add\n" + - " set_local \$l4\n" + - " end\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " tee_local \$p0\n" + - " f64.sub\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " set_local \$l5\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " tee_local \$l6\n" + - " f64.mul\n" + - " tee_local \$l4\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " f64.const -0x1.afdb76e09c32dp-23 (;=-2.01099e-07;)\n" + - " f64.mul\n" + - " f64.const 0x1.0cfca86e65239p-18 (;=4.00822e-06;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.4ce199eaadbb7p-14 (;=-7.93651e-05;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.a01a019fe5585p-10 (;=0.0015873;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const -0x1.11111111110f4p-5 (;=-0.0333333;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " tee_local \$l7\n" + - " f64.const 0x1.8p+1 (;=3;)\n" + - " get_local \$l6\n" + - " get_local \$l7\n" + - " f64.mul\n" + - " f64.sub\n" + - " tee_local \$l6\n" + - " f64.sub\n" + - " f64.const 0x1.8p+2 (;=6;)\n" + - " get_local \$p0\n" + - " get_local \$l6\n" + - " f64.mul\n" + - " f64.sub\n" + - " f64.div\n" + - " f64.mul\n" + - " set_local \$l6\n" + - " block \$B15\n" + - " block \$B16\n" + - " block \$B17\n" + - " block \$B18\n" + - " block \$B19\n" + - " get_local \$l3\n" + - " i32.eqz\n" + - " br_if \$B19\n" + - " get_local \$p0\n" + - " get_local \$l6\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.mul\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " get_local \$l4\n" + - " f64.sub\n" + - " set_local \$l4\n" + - " get_local \$l3\n" + - " i32.const 1\n" + - " i32.eq\n" + - " br_if \$B18\n" + - " get_local \$l3\n" + - " i32.const -1\n" + - " i32.ne\n" + - " br_if \$B17\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " f64.sub\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " f64.const -0x1p-1 (;=-0.5;)\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$l6\n" + - " f64.mul\n" + - " get_local \$l4\n" + - " f64.sub\n" + - " f64.sub\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const -0x1p-2 (;=-0.25;)\n" + - " f64.lt\n" + - " i32.const 1\n" + - " i32.xor\n" + - " br_if \$B16\n" + - " get_local \$l4\n" + - " get_local \$p0\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.add\n" + - " f64.sub\n" + - " f64.const -0x1p+1 (;=-2;)\n" + - " f64.mul\n" + - " return\n" + - " end\n" + - " get_local \$l3\n" + - " i32.const 1023\n" + - " i32.add\n" + - " i64.extend_u/i32\n" + - " i64.const 52\n" + - " i64.shl\n" + - " f64.reinterpret/i64\n" + - " set_local \$l5\n" + - " get_local \$l3\n" + - " i32.const 57\n" + - " i32.lt_u\n" + - " br_if \$B15\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " f64.sub\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.const 0x1p+1023 (;=8.98847e+307;)\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " get_local \$l5\n" + - " f64.mul\n" + - " get_local \$l3\n" + - " i32.const 1024\n" + - " i32.eq\n" + - " select\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " f64.sub\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " i32.const 1023\n" + - " get_local \$l3\n" + - " i32.sub\n" + - " i64.extend_u/i32\n" + - " i64.const 52\n" + - " i64.shl\n" + - " f64.reinterpret/i64\n" + - " tee_local \$l6\n" + - " f64.sub\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " get_local \$l6\n" + - " f64.add\n" + - " f64.sub\n" + - " get_local \$l3\n" + - " i32.const 20\n" + - " i32.lt_s\n" + - " tee_local \$l3\n" + - " select\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " f64.sub\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " get_local \$l3\n" + - " select\n" + - " f64.add\n" + - " get_local \$l5\n" + - " f64.mul)\n" + - " (func \$log (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i64) (local \$l1 i32) (local \$l2 i32) (local \$l3 i32) (local \$l4 f64) (local \$l5 f64)\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " block \$B3\n" + - " block \$B4\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l0\n" + - " i64.const 0\n" + - " i64.lt_s\n" + - " br_if \$B4\n" + - " get_local \$l0\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " tee_local \$l1\n" + - " i32.const 1048575\n" + - " i32.le_u\n" + - " br_if \$B4\n" + - " get_local \$l1\n" + - " i32.const 2146435071\n" + - " i32.gt_u\n" + - " br_if \$B1\n" + - " i32.const 1072693248\n" + - " set_local \$l2\n" + - " i32.const -1023\n" + - " set_local \$l3\n" + - " get_local \$l1\n" + - " i32.const 1072693248\n" + - " i32.ne\n" + - " br_if \$B3\n" + - " get_local \$l0\n" + - " i32.wrap/i64\n" + - " br_if \$B2\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " return\n" + - " end\n" + - " block \$B5\n" + - " get_local \$l0\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " i64.const 0\n" + - " i64.eq\n" + - " br_if \$B5\n" + - " get_local \$l0\n" + - " i64.const -1\n" + - " i64.le_s\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+54 (;=1.80144e+16;)\n" + - " f64.mul\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l0\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " set_local \$l2\n" + - " i32.const -1077\n" + - " set_local \$l3\n" + - " br \$B2\n" + - " end\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " f64.div\n" + - " return\n" + - " end\n" + - " get_local \$l1\n" + - " set_local \$l2\n" + - " end\n" + - " get_local \$l3\n" + - " get_local \$l2\n" + - " i32.const 614242\n" + - " i32.add\n" + - " tee_local \$l1\n" + - " i32.const 20\n" + - " i32.shr_u\n" + - " i32.add\n" + - " f64.convert_s/i32\n" + - " tee_local \$l4\n" + - " f64.const 0x1.62e42feep-1 (;=0.693147;)\n" + - " f64.mul\n" + - " get_local \$l1\n" + - " i32.const 1048575\n" + - " i32.and\n" + - " i32.const 1072079006\n" + - " i32.add\n" + - " i64.extend_u/i32\n" + - " i64.const 32\n" + - " i64.shl\n" + - " get_local \$l0\n" + - " i64.const 4294967295\n" + - " i64.and\n" + - " i64.or\n" + - " f64.reinterpret/i64\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.add\n" + - " tee_local \$p0\n" + - " get_local \$l4\n" + - " f64.const 0x1.a39ef35793c76p-33 (;=1.90821e-10;)\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1 (;=2;)\n" + - " f64.add\n" + - " f64.div\n" + - " tee_local \$l4\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " f64.mul\n" + - " tee_local \$l5\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " f64.mul\n" + - " tee_local \$l4\n" + - " get_local \$l4\n" + - " f64.mul\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.39a09d078c69fp-3 (;=0.153138;)\n" + - " f64.mul\n" + - " f64.const 0x1.c71c51d8e78afp-3 (;=0.222222;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.999999997fa04p-2 (;=0.4;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$l4\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1.2f112df3e5244p-3 (;=0.147982;)\n" + - " f64.mul\n" + - " f64.const 0x1.7466496cb03dep-3 (;=0.181836;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.2492494229359p-2 (;=0.285714;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.5555555555593p-1 (;=0.666667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.add\n" + - " f64.add\n" + - " set_local \$p0\n" + - " end\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " f64.div)\n" + - " (func \$log1p (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i32) (local \$l3 f64) (local \$l4 f64) (local \$l5 f64)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " set_local \$l0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " set_local \$l2\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " block \$B3\n" + - " block \$B4\n" + - " get_local \$l1\n" + - " i64.const 0\n" + - " i64.lt_s\n" + - " br_if \$B4\n" + - " get_local \$l2\n" + - " i32.const 1071284857\n" + - " i32.le_u\n" + - " br_if \$B4\n" + - " get_local \$l2\n" + - " i32.const 2146435071\n" + - " i32.le_u\n" + - " br_if \$B3\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " block \$B5\n" + - " get_local \$l2\n" + - " i32.const -1074790400\n" + - " i32.lt_u\n" + - " br_if \$B5\n" + - " get_local \$p0\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.ne\n" + - " br_if \$B1\n" + - " f64.const -inf (;=-inf;)\n" + - " return\n" + - " end\n" + - " block \$B6\n" + - " get_local \$l2\n" + - " i32.const 1\n" + - " i32.shl\n" + - " i32.const 2034237439\n" + - " i32.gt_u\n" + - " br_if \$B6\n" + - " get_local \$l2\n" + - " i32.const 2146435072\n" + - " i32.and\n" + - " i32.eqz\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l3\n" + - " get_local \$l2\n" + - " i32.const -1076707643\n" + - " i32.ge_u\n" + - " br_if \$B3\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l4\n" + - " br \$B2\n" + - " end\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$l3\n" + - " block \$B7\n" + - " get_local \$p0\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " tee_local \$l4\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 614242\n" + - " i32.add\n" + - " tee_local \$l0\n" + - " i32.const 20\n" + - " i32.shr_u\n" + - " i32.const -1023\n" + - " i32.add\n" + - " tee_local \$l2\n" + - " i32.const 53\n" + - " i32.gt_s\n" + - " br_if \$B7\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " f64.sub\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " get_local \$p0\n" + - " get_local \$l4\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.add\n" + - " f64.sub\n" + - " get_local \$l2\n" + - " i32.const 1\n" + - " i32.gt_s\n" + - " select\n" + - " get_local \$l4\n" + - " f64.div\n" + - " set_local \$l3\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 1048575\n" + - " i32.and\n" + - " i32.const 1072079006\n" + - " i32.add\n" + - " i64.extend_u/i32\n" + - " i64.const 32\n" + - " i64.shl\n" + - " get_local \$l1\n" + - " i64.const 4294967295\n" + - " i64.and\n" + - " i64.or\n" + - " f64.reinterpret/i64\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " f64.add\n" + - " set_local \$p0\n" + - " get_local \$l2\n" + - " f64.convert_s/i32\n" + - " set_local \$l4\n" + - " end\n" + - " get_local \$l4\n" + - " f64.const 0x1.62e42feep-1 (;=0.693147;)\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " get_local \$l3\n" + - " get_local \$l4\n" + - " f64.const 0x1.a39ef35793c76p-33 (;=1.90821e-10;)\n" + - " f64.mul\n" + - " f64.add\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1 (;=2;)\n" + - " f64.add\n" + - " f64.div\n" + - " tee_local \$l4\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " f64.mul\n" + - " f64.mul\n" + - " tee_local \$l5\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " f64.mul\n" + - " tee_local \$l3\n" + - " get_local \$l3\n" + - " f64.mul\n" + - " tee_local \$l4\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " f64.const 0x1.39a09d078c69fp-3 (;=0.153138;)\n" + - " f64.mul\n" + - " f64.const 0x1.c71c51d8e78afp-3 (;=0.222222;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.999999997fa04p-2 (;=0.4;)\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$l3\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " get_local \$l4\n" + - " f64.const 0x1.2f112df3e5244p-3 (;=0.147982;)\n" + - " f64.mul\n" + - " f64.const 0x1.7466496cb03dep-3 (;=0.181836;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.2492494229359p-2 (;=0.285714;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.5555555555593p-1 (;=0.666667;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " get_local \$l5\n" + - " f64.sub\n" + - " f64.add\n" + - " f64.add\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " f64.div\n" + - " return\n" + - " end\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f32.demote/f64\n" + - " f32.store offset=12\n" + - " get_local \$p0)\n" + - " (func \$scalbn (type \$t6) (param \$p0 f64) (param \$p1 i32) (result f64)\n" + - " (local \$l0 i32)\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " block \$B3\n" + - " get_local \$p1\n" + - " i32.const 1024\n" + - " i32.lt_s\n" + - " br_if \$B3\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1023 (;=8.98847e+307;)\n" + - " f64.mul\n" + - " set_local \$p0\n" + - " get_local \$p1\n" + - " i32.const -1023\n" + - " i32.add\n" + - " tee_local \$l0\n" + - " i32.const 1024\n" + - " i32.lt_s\n" + - " br_if \$B2\n" + - " get_local \$p1\n" + - " i32.const -2046\n" + - " i32.add\n" + - " tee_local \$p1\n" + - " i32.const 1023\n" + - " get_local \$p1\n" + - " i32.const 1023\n" + - " i32.lt_s\n" + - " select\n" + - " set_local \$p1\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1023 (;=8.98847e+307;)\n" + - " f64.mul\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " get_local \$p1\n" + - " i32.const -1023\n" + - " i32.gt_s\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " f64.const 0x1p-969 (;=2.00417e-292;)\n" + - " f64.mul\n" + - " set_local \$p0\n" + - " get_local \$p1\n" + - " i32.const 969\n" + - " i32.add\n" + - " tee_local \$l0\n" + - " i32.const -1023\n" + - " i32.gt_s\n" + - " br_if \$B1\n" + - " get_local \$p1\n" + - " i32.const 1938\n" + - " i32.add\n" + - " tee_local \$p1\n" + - " i32.const -1022\n" + - " get_local \$p1\n" + - " i32.const -1022\n" + - " i32.gt_s\n" + - " select\n" + - " set_local \$p1\n" + - " get_local \$p0\n" + - " f64.const 0x1p-969 (;=2.00417e-292;)\n" + - " f64.mul\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " get_local \$l0\n" + - " set_local \$p1\n" + - " br \$B0\n" + - " end\n" + - " get_local \$l0\n" + - " set_local \$p1\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p1\n" + - " i32.const 1023\n" + - " i32.add\n" + - " i64.extend_u/i32\n" + - " i64.const 52\n" + - " i64.shl\n" + - " f64.reinterpret/i64\n" + - " f64.mul)\n" + - " (func \$sin (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i32) (local \$l2 f64)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.const 1072243195\n" + - " i32.gt_u\n" + - " br_if \$B2\n" + - " get_local \$l1\n" + - " i32.const 1045430271\n" + - " i32.gt_u\n" + - " br_if \$B1\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f64.const 0x1p-120 (;=7.52316e-37;)\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " f64.const 0x1p+120 (;=1.32923e+36;)\n" + - " f64.add\n" + - " get_local \$l1\n" + - " i32.const 1048576\n" + - " i32.lt_u\n" + - " select\n" + - " f64.store\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 2146435072\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " i32.const 0\n" + - " call \$__sin\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$l0\n" + - " call \$__rem_pio2\n" + - " set_local \$l1\n" + - " get_local \$l0\n" + - " f64.load offset=8\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " f64.load\n" + - " set_local \$l2\n" + - " block \$B3\n" + - " block \$B4\n" + - " block \$B5\n" + - " get_local \$l1\n" + - " i32.const 3\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.const 2\n" + - " i32.eq\n" + - " br_if \$B5\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.eq\n" + - " br_if \$B4\n" + - " get_local \$l1\n" + - " br_if \$B3\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " i32.const 1\n" + - " call \$__sin\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " i32.const 1\n" + - " call \$__sin\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " call \$__cos\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$l2\n" + - " get_local \$p0\n" + - " call \$__cos\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.neg)\n" + - " (func \$sinh (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i64) (local \$l1 f64) (local \$l2 f64) (local \$l3 i32)\n" + - " f64.const -0x1p-1 (;=-0.5;)\n" + - " f64.const 0x1p-1 (;=0.5;)\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l0\n" + - " i64.const 0\n" + - " i64.lt_s\n" + - " select\n" + - " set_local \$l1\n" + - " get_local \$l0\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " tee_local \$l0\n" + - " f64.reinterpret/i64\n" + - " set_local \$l2\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " get_local \$l0\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " tee_local \$l3\n" + - " i32.const 1082535489\n" + - " i32.gt_u\n" + - " br_if \$B2\n" + - " get_local \$l2\n" + - " call \$expm1\n" + - " set_local \$l2\n" + - " get_local \$l3\n" + - " i32.const 1072693247\n" + - " i32.gt_u\n" + - " br_if \$B0\n" + - " get_local \$l3\n" + - " i32.const 1045430272\n" + - " i32.lt_u\n" + - " br_if \$B1\n" + - " get_local \$l1\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " f64.add\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " f64.mul\n" + - " get_local \$l2\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " f64.sub\n" + - " f64.mul\n" + - " return\n" + - " end\n" + - " get_local \$l1\n" + - " get_local \$l1\n" + - " f64.add\n" + - " get_local \$l2\n" + - " call \$__expo2\n" + - " f64.mul\n" + - " set_local \$p0\n" + - " end\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$l1\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " get_local \$l2\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " f64.div\n" + - " f64.add\n" + - " f64.mul)\n" + - " (func \$__tan (type \$t5) (param \$p0 f64) (param \$p1 f64) (param \$p2 i32) (result f64)\n" + - " (local \$l0 i64) (local \$l1 i32) (local \$l2 i32) (local \$l3 f64) (local \$l4 f64) (local \$l5 f64)\n" + - " block \$B0\n" + - " block \$B1\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l0\n" + - " i64.const 9223372002495037440\n" + - " i64.and\n" + - " i64.const 4604249089280835585\n" + - " i64.lt_u\n" + - " tee_local \$l1\n" + - " br_if \$B1\n" + - " f64.const 0x1.921fb54442d18p-1 (;=0.785398;)\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " get_local \$p0\n" + - " get_local \$l0\n" + - " i64.const 63\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " tee_local \$l2\n" + - " select\n" + - " f64.sub\n" + - " f64.const 0x1.1a62633145c07p-55 (;=3.06162e-17;)\n" + - " get_local \$p1\n" + - " f64.neg\n" + - " get_local \$p1\n" + - " get_local \$l2\n" + - " select\n" + - " f64.sub\n" + - " f64.add\n" + - " set_local \$p0\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " set_local \$p1\n" + - " br \$B0\n" + - " end\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.mul\n" + - " tee_local \$l3\n" + - " f64.mul\n" + - " tee_local \$l4\n" + - " f64.const 0x1.5555555555563p-2 (;=0.333333;)\n" + - " f64.mul\n" + - " get_local \$p1\n" + - " get_local \$l3\n" + - " get_local \$p1\n" + - " get_local \$l4\n" + - " get_local \$l3\n" + - " get_local \$l3\n" + - " f64.mul\n" + - " tee_local \$l5\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " f64.const -0x1.375cbdb605373p-16 (;=-1.85586e-05;)\n" + - " f64.mul\n" + - " f64.const 0x1.47e88a03792a6p-14 (;=7.81794e-05;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.344d8f2f26501p-11 (;=0.000588041;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.d6d22c9560328p-9 (;=0.00359208;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.664f48406d637p-6 (;=0.0218695;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.111111110fe7ap-3 (;=0.133333;)\n" + - " f64.add\n" + - " get_local \$l3\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " f64.const 0x1.b2a7074bf7ad4p-16 (;=2.59073e-05;)\n" + - " f64.mul\n" + - " f64.const 0x1.2b80f32f0a7e9p-14 (;=7.14072e-05;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.026f71a8d1068p-12 (;=0.000246463;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.7dbc8fee08315p-10 (;=0.00145621;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.226e3e96e8493p-7 (;=0.00886324;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.const 0x1.ba1ba1bb341fep-5 (;=0.0539683;)\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " f64.mul\n" + - " f64.add\n" + - " f64.add\n" + - " tee_local \$l3\n" + - " f64.add\n" + - " set_local \$l5\n" + - " block \$B2\n" + - " get_local \$l1\n" + - " br_if \$B2\n" + - " i32.const 1\n" + - " get_local \$p2\n" + - " i32.const 1\n" + - " i32.shl\n" + - " i32.sub\n" + - " f64.convert_s/i32\n" + - " tee_local \$p1\n" + - " get_local \$p0\n" + - " get_local \$l3\n" + - " get_local \$l5\n" + - " get_local \$l5\n" + - " f64.mul\n" + - " get_local \$l5\n" + - " get_local \$p1\n" + - " f64.add\n" + - " f64.div\n" + - " f64.sub\n" + - " f64.add\n" + - " tee_local \$l5\n" + - " get_local \$l5\n" + - " f64.add\n" + - " f64.sub\n" + - " tee_local \$l5\n" + - " f64.neg\n" + - " get_local \$l5\n" + - " get_local \$l2\n" + - " select\n" + - " return\n" + - " end\n" + - " block \$B3\n" + - " get_local \$p2\n" + - " i32.eqz\n" + - " br_if \$B3\n" + - " f64.const -0x1p+0 (;=-1;)\n" + - " get_local \$l5\n" + - " f64.div\n" + - " tee_local \$p1\n" + - " get_local \$l5\n" + - " i64.reinterpret/f64\n" + - " i64.const -4294967296\n" + - " i64.and\n" + - " f64.reinterpret/i64\n" + - " tee_local \$l4\n" + - " get_local \$p1\n" + - " i64.reinterpret/f64\n" + - " i64.const -4294967296\n" + - " i64.and\n" + - " f64.reinterpret/i64\n" + - " tee_local \$l5\n" + - " f64.mul\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " get_local \$l3\n" + - " get_local \$l4\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " f64.sub\n" + - " get_local \$l5\n" + - " f64.mul\n" + - " f64.add\n" + - " f64.mul\n" + - " get_local \$l5\n" + - " f64.add\n" + - " set_local \$l5\n" + - " end\n" + - " get_local \$l5)\n" + - " (func \$tan (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i32)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " i32.const 2147483647\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.const 1072243195\n" + - " i32.gt_u\n" + - " br_if \$B2\n" + - " get_local \$l1\n" + - " i32.const 1044381695\n" + - " i32.gt_u\n" + - " br_if \$B1\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f64.const 0x1p-120 (;=7.52316e-37;)\n" + - " f64.mul\n" + - " get_local \$p0\n" + - " f64.const 0x1p+120 (;=1.32923e+36;)\n" + - " f64.add\n" + - " get_local \$l1\n" + - " i32.const 1048576\n" + - " i32.lt_u\n" + - " select\n" + - " f64.store\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$l1\n" + - " i32.const 2146435072\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.sub\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " f64.const 0x0p+0 (;=0;)\n" + - " i32.const 0\n" + - " call \$__tan\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " return\n" + - " end\n" + - " get_local \$p0\n" + - " get_local \$l0\n" + - " call \$__rem_pio2\n" + - " set_local \$l1\n" + - " get_local \$l0\n" + - " f64.load\n" + - " get_local \$l0\n" + - " f64.load offset=8\n" + - " get_local \$l1\n" + - " i32.const 1\n" + - " i32.and\n" + - " call \$__tan\n" + - " set_local \$p0\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0)\n" + - " (func \$tanh (type \$t1) (param \$p0 f64) (result f64)\n" + - " (local \$l0 i32) (local \$l1 i64) (local \$l2 i64) (local \$l3 i32)\n" + - " get_global \$g0\n" + - " i32.const 16\n" + - " i32.sub\n" + - " tee_local \$l0\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " i64.reinterpret/f64\n" + - " tee_local \$l1\n" + - " i64.const 9223372036854775807\n" + - " i64.and\n" + - " tee_local \$l2\n" + - " f64.reinterpret/i64\n" + - " set_local \$p0\n" + - " block \$B0\n" + - " block \$B1\n" + - " block \$B2\n" + - " block \$B3\n" + - " get_local \$l2\n" + - " i64.const 32\n" + - " i64.shr_u\n" + - " i32.wrap/i64\n" + - " tee_local \$l3\n" + - " i32.const 1071748075\n" + - " i32.lt_u\n" + - " br_if \$B3\n" + - " get_local \$l3\n" + - " i32.const 1077149697\n" + - " i32.lt_u\n" + - " br_if \$B2\n" + - " f64.const -0x0p+0 (;=-0;)\n" + - " get_local \$p0\n" + - " f64.div\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.add\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " get_local \$l3\n" + - " i32.const 1070618799\n" + - " i32.lt_u\n" + - " br_if \$B1\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " call \$expm1\n" + - " tee_local \$p0\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1 (;=2;)\n" + - " f64.add\n" + - " f64.div\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " f64.const 0x1p+0 (;=1;)\n" + - " f64.const 0x1p+1 (;=2;)\n" + - " get_local \$p0\n" + - " get_local \$p0\n" + - " f64.add\n" + - " call \$expm1\n" + - " f64.const 0x1p+1 (;=2;)\n" + - " f64.add\n" + - " f64.div\n" + - " f64.sub\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " block \$B4\n" + - " get_local \$l3\n" + - " i32.const 1048576\n" + - " i32.lt_u\n" + - " br_if \$B4\n" + - " get_local \$p0\n" + - " f64.const -0x1p+1 (;=-2;)\n" + - " f64.mul\n" + - " call \$expm1\n" + - " tee_local \$p0\n" + - " f64.neg\n" + - " get_local \$p0\n" + - " f64.const 0x1p+1 (;=2;)\n" + - " f64.add\n" + - " f64.div\n" + - " set_local \$p0\n" + - " br \$B0\n" + - " end\n" + - " get_local \$l0\n" + - " get_local \$p0\n" + - " f32.demote/f64\n" + - " f32.store offset=12\n" + - " end\n" + - " get_local \$l0\n" + - " i32.const 16\n" + - " i32.add\n" + - " set_global \$g0\n" + - " get_local \$p0\n" + - " f64.neg\n" + - " get_local \$p0\n" + - " get_local \$l1\n" + - " i64.const 0\n" + - " i64.lt_s\n" + - " select)\n" + - " (func \$memset (type \$t7) (param \$p0 i32) (param \$p1 i32) (param \$p2 i32) (result i32)\n" + - " (local \$l0 i32) (local \$l1 i32) (local \$l2 i32) (local \$l3 i64)\n" + - " block \$B0\n" + - " get_local \$p2\n" + - " i32.eqz\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " get_local \$p1\n" + - " i32.store8\n" + - " get_local \$p0\n" + - " get_local \$p2\n" + - " i32.add\n" + - " tee_local \$l0\n" + - " i32.const -1\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store8\n" + - " get_local \$p2\n" + - " i32.const 3\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " get_local \$p1\n" + - " i32.store8 offset=2\n" + - " get_local \$p0\n" + - " get_local \$p1\n" + - " i32.store8 offset=1\n" + - " get_local \$l0\n" + - " i32.const -3\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store8\n" + - " get_local \$l0\n" + - " i32.const -2\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store8\n" + - " get_local \$p2\n" + - " i32.const 7\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " get_local \$p1\n" + - " i32.store8 offset=3\n" + - " get_local \$l0\n" + - " i32.const -4\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store8\n" + - " get_local \$p2\n" + - " i32.const 9\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$p0\n" + - " i32.const 0\n" + - " get_local \$p0\n" + - " i32.sub\n" + - " i32.const 3\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.add\n" + - " tee_local \$l0\n" + - " get_local \$p1\n" + - " i32.const 255\n" + - " i32.and\n" + - " i32.const 16843009\n" + - " i32.mul\n" + - " tee_local \$p1\n" + - " i32.store\n" + - " get_local \$l0\n" + - " get_local \$p2\n" + - " get_local \$l1\n" + - " i32.sub\n" + - " i32.const -4\n" + - " i32.and\n" + - " tee_local \$l1\n" + - " i32.add\n" + - " tee_local \$p2\n" + - " i32.const -4\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store\n" + - " get_local \$l1\n" + - " i32.const 9\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$l0\n" + - " get_local \$p1\n" + - " i32.store offset=8\n" + - " get_local \$l0\n" + - " get_local \$p1\n" + - " i32.store offset=4\n" + - " get_local \$p2\n" + - " i32.const -8\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store\n" + - " get_local \$p2\n" + - " i32.const -12\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store\n" + - " get_local \$l1\n" + - " i32.const 25\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$l0\n" + - " get_local \$p1\n" + - " i32.store offset=16\n" + - " get_local \$l0\n" + - " get_local \$p1\n" + - " i32.store offset=12\n" + - " get_local \$l0\n" + - " get_local \$p1\n" + - " i32.store offset=20\n" + - " get_local \$l0\n" + - " get_local \$p1\n" + - " i32.store offset=24\n" + - " get_local \$p2\n" + - " i32.const -24\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store\n" + - " get_local \$p2\n" + - " i32.const -28\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store\n" + - " get_local \$p2\n" + - " i32.const -20\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store\n" + - " get_local \$p2\n" + - " i32.const -16\n" + - " i32.add\n" + - " get_local \$p1\n" + - " i32.store\n" + - " get_local \$l1\n" + - " get_local \$l0\n" + - " i32.const 4\n" + - " i32.and\n" + - " i32.const 24\n" + - " i32.or\n" + - " tee_local \$l2\n" + - " i32.sub\n" + - " tee_local \$p2\n" + - " i32.const 32\n" + - " i32.lt_u\n" + - " br_if \$B0\n" + - " get_local \$p1\n" + - " i64.extend_u/i32\n" + - " tee_local \$l3\n" + - " i64.const 32\n" + - " i64.shl\n" + - " get_local \$l3\n" + - " i64.or\n" + - " set_local \$l3\n" + - " get_local \$l0\n" + - " get_local \$l2\n" + - " i32.add\n" + - " set_local \$p1\n" + - " loop \$L1\n" + - " get_local \$p1\n" + - " get_local \$l3\n" + - " i64.store\n" + - " get_local \$p1\n" + - " i32.const 8\n" + - " i32.add\n" + - " get_local \$l3\n" + - " i64.store\n" + - " get_local \$p1\n" + - " i32.const 16\n" + - " i32.add\n" + - " get_local \$l3\n" + - " i64.store\n" + - " get_local \$p1\n" + - " i32.const 24\n" + - " i32.add\n" + - " get_local \$l3\n" + - " i64.store\n" + - " get_local \$p1\n" + - " i32.const 32\n" + - " i32.add\n" + - " set_local \$p1\n" + - " get_local \$p2\n" + - " i32.const -32\n" + - " i32.add\n" + - " tee_local \$p2\n" + - " i32.const 31\n" + - " i32.gt_u\n" + - " br_if \$L1\n" + - " end\n" + - " end\n" + - " get_local \$p0)\n" + - " (table \$T0 1 1 anyfunc)\n" + - " (memory \$memory (export \"memory\") 2)\n" + - " (global \$g0 (mut i32) (i32.const 69488))\n" + - " (global \$__heap_base (export \"__heap_base\") i32 (i32.const 69488))\n" + - " (global \$__data_end (export \"__data_end\") i32 (i32.const 3952))\n" + - " (data (i32.const 1024) \"O\\bba\\05g\\ac\\dd?\\18-DT\\fb!\\e9?\\9b\\f6\\81\\d2\\0bs\\ef?\\18-DT\\fb!\\f9?\\e2e/\\22\\7f+z<\\07\\5c\\143&\\a6\\81<\\bd\\cb\\f0z\\88\\07p<\\07\\5c\\143&\\a6\\91<\\03\\00\\00\\00\\04\\00\\00\\00\\04\\00\\00\\00\\06\\00\\00\\00\\83\\f9\\a2\\00DNn\\00\\fc)\\15\\00\\d1W'\\00\\dd4\\f5\\00b\\db\\c0\\00<\\99\\95\\00A\\90C\\00cQ\\fe\\00\\bb\\de\\ab\\00\\b7a\\c5\\00:n\\$\\00\\d2MB\\00I\\06\\e0\\00\\09\\ea.\\00\\1c\\92\\d1\\00\\eb\\1d\\fe\\00)\\b1\\1c\\00\\e8>\\a7\\00\\f55\\82\\00D\\bb.\\00\\9c\\e9\\84\\00\\b4&p\\00A~_\\00\\d6\\919\\00S\\839\\00\\9c\\f49\\00\\8b_\\84\\00(\\f9\\bd\\00\\f8\\1f;\\00\\de\\ff\\97\\00\\0f\\98\\05\\00\\11/\\ef\\00\\0aZ\\8b\\00m\\1fm\\00\\cf~6\\00\\09\\cb'\\00FO\\b7\\00\\9ef?\\00-\\ea_\\00\\ba'u\\00\\e5\\eb\\c7\\00={\\f1\\00\\f79\\07\\00\\92R\\8a\\00\\fbk\\ea\\00\\1f\\b1_\\00\\08]\\8d\\000\\03V\\00{\\fcF\\00\\f0\\abk\\00 \\bc\\cf\\006\\f4\\9a\\00\\e3\\a9\\1d\\00^a\\91\\00\\08\\1b\\e6\\00\\85\\99e\\00\\a0\\14_\\00\\8d@h\\00\\80\\d8\\ff\\00'sM\\00\\06\\061\\00\\caV\\15\\00\\c9\\a8s\\00{\\e2`\\00k\\8c\\c0\\00\\19\\c4G\\00\\cdg\\c3\\00\\09\\e8\\dc\\00Y\\83*\\00\\8bv\\c4\\00\\a6\\1c\\96\\00D\\af\\dd\\00\\19W\\d1\\00\\a5>\\05\\00\\05\\07\\ff\\003~?\\00\\c22\\e8\\00\\98O\\de\\00\\bb}2\\00&=\\c3\\00\\1ek\\ef\\00\\9f\\f8^\\005\\1f:\\00\\7f\\f2\\ca\\00\\f1\\87\\1d\\00|\\90!\\00j\\$|\\00\\d5n\\fa\\000-w\\00\\15;C\\00\\b5\\14\\c6\\00\\c3\\19\\9d\\00\\ad\\c4\\c2\\00,MA\\00\\0c\\00]\\00\\86}F\\00\\e3q-\\00\\9b\\c6\\9a\\003b\\00\\00\\b4\\d2|\\00\\b4\\a7\\97\\007U\\d5\\00\\d7>\\f6\\00\\a3\\10\\18\\00Mv\\fc\\00d\\9d*\\00p\\d7\\ab\\00c|\\f8\\00z\\b0W\\00\\17\\15\\e7\\00\\c0IV\\00;\\d6\\d9\\00\\a7\\848\\00\\$#\\cb\\00\\d6\\8aw\\00ZT#\\00\\00\\1f\\b9\\00\\f1\\0a\\1b\\00\\19\\ce\\df\\00\\9f1\\ff\\00f\\1ej\\00\\99Wa\\00\\ac\\fbG\\00~\\7f\\d8\\00\\22e\\b7\\002\\e8\\89\\00\\e6\\bf`\\00\\ef\\c4\\cd\\00l6\\09\\00]?\\d4\\00\\16\\de\\d7\\00X;\\de\\00\\de\\9b\\92\\00\\d2\\22(\\00(\\86\\e8\\00\\e2XM\\00\\c6\\ca2\\00\\08\\e3\\16\\00\\e0}\\cb\\00\\17\\c0P\\00\\f3\\1d\\a7\\00\\18\\e0[\\00.\\134\\00\\83\\12b\\00\\83H\\01\\00\\f5\\8e[\\00\\ad\\b0\\7f\\00\\1e\\e9\\f2\\00HJC\\00\\10g\\d3\\00\\aa\\dd\\d8\\00\\ae_B\\00ja\\ce\\00\\0a(\\a4\\00\\d3\\99\\b4\\00\\06\\a6\\f2\\00\\5cw\\7f\\00\\a3\\c2\\83\\00a<\\88\\00\\8asx\\00\\af\\8cZ\\00o\\d7\\bd\\00-\\a6c\\00\\f4\\bf\\cb\\00\\8d\\81\\ef\\00&\\c1g\\00U\\caE\\00\\ca\\d96\\00(\\a8\\d2\\00\\c2a\\8d\\00\\12\\c9w\\00\\04&\\14\\00\\12F\\9b\\00\\c4Y\\c4\\00\\c8\\c5D\\00M\\b2\\91\\00\\00\\17\\f3\\00\\d4C\\ad\\00)I\\e5\\00\\fd\\d5\\10\\00\\00\\be\\fc\\00\\1e\\94\\cc\\00p\\ce\\ee\\00\\13>\\f5\\00\\ec\\f1\\80\\00\\b3\\e7\\c3\\00\\c7\\f8(\\00\\93\\05\\94\\00\\c1q>\\00.\\09\\b3\\00\\0bE\\f3\\00\\88\\12\\9c\\00\\ab {\\00.\\b5\\9f\\00G\\92\\c2\\00{2/\\00\\0cUm\\00r\\a7\\90\\00k\\e7\\1f\\001\\cb\\96\\00y\\16J\\00Ay\\e2\\00\\f4\\df\\89\\00\\e8\\94\\97\\00\\e2\\e6\\84\\00\\991\\97\\00\\88\\edk\\00__6\\00\\bb\\fd\\0e\\00H\\9a\\b4\\00g\\a4l\\00qrB\\00\\8d]2\\00\\9f\\15\\b8\\00\\bc\\e5\\09\\00\\8d1%\\00\\f7t9\\000\\05\\1c\\00\\0d\\0c\\01\\00K\\08h\\00,\\eeX\\00G\\aa\\90\\00t\\e7\\02\\00\\bd\\d6\\$\\00\\f7}\\a6\\00nHr\\00\\9f\\16\\ef\\00\\8e\\94\\a6\\00\\b4\\91\\f6\\00\\d1SQ\\00\\cf\\0a\\f2\\00 \\983\\00\\f5K~\\00\\b2ch\\00\\dd>_\\00@]\\03\\00\\85\\89\\7f\\00UR)\\007d\\c0\\00m\\d8\\10\\002H2\\00[Lu\\00Nq\\d4\\00ETn\\00\\0b\\09\\c1\\00*\\f5i\\00\\14f\\d5\\00'\\07\\9d\\00]\\04P\\00\\b4;\\db\\00\\eav\\c5\\00\\87\\f9\\17\\00Ik}\\00\\1d'\\ba\\00\\96i)\\00\\c6\\cc\\ac\\00\\ad\\14T\\00\\90\\e2j\\00\\88\\d9\\89\\00,rP\\00\\04\\a4\\be\\00w\\07\\94\\00\\f30p\\00\\00\\fc'\\00\\eaq\\a8\\00f\\c2I\\00d\\e0=\\00\\97\\dd\\83\\00\\a3?\\97\\00C\\94\\fd\\00\\0d\\86\\8c\\001A\\de\\00\\929\\9d\\00\\ddp\\8c\\00\\17\\b7\\e7\\00\\08\\df;\\00\\157+\\00\\5c\\80\\a0\\00Z\\80\\93\\00\\10\\11\\92\\00\\0f\\e8\\d8\\00l\\80\\af\\00\\db\\ffK\\008\\90\\0f\\00Y\\18v\\00b\\a5\\15\\00a\\cb\\bb\\00\\c7\\89\\b9\\00\\10@\\bd\\00\\d2\\f2\\04\\00Iu'\\00\\eb\\b6\\f6\\00\\db\\22\\bb\\00\\0a\\14\\aa\\00\\89&/\\00d\\83v\\00\\09;3\\00\\0e\\94\\1a\\00Q:\\aa\\00\\1d\\a3\\c2\\00\\af\\ed\\ae\\00\\5c&\\12\\00m\\c2M\\00-z\\9c\\00\\c0V\\97\\00\\03?\\83\\00\\09\\f0\\f6\\00+@\\8c\\00m1\\99\\009\\b4\\07\\00\\0c \\15\\00\\d8\\c3[\\00\\f5\\92\\c4\\00\\c6\\adK\\00N\\ca\\a5\\00\\a77\\cd\\00\\e6\\a96\\00\\ab\\92\\94\\00\\ddBh\\00\\19c\\de\\00v\\8c\\ef\\00h\\8bR\\00\\fc\\db7\\00\\ae\\a1\\ab\\00\\df\\151\\00\\00\\ae\\a1\\00\\0c\\fb\\da\\00dMf\\00\\ed\\05\\b7\\00)e0\\00WV\\bf\\00G\\ff:\\00j\\f9\\b9\\00u\\be\\f3\\00(\\93\\df\\00\\ab\\800\\00f\\8c\\f6\\00\\04\\cb\\15\\00\\fa\\22\\06\\00\\d9\\e4\\1d\\00=\\b3\\a4\\00W\\1b\\8f\\006\\cd\\09\\00NB\\e9\\00\\13\\be\\a4\\003#\\b5\\00\\f0\\aa\\1a\\00Oe\\a8\\00\\d2\\c1\\a5\\00\\0b?\\0f\\00[x\\cd\\00#\\f9v\\00{\\8b\\04\\00\\89\\17r\\00\\c6\\a6S\\00on\\e2\\00\\ef\\eb\\00\\00\\9bJX\\00\\c4\\da\\b7\\00\\aaf\\ba\\00v\\cf\\cf\\00\\d1\\02\\1d\\00\\b1\\f1-\\00\\8c\\99\\c1\\00\\c3\\adw\\00\\86H\\da\\00\\f7]\\a0\\00\\c6\\80\\f4\\00\\ac\\f0/\\00\\dd\\ec\\9a\\00?\\5c\\bc\\00\\d0\\dem\\00\\90\\c7\\1f\\00*\\db\\b6\\00\\a3%:\\00\\00\\af\\9a\\00\\adS\\93\\00\\b6W\\04\\00)-\\b4\\00K\\80~\\00\\da\\07\\a7\\00v\\aa\\0e\\00{Y\\a1\\00\\16\\12*\\00\\dc\\b7-\\00\\fa\\e5\\fd\\00\\89\\db\\fe\\00\\89\\be\\fd\\00\\e4vl\\00\\06\\a9\\fc\\00>\\80p\\00\\85n\\15\\00\\fd\\87\\ff\\00(>\\07\\00ag3\\00*\\18\\86\\00M\\bd\\ea\\00\\b3\\e7\\af\\00\\8fmn\\00\\95g9\\001\\bf[\\00\\84\\d7H\\000\\df\\16\\00\\c7-C\\00%a5\\00\\c9p\\ce\\000\\cb\\b8\\00\\bfl\\fd\\00\\a4\\00\\a2\\00\\05l\\e4\\00Z\\dd\\a0\\00!oG\\00b\\12\\d2\\00\\b9\\5c\\84\\00paI\\00kV\\e0\\00\\99R\\01\\00PU7\\00\\1e\\d5\\b7\\003\\f1\\c4\\00\\13n_\\00]0\\e4\\00\\85.\\a9\\00\\1d\\b2\\c3\\00\\a126\\00\\08\\b7\\a4\\00\\ea\\b1\\d4\\00\\16\\f7!\\00\\8fi\\e4\\00'\\ffw\\00\\0c\\03\\80\\00\\8d@-\\00O\\cd\\a0\\00 \\a5\\99\\00\\b3\\a2\\d3\\00/]\\0a\\00\\b4\\f9B\\00\\11\\da\\cb\\00}\\be\\d0\\00\\9b\\db\\c1\\00\\ab\\17\\bd\\00\\ca\\a2\\81\\00\\08j\\5c\\00.U\\17\\00'\\00U\\00\\7f\\14\\f0\\00\\e1\\07\\86\\00\\14\\0bd\\00\\96A\\8d\\00\\87\\be\\de\\00\\da\\fd*\\00k%\\b6\\00{\\894\\00\\05\\f3\\fe\\00\\b9\\bf\\9e\\00hjO\\00J*\\a8\\00O\\c4Z\\00-\\f8\\bc\\00\\d7Z\\98\\00\\f4\\c7\\95\\00\\0dM\\8d\\00 :\\a6\\00\\a4W_\\00\\14?\\b1\\00\\808\\95\\00\\cc \\01\\00q\\dd\\86\\00\\c9\\de\\b6\\00\\bf`\\f5\\00Me\\11\\00\\01\\07k\\00\\8c\\b0\\ac\\00\\b2\\c0\\d0\\00QUH\\00\\1e\\fb\\0e\\00\\95r\\c3\\00\\a3\\06;\\00\\c0@5\\00\\06\\dc{\\00\\e0E\\cc\\00N)\\fa\\00\\d6\\ca\\c8\\00\\e8\\f3A\\00|d\\de\\00\\9bd\\d8\\00\\d9\\be1\\00\\a4\\97\\c3\\00wX\\d4\\00i\\e3\\c5\\00\\f0\\da\\13\\00\\ba:<\\00F\\18F\\00Uu_\\00\\d2\\bd\\f5\\00n\\92\\c6\\00\\ac.]\\00\\0eD\\ed\\00\\1c>B\\00a\\c4\\87\\00)\\fd\\e9\\00\\e7\\d6\\f3\\00\\22|\\ca\\00o\\915\\00\\08\\e0\\c5\\00\\ff\\d7\\8d\\00nj\\e2\\00\\b0\\fd\\c6\\00\\93\\08\\c1\\00|]t\\00k\\ad\\b2\\00\\cdn\\9d\\00>r{\\00\\c6\\11j\\00\\f7\\cf\\a9\\00)s\\df\\00\\b5\\c9\\ba\\00\\b7\\00Q\\00\\e2\\b2\\0d\\00t\\ba\\$\\00\\e5}`\\00t\\d8\\8a\\00\\0d\\15,\\00\\81\\18\\0c\\00~f\\94\\00\\01)\\16\\00\\9fzv\\00\\fd\\fd\\be\\00VE\\ef\\00\\d9~6\\00\\ec\\d9\\13\\00\\8b\\ba\\b9\\00\\c4\\97\\fc\\001\\a8'\\00\\f1n\\c3\\00\\94\\c56\\00\\d8\\a8V\\00\\b4\\a8\\b5\\00\\cf\\cc\\0e\\00\\12\\89-\\00oW4\\00,V\\89\\00\\99\\ce\\e3\\00\\d6 \\b9\\00k^\\aa\\00>*\\9c\\00\\11_\\cc\\00\\fd\\0bJ\\00\\e1\\f4\\fb\\00\\8e;m\\00\\e2\\86,\\00\\e9\\d4\\84\\00\\fc\\b4\\a9\\00\\ef\\ee\\d1\\00.5\\c9\\00/9a\\008!D\\00\\1b\\d9\\c8\\00\\81\\fc\\0a\\00\\fbJj\\00/\\1c\\d8\\00S\\b4\\84\\00N\\99\\8c\\00T\\22\\cc\\00*U\\dc\\00\\c0\\c6\\d6\\00\\0b\\19\\96\\00\\1ap\\b8\\00i\\95d\\00&Z`\\00?R\\ee\\00\\7f\\11\\0f\\00\\f4\\b5\\11\\00\\fc\\cb\\f5\\004\\bc-\\004\\bc\\ee\\00\\e8]\\cc\\00\\dd^`\\00g\\8e\\9b\\00\\923\\ef\\00\\c9\\17\\b8\\00aX\\9b\\00\\e1W\\bc\\00Q\\83\\c6\\00\\d8>\\10\\00\\ddqH\\00-\\1c\\dd\\00\\af\\18\\a1\\00!,F\\00Y\\f3\\d7\\00\\d9z\\98\\00\\9eT\\c0\\00O\\86\\fa\\00V\\06\\fc\\00\\e5y\\ae\\00\\89\\226\\008\\ad\\22\\00g\\93\\dc\\00U\\e8\\aa\\00\\82&8\\00\\ca\\e7\\9b\\00Q\\0d\\a4\\00\\993\\b1\\00\\a9\\d7\\0e\\00i\\05H\\00e\\b2\\f0\\00\\7f\\88\\a7\\00\\88L\\97\\00\\f9\\d16\\00!\\92\\b3\\00{\\82J\\00\\98\\cf!\\00@\\9f\\dc\\00\\dcGU\\00\\e1t:\\00g\\ebB\\00\\fe\\9d\\df\\00^\\d4_\\00{g\\a4\\00\\ba\\acz\\00U\\f6\\a2\\00+\\88#\\00A\\baU\\00Yn\\08\\00!*\\86\\009G\\83\\00\\89\\e3\\e6\\00\\e5\\9e\\d4\\00I\\fb@\\00\\ffV\\e9\\00\\1c\\0f\\ca\\00\\c5Y\\8a\\00\\94\\fa+\\00\\d3\\c1\\c5\\00\\0f\\c5\\cf\\00\\dbZ\\ae\\00G\\c5\\86\\00\\85Cb\\00!\\86;\\00,y\\94\\00\\10a\\87\\00*L{\\00\\80,\\1a\\00C\\bf\\12\\00\\88&\\90\\00x<\\89\\00\\a8\\c4\\e4\\00\\e5\\db{\\00\\c4:\\c2\\00&\\f4\\ea\\00\\f7g\\8a\\00\\0d\\92\\bf\\00e\\a3+\\00=\\93\\b1\\00\\bd|\\0b\\00\\a4Q\\dc\\00'\\ddc\\00i\\e1\\dd\\00\\9a\\94\\19\\00\\a8)\\95\\00h\\ce(\\00\\09\\ed\\b4\\00D\\9f \\00N\\98\\ca\\00p\\82c\\00~|#\\00\\0f\\b92\\00\\a7\\f5\\8e\\00\\14V\\e7\\00!\\f1\\08\\00\\b5\\9d*\\00o~M\\00\\a5\\19Q\\00\\b5\\f9\\ab\\00\\82\\df\\d6\\00\\96\\dda\\00\\166\\02\\00\\c4:\\9f\\00\\83\\a2\\a1\\00r\\edm\\009\\8dz\\00\\82\\b8\\a9\\00k2\\5c\\00F'[\\00\\004\\ed\\00\\d2\\00w\\00\\fc\\f4U\\00\\01YM\\00\\e0q\\80\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00@\\fb!\\f9?\\00\\00\\00\\00-Dt>\\00\\00\\00\\80\\98F\\f8<\\00\\00\\00`Q\\ccx;\\00\\00\\00\\80\\83\\1b\\f09\\00\\00\\00@ %z8\\00\\00\\00\\80\\22\\82\\e36\\00\\00\\00\\00\\1d\\f3i5\\00\\00\\00\\00\\00\\00\\e0?\\00\\00\\00\\00\\00\\00\\e0\\bf\"))\n " +internal val INITIAL by lazy { Base64.toUint8Array(B) } + +private const val B = + "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" diff --git a/kmath-ast/src/jsMain/kotlin/kscience/kmath/ast/RealWasmBuilder.kt b/kmath-ast/src/jsMain/kotlin/kscience/kmath/ast/RealWasmBuilder.kt index 239aa6285..ef2ed210b 100644 --- a/kmath-ast/src/jsMain/kotlin/kscience/kmath/ast/RealWasmBuilder.kt +++ b/kmath-ast/src/jsMain/kotlin/kscience/kmath/ast/RealWasmBuilder.kt @@ -1,14 +1,13 @@ package kscience.kmath.ast +import kscience.kmath.expressions.Expression +import kscience.kmath.expressions.StringSymbol import kscience.kmath.operations.* -private const val ARGS_PTR = 0 -private const val ARGS_SIZE = 1 - -public fun compileMstToWasmF64(mst: MST) { +public fun compileMstToWasmF64(mst: MST): Expression { val keys = mutableListOf() - val bin = with(binaryen.parseText(INITIAL)) { + val bin = with(binaryen.readBinary(INITIAL)) { fun MST.visit(): binaryen.ExpressionRef = when (this) { is MST.Symbolic -> { var idx = keys.indexOf(value) @@ -18,7 +17,7 @@ public fun compileMstToWasmF64(mst: MST) { idx = keys.lastIndex } - f64.load(idx * Double.SIZE_BYTES, 0, local.get(ARGS_PTR, binaryen.i32)) + local.get(idx, binaryen.f64) } is MST.Numeric -> f64.const(value) @@ -28,6 +27,19 @@ public fun compileMstToWasmF64(mst: MST) { SpaceOperations.PLUS_OPERATION -> value.visit() PowerOperations.SQRT_OPERATION -> f64.sqrt(value.visit()) TrigonometricOperations.SIN_OPERATION -> call("sin", arrayOf(value.visit()), binaryen.f64) + TrigonometricOperations.COS_OPERATION -> call("cos", arrayOf(value.visit()), binaryen.f64) + TrigonometricOperations.TAN_OPERATION -> call("tan", arrayOf(value.visit()), binaryen.f64) + TrigonometricOperations.ASIN_OPERATION -> call("asin", arrayOf(value.visit()), binaryen.f64) + TrigonometricOperations.ACOS_OPERATION -> call("acos", arrayOf(value.visit()), binaryen.f64) + TrigonometricOperations.ATAN_OPERATION -> call("atan", arrayOf(value.visit()), binaryen.f64) + HyperbolicOperations.SINH_OPERATION -> call("sinh", arrayOf(value.visit()), binaryen.f64) + HyperbolicOperations.COSH_OPERATION -> call("cosh", arrayOf(value.visit()), binaryen.f64) + HyperbolicOperations.TANH_OPERATION -> call("tanh", arrayOf(value.visit()), binaryen.f64) + HyperbolicOperations.ASINH_OPERATION -> call("asinh", arrayOf(value.visit()), binaryen.f64) + HyperbolicOperations.ACOSH_OPERATION -> call("acosh", arrayOf(value.visit()), binaryen.f64) + HyperbolicOperations.ATANH_OPERATION -> call("atanh", arrayOf(value.visit()), binaryen.f64) + ExponentialOperations.EXP_OPERATION -> call("exp", arrayOf(value.visit()), binaryen.f64) + ExponentialOperations.LN_OPERATION -> call("log", arrayOf(value.visit()), binaryen.f64) else -> throw UnsupportedOperationException() } @@ -35,28 +47,35 @@ public fun compileMstToWasmF64(mst: MST) { SpaceOperations.PLUS_OPERATION -> f64.add(left.visit(), right.visit()) RingOperations.TIMES_OPERATION -> f64.mul(left.visit(), right.visit()) FieldOperations.DIV_OPERATION -> f64.div(left.visit(), right.visit()) + PowerOperations.POW_OPERATION -> call("pow", arrayOf(left.visit(), right.visit()), binaryen.f64) else -> throw UnsupportedOperationException() } } + val expr = mst.visit() + addFunction( "executable", - binaryen.createType(arrayOf(binaryen.i32, binaryen.i32)), + binaryen.createType(Array(keys.size) { binaryen.f64 }), binaryen.f64, arrayOf(), - mst.visit() + expr ) -// setMemory(0, 10000) + binaryen.setOptimizeLevel(3) +// optimizeFunction("executable") addFunctionExport("executable", "executable") - optimize() - - if (!validate().unsafeCast()) - error("Invalid module produced.") - - println(emitText()) - emitBinary() + val res = emitBinary() + dispose() + res } + val c = WebAssembly.Module(bin) + val i = WebAssembly.Instance(c, js("{}") as Any) + return Expression { args -> + val params = keys.map { StringSymbol(it) }.map { args.getValue(it) }.toTypedArray() + val spreader = eval("(obj, args) => obj(...args)") + spreader(i.exports.asDynamic().executable, params) as Double + } } diff --git a/kmath-ast/src/jsMain/kotlin/lib.dom.WebAssembly.module_dukat.kt b/kmath-ast/src/jsMain/kotlin/lib.dom.WebAssembly.module_dukat.kt new file mode 100644 index 000000000..01b4b9674 --- /dev/null +++ b/kmath-ast/src/jsMain/kotlin/lib.dom.WebAssembly.module_dukat.kt @@ -0,0 +1,211 @@ +@file:JsQualifier("WebAssembly") +@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS", + "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", "KDocMissingDocumentation", "PackageDirectoryMismatch", "PackageName", + "Reformat", "ClassName", "SortModifiers" +) +package WebAssembly + +import org.khronos.webgl.ArrayBuffer +import org.khronos.webgl.ArrayBufferView +import org.khronos.webgl.Uint8Array +import org.w3c.fetch.Response +import tsstdlib.PromiseLike +import kotlin.js.Promise + +@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +external interface CompileError { + companion object { + var prototype: CompileError + } +} + +@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +external interface Global { + var value: Any + fun valueOf(): Any + + companion object { + var prototype: Global + } +} + +@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +@JsName("Instance") +external interface Instance1 { + var exports: Exports + + companion object { + var prototype: Instance + } +} + +@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +external interface LinkError { + companion object { + var prototype: LinkError + } +} + +@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +external interface Memory { + var buffer: ArrayBuffer + fun grow(delta: Number): Number + + companion object { + var prototype: Memory + } +} + +@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +@JsName("Module") +external interface Module1 { + companion object { + var prototype: Module + fun customSections(moduleObject: Module, sectionName: String): Array + fun exports(moduleObject: Module): Array + fun imports(moduleObject: Module): Array + } +} + +@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +external interface RuntimeError { + companion object { + var prototype: RuntimeError + } +} + +@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +external interface Table { + var length: Number + fun get(index: Number): Function<*>? + fun grow(delta: Number): Number + fun set(index: Number, value: Function<*>?) + + companion object { + var prototype: Table + } +} + +external interface GlobalDescriptor { + var mutable: Boolean? + get() = definedExternally + set(value) = definedExternally + var value: String /* "f32" | "f64" | "i32" | "i64" */ +} + +external interface MemoryDescriptor { + var initial: Number + var maximum: Number? + get() = definedExternally + set(value) = definedExternally +} + +external interface ModuleExportDescriptor { + var kind: String /* "function" | "global" | "memory" | "table" */ + var name: String +} + +external interface ModuleImportDescriptor { + var kind: String /* "function" | "global" | "memory" | "table" */ + var module: String + var name: String +} + +external interface TableDescriptor { + var element: String /* "anyfunc" */ + var initial: Number + var maximum: Number? + get() = definedExternally + set(value) = definedExternally +} + +external interface WebAssemblyInstantiatedSource { + var instance: Instance + var module: Module +} + +external fun compile(bytes: ArrayBufferView): Promise + +external fun compile(bytes: ArrayBuffer): Promise + +external fun compileStreaming(source: Response): Promise + +external fun compileStreaming(source: Promise): Promise + +external fun instantiate(bytes: ArrayBufferView, importObject: Imports = definedExternally): Promise + +external fun instantiate(bytes: ArrayBufferView): Promise + +external fun instantiate(bytes: ArrayBuffer, importObject: Imports = definedExternally): dynamic /* Promise | Promise */ + +external fun instantiate(bytes: ArrayBuffer): dynamic /* Promise | Promise */ + +external fun instantiate(moduleObject: Module, importObject: Imports = definedExternally): Promise + +external fun instantiate(moduleObject: Module): Promise + +external fun instantiateStreaming(response: Response, importObject: Imports = definedExternally): Promise + +external fun instantiateStreaming(response: Response): Promise + +external fun instantiateStreaming(response: PromiseLike, importObject: Imports = definedExternally): Promise + +external fun instantiateStreaming(response: PromiseLike): Promise + +external fun validate(bytes: ArrayBufferView): Boolean + +external fun validate(bytes: ArrayBuffer): Boolean + +external interface `T$0` { + var name: String + var kind: String +} + +external interface `T$1` { + var module: String + var name: String + var kind: String +} + +external open class Module { + constructor(bufferSource: ArrayBuffer) + constructor(bufferSource: Uint8Array) + + companion object { + fun customSections(module: Module, sectionName: String): Array + fun exports(module: Module): Array<`T$0`> + fun imports(module: Module): Array<`T$1`> + } +} + +@JsName("Instance") +external open class Instance(module: Module, importObject: Any = definedExternally) { + open var exports: Any +} + +@JsName("Memory") +external open class Memory1(memoryDescriptor: MemoryDescriptor) { + open var buffer: ArrayBuffer + open fun grow(numPages: Number): Number +} + +@JsName("Table") +external open class Table1(tableDescriptor: TableDescriptor) { + open var length: Number + open fun get(index: Number): Function<*> + open fun grow(numElements: Number): Number + open fun set(index: Number, value: Function<*>) +} + +external fun compile(bufferSource: Uint8Array): Promise + +external interface ResultObject { + var module: Module + var instance: Instance +} + +external fun instantiate(bufferSource: Uint8Array, importObject: Any = definedExternally): Promise + +external fun instantiate(bufferSource: Uint8Array): Promise + +external fun validate(bufferSource: Uint8Array): Boolean diff --git a/kmath-ast/src/jsMain/kotlin/lib.es2015.iterable.kt b/kmath-ast/src/jsMain/kotlin/lib.es2015.iterable.kt new file mode 100644 index 000000000..57fb640dc --- /dev/null +++ b/kmath-ast/src/jsMain/kotlin/lib.es2015.iterable.kt @@ -0,0 +1,54 @@ +@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS") +package tsstdlib + +import kotlin.js.* +import org.khronos.webgl.* +import org.w3c.dom.* +import org.w3c.dom.events.* +import org.w3c.dom.parsing.* +import org.w3c.dom.svg.* +import org.w3c.dom.url.* +import org.w3c.fetch.* +import org.w3c.files.* +import org.w3c.notifications.* +import org.w3c.performance.* +import org.w3c.workers.* +import org.w3c.xhr.* + +external interface IteratorYieldResult { + var done: Boolean? + get() = definedExternally + set(value) = definedExternally + var value: TYield +} + +external interface IteratorReturnResult { + var done: Boolean + var value: TReturn +} + +external interface Iterator { + fun next(vararg args: Any /* JsTuple<> | JsTuple */): dynamic /* IteratorYieldResult | IteratorReturnResult */ + val `return`: ((value: TReturn) -> dynamic)? + val `throw`: ((e: Any) -> dynamic)? +} + +typealias Iterator__1 = Iterator + +external interface Iterable + +external interface IterableIterator : Iterator__1 + +external interface PromiseConstructor { + var prototype: Promise + fun all(values: Any /* JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple */): Promise | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple */> + fun all(values: Array */>): Promise> + fun race(values: Array): Promise + fun reject(reason: Any = definedExternally): Promise + fun resolve(value: T): Promise + fun resolve(value: PromiseLike): Promise + fun resolve(): Promise + fun all(values: Iterable */>): Promise> + fun race(values: Iterable): Promise + fun race(values: Iterable */>): Promise +} \ No newline at end of file diff --git a/kmath-ast/src/jsMain/kotlin/tsstdlib/lib.es5.kt b/kmath-ast/src/jsMain/kotlin/lib.es5.kt similarity index 58% rename from kmath-ast/src/jsMain/kotlin/tsstdlib/lib.es5.kt rename to kmath-ast/src/jsMain/kotlin/lib.es5.kt index f806c21bc..9d0771fa1 100644 --- a/kmath-ast/src/jsMain/kotlin/tsstdlib/lib.es5.kt +++ b/kmath-ast/src/jsMain/kotlin/lib.es5.kt @@ -1,11 +1,35 @@ -@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS", - "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", "DEPRECATION", "KDocMissingDocumentation", "PropertyName", - "PropertyName", "Reformat" -) +@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS") package tsstdlib -import org.khronos.webgl.ArrayBuffer -import org.khronos.webgl.Uint8Array +import kotlin.js.* +import org.khronos.webgl.* +import org.w3c.dom.* +import org.w3c.dom.events.* +import org.w3c.dom.parsing.* +import org.w3c.dom.svg.* +import org.w3c.dom.url.* +import org.w3c.fetch.* +import org.w3c.files.* +import org.w3c.notifications.* +import org.w3c.performance.* +import org.w3c.workers.* +import org.w3c.xhr.* + +external interface FunctionConstructor { + @nativeInvoke + operator fun invoke(vararg args: String): Function<*> + var prototype: Function<*> +} + +external interface ErrorConstructor { + @nativeInvoke + operator fun invoke(message: String = definedExternally): Error + var prototype: Error +} + +external interface PromiseLike { + fun then(onfulfilled: ((value: T) -> Any?)? = definedExternally, onrejected: ((reason: Any) -> Any?)? = definedExternally): PromiseLike +} external interface ArrayLike { var length: Number @@ -15,6 +39,8 @@ external interface ArrayLike { operator fun set(n: Number, value: T) } +typealias Record = Any + external interface ArrayBufferTypes { var ArrayBuffer: ArrayBuffer } @@ -34,4 +60,4 @@ external interface Uint8ArrayConstructor { fun from(arrayLike: ArrayLike): Uint8Array fun from(arrayLike: ArrayLike, mapfn: (v: T, k: Number) -> Number, thisArg: Any = definedExternally): Uint8Array fun from(arrayLike: ArrayLike, mapfn: (v: T, k: Number) -> Number): Uint8Array -} +} \ No newline at end of file diff --git a/kmath-ast/src/jsMain/kotlin/nonDeclarations.WebAssembly.kt b/kmath-ast/src/jsMain/kotlin/nonDeclarations.WebAssembly.kt new file mode 100644 index 000000000..e873001f1 --- /dev/null +++ b/kmath-ast/src/jsMain/kotlin/nonDeclarations.WebAssembly.kt @@ -0,0 +1,32 @@ +@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS", + "UnusedImport", "PackageDirectoryMismatch", "PackageName", "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", + "KDocMissingDocumentation" +) +package WebAssembly + +import kotlin.js.* +import org.khronos.webgl.* +import org.w3c.dom.* +import org.w3c.dom.events.* +import org.w3c.dom.parsing.* +import org.w3c.dom.svg.* +import org.w3c.dom.url.* +import org.w3c.fetch.* +import org.w3c.files.* +import org.w3c.notifications.* +import org.w3c.performance.* +import org.w3c.workers.* +import org.w3c.xhr.* +import tsstdlib.Record + +typealias Exports = Record | Global | Memory | Table */> + +typealias ModuleImports = Record | Global | Memory | Table | Number */> + +typealias Imports = Record + +typealias CompileError1 = Error + +typealias LinkError1 = Error + +typealias RuntimeError1 = Error \ No newline at end of file diff --git a/kmath-ast/src/jsMain/kotlin/tsstdlib/lib.es2015.iterable.kt b/kmath-ast/src/jsMain/kotlin/tsstdlib/lib.es2015.iterable.kt deleted file mode 100644 index 4dd4dc696..000000000 --- a/kmath-ast/src/jsMain/kotlin/tsstdlib/lib.es2015.iterable.kt +++ /dev/null @@ -1,31 +0,0 @@ -@file:Suppress( - "INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS", - "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING", - "KDocMissingDocumentation" -) - -package tsstdlib - -external interface IteratorYieldResult { - var done: Boolean? - get() = definedExternally - set(value) = definedExternally - var value: TYield -} - -external interface IteratorReturnResult { - var done: Boolean - var value: TReturn -} - -external interface Iterator { - fun next(vararg args: Any /* JsTuple<> | JsTuple */): dynamic /* IteratorYieldResult | IteratorReturnResult */ - val `return`: ((value: TReturn) -> dynamic)? - val `throw`: ((e: Any) -> dynamic)? -} - -typealias Iterator__1 = Iterator - -external interface Iterable - -external interface IterableIterator : Iterator__1 \ No newline at end of file diff --git a/kmath-ast/src/jsMain/kotlin/webassembly.d.ts b/kmath-ast/src/jsMain/kotlin/webassembly.d.ts new file mode 100644 index 000000000..347ef08f5 --- /dev/null +++ b/kmath-ast/src/jsMain/kotlin/webassembly.d.ts @@ -0,0 +1,102 @@ +/** + * WebAssembly v1 (MVP) declaration file for TypeScript + * Definitions by: 01alchemist (https://twitter.com/01alchemist) + */ +declare namespace WebAssembly { + /** + * WebAssembly.Module + **/ + class Module { + constructor (bufferSource: ArrayBuffer | Uint8Array); + + static customSections(module: Module, sectionName: string): ArrayBuffer[]; + static exports(module: Module): { + name: string; + kind: string; + }[]; + static imports(module: Module): { + module: string; + name: string; + kind: string; + }[]; + } + + /** + * WebAssembly.Instance + **/ + class Instance { + readonly exports: any; + constructor (module: Module, importObject?: any); + } + + /** + * WebAssembly.Memory + * Note: A WebAssembly page has a constant size of 65,536 bytes, i.e., 64KiB. + **/ + interface MemoryDescriptor { + initial: number; + maximum?: number; + } + + class Memory { + readonly buffer: ArrayBuffer; + constructor (memoryDescriptor: MemoryDescriptor); + grow(numPages: number): number; + } + + /** + * WebAssembly.Table + **/ + interface TableDescriptor { + element: "anyfunc", + initial: number; + maximum?: number; + } + + class Table { + readonly length: number; + constructor (tableDescriptor: TableDescriptor); + get(index: number): Function; + grow(numElements: number): number; + set(index: number, value: Function): void; + } + + /** + * Errors + */ + class CompileError extends Error { + readonly fileName: string; + readonly lineNumber: string; + readonly columnNumber: string; + constructor (message?:string, fileName?:string, lineNumber?:number); + toString(): string; + } + + class LinkError extends Error { + readonly fileName: string; + readonly lineNumber: string; + readonly columnNumber: string; + constructor (message?:string, fileName?:string, lineNumber?:number); + toString(): string; + } + + class RuntimeError extends Error { + readonly fileName: string; + readonly lineNumber: string; + readonly columnNumber: string; + constructor (message?:string, fileName?:string, lineNumber?:number); + toString(): string; + } + + function compile(bufferSource: ArrayBuffer | Uint8Array): Promise; + + interface ResultObject { + module: Module; + instance: Instance; + } + + function instantiate(bufferSource: ArrayBuffer | Uint8Array, importObject?: any): Promise; + function instantiate(module: Module, importObject?: any): Promise; + + function validate(bufferSource: ArrayBuffer | Uint8Array): boolean; +} diff --git a/kmath-ast/src/jsTest/kotlin/Test.kt b/kmath-ast/src/jsTest/kotlin/Test.kt index eaa3a5e19..357b1ac93 100644 --- a/kmath-ast/src/jsTest/kotlin/Test.kt +++ b/kmath-ast/src/jsTest/kotlin/Test.kt @@ -1,11 +1,16 @@ package kscience.kmath.ast +import kscience.kmath.expressions.invoke import kscience.kmath.operations.invoke import kotlin.test.Test +import kotlin.time.measureTime internal class Test { @Test fun c() { - compileMstToWasmF64(MstExtendedField { sin(symbol("x")) }) + measureTime { + val expr = compileMstToWasmF64(MstExtendedField { sin(symbol("x")) + cos(symbol("x")).pow(2) }) + println(expr("x" to 3.0)) + }.also { println(it) } } }