code wiki / _hdl_build / nx_math_gate_demo.nx

nx_math_gate_demo.nx source

↩ module page · 108 lines · 4240 B

1// nx_math_gate_demo.nx -- the TEAM authoring the ATAN live-oracle ULP gate from 2// DATA (no Claude gate logic). Edges + bands are the data rows; helpers are 3// the emitter's proven templates. Emits _f64_atan_gate_emitted.nx. 4import "nx_math_gate_emit.nx" 5import "nx_syscalls.nx" 6const K_MAGIC_1026: i64 = 1026 7const K_MAGIC_1033: i64 = 1033 8 9func mgd_w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 10 11func main() -> i64 { 12 let strs: *i64 = sys_mmap(8 * 16) as *i64 13 strs[0] = "runtime/_hdl_build/_f64_atan_gate_emitted.nx" as *u8 as i64 14 strs[1] = "ATAN" as *u8 as i64 15 strs[2] = "nx_f64_atan" as *u8 as i64 16 strs[3] = "bf_atan_f64" as *u8 as i64 17 strs[4] = "nx_bigfloat120.nx" as *u8 as i64 18 strs[5] = "nx_bigfloat120_div.nx" as *u8 as i64 19 strs[6] = "nx_bigfloat120_trig.nx" as *u8 as i64 20 strs[7] = "nx_bigfloat120_atan.nx" as *u8 as i64 21 strs[8] = "_pe_f64atan.nx" as *u8 as i64 22 let nums: *i64 = sys_mmap(8 * 64) as *i64 23 nums[0] = 5 // imports 24 nums[1] = 16180339887498948482 // seed 25 nums[2] = 300 // banded points 26 nums[3] = 1 // random signs 27 nums[4] = 22 // edges 28 nums[5] = 0x7FF8000000000000 29 nums[6] = 0x7FF0000000000000 30 nums[7] = 0xFFF0000000000000 31 nums[8] = 0 32 nums[9] = 1 << 63 33 nums[10] = 1 34 nums[11] = 0x000FFFFFFFFFFFFF 35 nums[12] = 0x0010000000000000 36 nums[13] = 0x7FEFFFFFFFFFFFFF 37 nums[14] = 0x3FF0000000000000 38 nums[15] = 0xBFF0000000000000 39 nums[16] = 0x3FEFFFFFFFFFFFFF 40 nums[17] = 0x3FF0000000000001 41 nums[18] = 0x4004800000000000 42 nums[19] = 0x40047FFFFFFFFFFF 43 nums[20] = 0x4004800000000001 44 nums[21] = 0x3FC0000000000000 45 nums[22] = 0x3FB0000000000000 46 nums[23] = 0x3FD8000000000000 47 nums[24] = 0x4000000000000000 48 nums[25] = 0xC003000000000000 49 nums[26] = 0x3E50000000000000 50 nums[27] = 1021; nums[28] = 3 // bands: seam region 51 nums[29] = 1015; nums[30] = 15 // 2^-8 .. 2^8 52 nums[31] = 960; nums[32] = 63 // small 53 nums[33] = K_MAGIC_1026; nums[34] = 511 // fold path, large 54 let a: i64 = mge_author(strs, nums) 55 // ---- TAN gate from data (same emitter, second data block) ---- 56 let strs2: *i64 = sys_mmap(8 * 16) as *i64 57 strs2[0] = "runtime/_hdl_build/_f64_tan_gate_emitted.nx" as *u8 as i64 58 strs2[1] = "TAN" as *u8 as i64 59 strs2[2] = "nx_f64_tan" as *u8 as i64 60 strs2[3] = "bf_tan_f64" as *u8 as i64 61 strs2[4] = "nx_bigfloat120.nx" as *u8 as i64 62 strs2[5] = "nx_bigfloat120_div.nx" as *u8 as i64 63 strs2[6] = "nx_bigfloat120_trig.nx" as *u8 as i64 64 strs2[7] = "nx_bigfloat120_tan.nx" as *u8 as i64 65 strs2[8] = "_pe_f64tan.nx" as *u8 as i64 66 let nums2: *i64 = sys_mmap(8 * 64) as *i64 67 nums2[0] = 5 68 nums2[1] = 11235813213455891442 69 nums2[2] = 320 70 nums2[3] = 1 71 nums2[4] = 22 72 nums2[5] = 0x7FF8000000000000 73 nums2[6] = 0x7FF0000000000000 74 nums2[7] = 0 75 nums2[8] = 1 << 63 76 nums2[9] = 1 77 nums2[10] = 0x4140000000000000 78 nums2[11] = 0x3FF921FB54442D18 79 nums2[12] = 0x3FF921FB54442D19 80 nums2[13] = 0x3FF921FB54442D17 81 nums2[14] = 0x4012D97C7F3321D2 82 nums2[15] = 0x401F6A7A2955385E 83 nums2[16] = 0x400921FB54442D18 84 nums2[17] = 0x401921FB54442D18 85 nums2[18] = 0x3FE921FB54442D18 86 nums2[19] = 0xBFE921FB54442D18 87 nums2[20] = 0x3FC0000000000000 88 nums2[21] = 0x3FB0000000000000 89 nums2[22] = 0x3FE8000000000000 90 nums2[23] = 0x3FF0000000000000 91 nums2[24] = 0x4000000000000000 92 nums2[25] = 0x3E50000000000000 93 nums2[26] = 0x40F869F000000000 94 nums2[27] = 1015; nums2[28] = 7 95 nums2[29] = 1023; nums2[30] = 15 96 nums2[31] = 950; nums2[32] = 63 97 nums2[33] = K_MAGIC_1033; nums2[34] = 7 98 let b: i64 = mge_author(strs2, nums2) 99 if a == 1 { 100 if b == 1 { 101 mgd_w("TEAM AUTHORED GATES: _f64_atan_gate_emitted + _f64_tan_gate_emitted (MATH_GATE, data-spec) -- Engineer verify next\n" as *u8) 102 sys_exit(0) 103 } 104 } 105 mgd_w("author failed\n" as *u8) 106 sys_exit(1) 107 return 1 108}