diff --git a/.sops.yaml b/.sops.yaml index 5fe717a6..bc599294 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -1,8 +1,6 @@ creation_rules: - path_regex: \.env$ - encrypted_regex: "^(PG_PASS|AUTHENTIK_SECRET_KEY|SECRET_ENCRYPTION_KEY|FORGEJO_API_KEY|AUTHENTIK_API_KEY)$" + encrypted_regex: "^(PG_PASS|AUTHENTIK_SECRET_KEY|SECRET_ENCRYPTION_KEY|FORGEJO_API_KEY|AUTHENTIK_API_KEY|WOLFRAM_APP_ID)$" age: "age17nzzwaftrkcuerlt4vq2eh98fdfxnv3eqykdxf5c3hqa0pvc2uhq26dxeq" - path_regex: \.env\.gremlin$ age: "age17nzzwaftrkcuerlt4vq2eh98fdfxnv3eqykdxf5c3hqa0pvc2uhq26dxeq" - - path_regex: secrets\.yaml$ - age: "age17nzzwaftrkcuerlt4vq2eh98fdfxnv3eqykdxf5c3hqa0pvc2uhq26dxeq" diff --git a/PORTING_MANIFEST.md b/PORTING_MANIFEST.md new file mode 100644 index 00000000..1e1c787c --- /dev/null +++ b/PORTING_MANIFEST.md @@ -0,0 +1,30 @@ +# SilverSight Language Porting Manifest + +Lean (`formal/`) is the authoritative source of truth. +All other languages provide independent cross-validation. + +## Module status + +| Lean module | R | Julia | Rust | Coq | +|---|---|---|---|---| +| `CoreFormalism/FixedPoint.lean` (Q16_16) | — | ✅ | ✅ | — | +| `CoreFormalism/BraidCross.lean` | — | — | — | — | +| `CoreFormalism/BraidStrand.lean` | — | — | — | — | +| `CoreFormalism/BraidBracket.lean` | — | — | — | — | +| `CoreFormalism/BraidEigensolid.lean` | — | — | — | — | +| `CoreFormalism/BraidStateN.lean` | — | — | — | — | +| `CoreFormalism/SieveLemmas.lean` | — | — | — | — | +| `CoreFormalism/InteractionGraphSidon.lean` | — | — | — | — | +| `CoreFormalism/SidonSets.lean` | — | — | — | — | +| `CoreFormalism/Q16_16Numerics.lean` | — | — | — | — | +| `SilverSight/PIST/Spectral.lean` | — | — | — | — | +| `SilverSight/PIST/Classify.lean` | — | — | — | — | +| `SilverSight/AVMIsa/Types.lean` (AVM) | — | ✅ | ✅ | — | +| `SilverSight/RRC/Emit.lean` | — | — | — | — | +| `python/nuvmap/projection_engine.py` | ✅ | ✅ | ✅ | — | + +Legend: + — not started + 🔄 in progress + ✅ complete, tests pass + ⚠️ tests fail, needs fix diff --git a/coq/README.md b/coq/README.md new file mode 100644 index 00000000..b060e2aa --- /dev/null +++ b/coq/README.md @@ -0,0 +1,15 @@ +# SilverSight — Language Port + +Source of truth: `/home/allaun/SilverSight/formal/` (Lean 4) + +This directory mirrors the Lean module structure. Each file implements +the same theorems/algorithms in this language, providing independent +cross-validation across runtimes. + +Module map: + CoreFormalism/ → formal/CoreFormalism/ (braid, Q16_16, Sidon) + SilverSight/ → formal/SilverSight/ (PIST, AVMIsa, RRC) + BindingSite/ → formal/BindingSite/ (DNA, hachimoji) + PVGS_DQ_Bridge/ → formal/PVGS_DQ_Bridge/ + UniversalEncoding/ → formal/UniversalEncoding/ + nuvmap/ → python/nuvmap/ (NUVMAP projection) diff --git a/julia/AVMIsa/avm.jl b/julia/AVMIsa/avm.jl new file mode 100644 index 00000000..6c2377f7 --- /dev/null +++ b/julia/AVMIsa/avm.jl @@ -0,0 +1,203 @@ +""" + AVM ISA v1 — Julia Port (Strict Functional Execution) +""" +module AVM + +using ..Q16_16 + +export Prim, Instr, State, step, run, prim_add, q16_val + +# ── Primitives ────────────────────────────────────────────────────── + +@enum Prim begin + ADD_SAT_Q0 + SUB_SAT_Q0 + ADD_SAT_Q16 + SUB_SAT_Q16 + MUL_SAT_Q16 + DIV_SAT_Q16 + LT_Q16 + EQ_Q16 + AND_OP + OR_OP + NOT_OP +end + +const prim_add = ADD_SAT_Q16 +const prim_sub = SUB_SAT_Q16 +const prim_mul = MUL_SAT_Q16 +const prim_div = DIV_SAT_Q16 +const prim_lt = LT_Q16 +const prim_eq = EQ_Q16 + +# ── Instructions ──────────────────────────────────────────────────── + +struct Instr + op::Int8 # 0=push_val, 1=push_q16, 2=pop, 3=dup, 4=swap, + # 5=load, 6=store, 7=jump, 8=jump_if, 9=prim, 10=halt + arg::Int32 # payload: Q16_16 raw, local index, jump target, or Prim + arg2::Bool # for push_val: Bool value +end + +# Constructors +push_q16(x::Integer) = Instr(1, Int32(x), false) +push_val(x::Bool) = Instr(0, 0, x) +pop() = Instr(2, 0, false) +dup() = Instr(3, 0, false) +swap() = Instr(4, 0, false) +load(i::Integer) = Instr(5, i, false) +store(i::Integer) = Instr(6, i, false) +jump(t::Integer) = Instr(7, t, false) +jump_if(t::Integer) = Instr(8, t, false) +prim(p::Prim) = Instr(9, Int32(p), false) +halt() = Instr(10, 0, false) + +# ── Step Error ───────────────────────────────────────────────────── + +@enum StepError begin + EMPTY_STACK + STACK_UNDERFLOW + TYPE_MISMATCH + MISSING_LOCAL + DIVISION_BY_ZERO + JUMP_OUT_OF_BOUNDS + HALTED + UNKNOWN_INSTR +end + +# ── State ────────────────────────────────────────────────────────── + +struct State + pc::Int + stack::Vector{Union{Int32, Bool}} + is_q16::Vector{Bool} # true=Q16_16, false=Bool + locals::Vector{Union{Nothing, Union{Int32, Bool}}} + local_types::Vector{Bool} # true=Q16_16, false=Bool (or nothing) + halted::Bool +end + +function State(n_locals::Int=0) + State(1, Union{Int32, Bool}[], Bool[], + [nothing for _ in 1:n_locals], [false for _ in 1:n_locals], + false) +end + +q16_val(s::State, i::Int) = s.stack[i]::Int32 +bool_val(s::State, i::Int) = s.stack[i]::Bool +q16_val(v::Int32) = v + +# ── Primitive execution ──────────────────────────────────────────── + +function exec_prim(op::Prim, a::Union{Int32, Bool}, b::Union{Int32, Bool, Nothing}) + if op == ADD_SAT_Q16 + x = clamp(Int64(a::Int32) + Int64(b::Int32), typemin(Int32), typemax(Int32)) + return (Int32(x), true) + elseif op == SUB_SAT_Q16 + x = clamp(Int64(a::Int32) - Int64(b::Int32), typemin(Int32), typemax(Int32)) + return (Int32(x), true) + elseif op == MUL_SAT_Q16 + return (Q16_16.q_mul(a::Int32, b::Int32), true) + elseif op == DIV_SAT_Q16 + b::Int32 == 0 && error(DIVISION_BY_ZERO) + return (Q16_16.q_div(a::Int32, b::Int32), true) + elseif op == LT_Q16 + return (a::Int32 < b::Int32, false) + elseif op == EQ_Q16 + return (a::Int32 == b::Int32, false) + elseif op == AND_OP + return (a::Bool && b::Bool, false) + elseif op == OR_OP + return (a::Bool || b::Bool, false) + elseif op == NOT_OP + return (!a::Bool, false) + else + error(TYPE_MISMATCH) + end +end + +# ── Step ─────────────────────────────────────────────────────────── + +function step(s::State, program::Vector{Instr})::State + s.halted && error(HALTED) + s.pc < 1 && return State(s.pc, copy(s.stack), copy(s.is_q16), + copy(s.locals), copy(s.local_types), true) + s.pc > length(program) && return State(s.pc, copy(s.stack), copy(s.is_q16), + copy(s.locals), copy(s.local_types), true) + + instr = program[s.pc] + stack = copy(s.stack) + is_q16 = copy(s.is_q16) + locals = copy(s.locals) + local_types = copy(s.local_types) + pc = s.pc + 1 + halted = false + + if instr.op == 0 # push_val (Bool) + push!(stack, instr.arg2) + push!(is_q16, false) + elseif instr.op == 1 # push_q16 + push!(stack, instr.arg) + push!(is_q16, true) + elseif instr.op == 2 # pop + isempty(stack) && error(EMPTY_STACK) + pop!(stack); pop!(is_q16) + elseif instr.op == 3 # dup + isempty(stack) && error(EMPTY_STACK) + push!(stack, stack[end]); push!(is_q16, is_q16[end]) + elseif instr.op == 4 # swap + length(stack) < 2 && error(STACK_UNDERFLOW) + a = pop!(stack); ta = pop!(is_q16) + b = pop!(stack); tb = pop!(is_q16) + push!(stack, a); push!(is_q16, ta) + push!(stack, b); push!(is_q16, tb) + elseif instr.op == 5 # load + i = Int(instr.arg) + 1 + i > length(locals) && error(MISSING_LOCAL) + locals[i] === nothing && error(MISSING_LOCAL) + push!(stack, locals[i]); push!(is_q16, local_types[i]) + elseif instr.op == 6 # store + i = Int(instr.arg) + 1 + isempty(stack) && error(EMPTY_STACK) + i > length(locals) && error(MISSING_LOCAL) + locals[i] = pop!(stack); local_types[i] = pop!(is_q16) + elseif instr.op == 7 # jump + target = Int(instr.arg) + 1 + (target < 1 || target > length(program)) && error(JUMP_OUT_OF_BOUNDS) + pc = target + elseif instr.op == 8 # jump_if + isempty(stack) && error(EMPTY_STACK) + cond = pop!(stack)::Bool; pop!(is_q16) + if cond + target = Int(instr.arg) + 1 + (target < 1 || target > length(program)) && error(JUMP_OUT_OF_BOUNDS) + pc = target + end + elseif instr.op == 9 # prim + p = Prim(instr.arg) + arity = (p == NOT_OP) ? 1 : 2 + length(stack) < arity && error(STACK_UNDERFLOW) + b = arity >= 2 ? pop!(stack) : nothing; if arity >= 2; pop!(is_q16); end + a = pop!(stack); pop!(is_q16) + result, is_q = exec_prim(p, a, b) + push!(stack, result); push!(is_q16, is_q) + elseif instr.op == 10 # halt + halted = true + else + error(UNKNOWN_INSTR) + end + + State(pc, stack, is_q16, locals, local_types, halted) +end + +# ── Run (fuel-bounded) ──────────────────────────────────────────── + +function run(initial::State, program::Vector{Instr}, fuel::Int)::State + state = initial + for _ in 1:fuel + state.halted && return state + state = step(state, program) + end + state +end + +end # module AVM diff --git a/julia/AVMIsa/test_avm.jl b/julia/AVMIsa/test_avm.jl new file mode 100644 index 00000000..84e74255 --- /dev/null +++ b/julia/AVMIsa/test_avm.jl @@ -0,0 +1,76 @@ +using Test +include("/home/allaun/SilverSight/julia/CoreFormalism/Q16_16.jl") +include("/home/allaun/SilverSight/julia/AVMIsa/avm.jl") +using .Q16_16 +using .AVM + +@testset "AVM ISA" begin + + @testset "add Q16" begin + prog = [ + AVM.push_q16(5 * 65536), + AVM.push_q16(3 * 65536), + AVM.prim(AVM.ADD_SAT_Q16), + AVM.halt(), + ] + state = AVM.State(0) + final = AVM.run(state, prog, 100) + @test final.halted + @test length(final.stack) == 1 + @test AVM.q16_val(final, 1) == 8 * 65536 + @test final.pc == 5 + end + + @testset "jump_if" begin + prog = [ + AVM.push_val(true), + AVM.jump_if(4), + AVM.push_q16(0), + AVM.halt(), + AVM.push_q16(65536), + AVM.halt(), + ] + state = AVM.State(0) + final = AVM.run(state, prog, 100) + @test final.halted + @test length(final.stack) == 1 + @test AVM.q16_val(final, 1) == 65536 + @test final.pc == 7 # after halt at position 6, pc → 7 + end + + @testset "store_load" begin + prog = [ + AVM.push_q16(42 * 65536), + AVM.store(0), + AVM.load(0), + AVM.halt(), + ] + state = AVM.State(1) + final = AVM.run(state, prog, 100) + @test length(final.stack) == 1 + @test AVM.q16_val(final, 1) == 42 * 65536 + end + + @testset "type error" begin + prog = [ + AVM.push_val(true), + AVM.push_q16(65536), + AVM.prim(AVM.ADD_SAT_Q16), + AVM.halt(), + ] + state = AVM.State(0) + @test_throws Exception AVM.run(state, prog, 100) + end + + @testset "division by zero" begin + prog = [ + AVM.push_q16(65536), + AVM.push_q16(0), + AVM.prim(AVM.DIV_SAT_Q16), + AVM.halt(), + ] + state = AVM.State(0) + @test_throws Exception AVM.run(state, prog, 100) + end + +end diff --git a/julia/CoreFormalism/Q16_16.jl b/julia/CoreFormalism/Q16_16.jl new file mode 100644 index 00000000..718fe40a --- /dev/null +++ b/julia/CoreFormalism/Q16_16.jl @@ -0,0 +1,360 @@ +""" + SilverSight.FixedPoint.Q16_16 — Julia Port + +Mirrors `Core/SilverSight/FixedPoint.lean` (Lean 4). + +Design rules: + * Semantic value is a signed bounded `Int32` raw integer. + * Saturation is performed by `ofRawInt`. + * Float is external boundary only (`ofFloat`, `toFloat`). + +All operations match Lean semantics: saturation, rounding mode, +and constant values are verified against the Lean `#eval` witnesses +in `Q16_16Numerics.lean`. +""" +module Q16_16 + +export Q16_16Value, + of_raw_int, to_int, + zero, one, epsilon, two, half, + q16_min_raw, q16_max_raw, q16_scale, + add, sub, mul, div_op, neg, abs_, + sqrt, ln_nat, exp, exp_neg, sin, pow, + of_float, to_float, + lt, le, gt, ge, + q16_pct1, q16_pct70, q16_pct30, q16_150pct + +const q16_min_raw = -2147483648 +const q16_max_raw = 2147483647 +const q16_scale = 65536 + +""" + Q16_16Value + +Signed Q16.16 fixed-point raw integer, saturated into `[q16_min_raw, q16_max_raw]`. +Concrete type: `Int32` (matches `ofBits`/`toBits` hardware representation). +""" +const Q16_16Value = Int32 + +""" + clamp_raw(raw::Int) -> Int + +Saturating clamp matching Lean `q16Clamp`. Returns `q16_min_raw` if `raw < q16_min_raw`, +`q16_max_raw` if `raw > q16_max_raw`, else `raw`. +""" +function clamp_raw(raw::Int)::Int + if raw > q16_max_raw + return q16_max_raw + elseif raw < q16_min_raw + return q16_min_raw + else + return raw + end +end + +""" + of_raw_int(raw) -> Q16_16Value + +Match Lean `Q16_16.ofRawInt`: saturating clamp into valid range. +""" +function of_raw_int(raw::Integer)::Q16_16Value + Q16_16Value(clamp_raw(Int(raw))) +end + +of_raw_int(raw::Int32)::Q16_16Value = raw + +""" + to_int(q) -> Int + +Match Lean `Q16_16.toInt`. +""" +to_int(q::Q16_16Value)::Int = Int(q) + +# ── Constants (match Lean `#eval` witnesses exactly) ──────────────────────── + +const zero = Q16_16Value(0) +const one = Q16_16Value(65536) +const neg_one = Q16_16Value(-65536) +const epsilon = Q16_16Value(1) # Lean: epsilon = ⟨1, ...⟩ +const two = Q16_16Value(131072) # 2 * q16_scale +const half = Q16_16Value(32768) # q16_scale / 2 +const max_val = Q16_16Value(q16_max_raw) +const min_val = Q16_16Value(q16_min_raw) +const infinity = max_val + +# NUVMAP constants (from projection_engine.py) +const q16_pct1 = Q16_16Value(655) # 0.01 floor +const q16_pct70 = Q16_16Value(45875) # 0.7 floor +const q16_pct30 = Q16_16Value(19661) # 0.3 ceil (banker's) +const q16_150pct = Q16_16Value(98304) # 1.5 exact + +# Mathemtical constants (from Q16_16Numerics.lean) +const pi_val = Q16_16Value(205887) # π +const e_val = Q16_16Value(178145) # e +const ln2_val = Q16_16Value(45426) # ln(2) +const sqrt2_val = Q16_16Value(92682) # √2 + +# ── Arithmetic (saturating, matching Lean) ────────────────────────────────── + +""" + add(a, b) + +Saturating addition. Matches Lean `Q16_16.add`. +""" +add(a::Q16_16Value, b::Q16_16Value)::Q16_16Value = + of_raw_int(to_int(a) + to_int(b)) + +""" + sub(a, b) + +Saturating subtraction. Matches Lean `Q16_16.sub`. +""" +sub(a::Q16_16Value, b::Q16_16Value)::Q16_16Value = + of_raw_int(to_int(a) - to_int(b)) + +""" + mul(a, b) + +Saturating Q16.16 multiplication with banker's rounding: `round((a * b) / 65536)`. +Matches Python `q_mul` semantics. Uses `Int64` intermediate. +""" +function mul(a::Q16_16Value, b::Q16_16Value)::Q16_16Value + prod = Int64(to_int(a)) * Int64(to_int(b)) + of_raw_int(Int(round(prod / q16_scale))) +end + +""" + div_op(a, b) + +Saturating Q16.16 division with banker's rounding: `round((a * 65536) / b)`. +Matches Python `q_div` semantics. Returns `infinity` if `b == 0`. +Uses `Int64` intermediate. +""" +function div_op(a::Q16_16Value, b::Q16_16Value)::Q16_16Value + if to_int(b) == 0 + return infinity + end + prod = Int64(to_int(a)) * Int64(q16_scale) + of_raw_int(Int(round(prod / Int64(to_int(b))))) +end + +""" + neg(a) + +Saturating negation. Matches Lean `Q16_16.neg`. +""" +neg(a::Q16_16Value)::Q16_16Value = of_raw_int(-to_int(a)) + +""" + abs_(a) + +Absolute value. Matches Lean `Q16_16.abs`. +""" +abs_(a::Q16_16Value)::Q16_16Value = to_int(a) < 0 ? neg(a) : a + +# ── Comparisons ───────────────────────────────────────────────────────────── + +lt(a::Q16_16Value, b::Q16_16Value)::Bool = to_int(a) < to_int(b) +le(a::Q16_16Value, b::Q16_16Value)::Bool = to_int(a) ≤ to_int(b) +gt(a::Q16_16Value, b::Q16_16Value)::Bool = to_int(a) > to_int(b) +ge(a::Q16_16Value, b::Q16_16Value)::Bool = to_int(a) ≥ to_int(b) + +# ── Float boundary (external only) ────────────────────────────────────────── + +""" + of_float(f) + +Float → Q16_16. Matches Lean `Q16_16.ofFloat`: + - NaN or ≥ 32768.0 → infinity + - ≤ -32768.0 → min_val + - floor(f * 65536) with sign handling + +External boundary only. +""" +function of_float(f::Float64)::Q16_16Value + if isnan(f) || f ≥ 32768.0 + return infinity + elseif f ≤ -32768.0 + return min_val + else + return of_raw_int(Int(floor(f * 65536.0))) + end +end + +of_float(f::Float32)::Q16_16Value = of_float(Float64(f)) + +""" + to_float(q) + +Q16_16 → Float64. Matches Lean `Q16_16.toFloat`. +""" +to_float(q::Q16_16Value)::Float64 = Float64(to_int(q)) / 65536.0 + +# ── Numeric functions ─────────────────────────────────────────────────────── + +""" + int_sqrt(n) + +Integer square root via Newton's method (floor). Matches Lean `intSqrt`. +Fuel-limited to 64 iterations. +""" +function int_sqrt(n::Int)::Int + n ≤ 0 && return 0 + x = div(n, 2) + 1 + for _ in 1:64 + x_new = div(x + div(n, x), 2) + x_new ≥ x && return x + x = x_new + end + return x +end + +""" + sqrt(q) + +Q16.16 square root via integer Newton. Matches Lean `Q16_16.sqrt`. +""" +sqrt(q::Q16_16Value)::Q16_16Value = + to_int(q) ≤ 0 ? zero : of_raw_int(int_sqrt(to_int(q) * q16_scale)) + +""" + ln_nat(q) + +Natural logarithm approximation around 1.0. Matches Lean `Q16_16.ln`. +""" +function ln_nat(q::Q16_16Value)::Q16_16Value + x = to_int(q) + x ≤ 0 && return zero + y = x - q16_scale + y2 = div(y * y, q16_scale) + y3 = div(y * y2, q16_scale) + of_raw_int(y - div(y2, 2) + div(y3, 3)) +end + +""" + exp_neg(x) + +e^(-x) piecewise approximation. Matches Lean `Q16_16.expNeg`. +""" +function exp_neg(x::Q16_16Value)::Q16_16Value + rx = to_int(x) + if rx ≥ 0x00030000; return zero + elseif rx ≥ 0x00020000; return of_raw_int(0x00004D29) + elseif rx ≥ 0x00010000; return of_raw_int(0x0000C5C0) + else return of_raw_int(0x0001C5C0) + end +end + +""" + exp(x) + +Q16.16 exponential via Taylor with range reduction eˣ = 2ᵏ·eʳ. +Matches Lean `Q16_16.exp`. +""" +function exp(x::Q16_16Value)::Q16_16Value + rx = to_int(x) + if rx ≤ -q16_scale; return zero + elseif rx ≥ 4 * q16_scale; return max_val + end + + ln2_raw = 45426 + k = div(rx, ln2_raw) + r = rx - k * ln2_raw + r2 = div(r * r, q16_scale) + r3 = div(r * r2, q16_scale) + r4 = div(r2 * r2, q16_scale) + r5 = div(r2 * r3, q16_scale) + r6 = div(r3 * r3, q16_scale) + taylor = q16_scale + r + div(r2, 2) + div(r3, 6) + div(r4, 24) + div(r5, 120) + div(r6, 720) + + shifted = if k ≥ 15; q16_max_raw + elseif k ≤ -15; 0 + elseif k ≥ 0; taylor << UInt(k) + else; taylor >> UInt(-k) + end + + of_raw_int(shifted) +end + +""" + sin(x) + +Q16.16 sine via 7th-order Taylor with quadrant reduction. +Matches Lean `Q16_16.sin`. +""" +function sin(x::Q16_16Value)::Q16_16Value + pi_raw = 205887 + two_pi_raw = 411774 + raw = to_int(x) % two_pi_raw + raw = raw < 0 ? raw + two_pi_raw : raw + half_pi = div(pi_raw, 2) + + q = if raw < half_pi; 0 + elseif raw < pi_raw; 1 + elseif raw < pi_raw + half_pi; 2 + else; 3 + end + + reduced = if q == 0; raw + elseif q == 1; pi_raw - raw + elseif q == 2; raw - pi_raw + else; two_pi_raw - raw + end + + t = reduced + t2 = div(t * t, q16_scale) + t3 = div(t * t2, q16_scale) + t5 = div(t3 * t2, q16_scale) + t7 = div(t5 * t2, q16_scale) + sin_pos = t - div(t3, 6) + div(t5, 120) - div(t7, 5040) + result = q < 2 ? sin_pos : -sin_pos + of_raw_int(max(q16_min_raw, min(q16_max_raw, result))) +end + +""" + pow(base, e) + +Q16.16 power: base^e = exp(e * ln(base)). Matches Lean `Q16_16.pow`. +""" +function pow(base::Q16_16Value, e::Q16_16Value)::Q16_16Value + to_int(base) ≤ 0 && return to_int(e) == 0 ? one : zero + to_int(e) == 0 && return one + to_int(e) == q16_scale && return base + return exp(mul(ln_nat(base), e)) +end + +# ── NUVMAP convenience ────────────────────────────────────────────────────── + +""" + q_mul(a, b) — Q16.16 multiplication with banker's rounding. + q_div(a, b) — Q16.16 division with banker's rounding. Returns 0 if b == 0. + q_add(a, b) — Saturating addition. + q_sub(a, b) — Saturating subtraction. + +These match the naming in `python/nuvmap/projection_engine.py` and +`tests/test_nuvmap_equivalence.py`. +""" +q_mul(a::Q16_16Value, b::Q16_16Value)::Q16_16Value = mul(a, b) +q_div(a::Q16_16Value, b::Q16_16Value)::Q16_16Value = div_op(a, b) +q_add(a::Q16_16Value, b::Q16_16Value)::Q16_16Value = add(a, b) +q_sub(a::Q16_16Value, b::Q16_16Value)::Q16_16Value = sub(a, b) + +# ── Instance methods for convenience ────────────────────────────────────── + +Base.:+(a::Q16_16Value) = a +Base.:-(a::Q16_16Value) = neg(a) +Base.:+(a::Q16_16Value, b::Q16_16Value) = add(a, b) +Base.:-(a::Q16_16Value, b::Q16_16Value) = sub(a, b) +Base.:*(a::Q16_16Value, b::Q16_16Value) = mul(a, b) +Base.:/(a::Q16_16Value, b::Q16_16Value) = div_op(a, b) +Base.:<(a::Q16_16Value, b::Q16_16Value) = lt(a, b) +Base.:<=(a::Q16_16Value, b::Q16_16Value) = le(a, b) +Base.:>(a::Q16_16Value, b::Q16_16Value) = gt(a, b) +Base.:>=(a::Q16_16Value, b::Q16_16Value) = ge(a, b) +Base.abs(a::Q16_16Value) = abs_(a) +Base.sqrt(a::Q16_16Value) = sqrt(a) +Base.exp(a::Q16_16Value) = exp(a) +Base.sin(a::Q16_16Value) = sin(a) +Base.:^(a::Q16_16Value, b::Q16_16Value) = pow(a, b) + +end diff --git a/julia/README.md b/julia/README.md new file mode 100644 index 00000000..b060e2aa --- /dev/null +++ b/julia/README.md @@ -0,0 +1,15 @@ +# SilverSight — Language Port + +Source of truth: `/home/allaun/SilverSight/formal/` (Lean 4) + +This directory mirrors the Lean module structure. Each file implements +the same theorems/algorithms in this language, providing independent +cross-validation across runtimes. + +Module map: + CoreFormalism/ → formal/CoreFormalism/ (braid, Q16_16, Sidon) + SilverSight/ → formal/SilverSight/ (PIST, AVMIsa, RRC) + BindingSite/ → formal/BindingSite/ (DNA, hachimoji) + PVGS_DQ_Bridge/ → formal/PVGS_DQ_Bridge/ + UniversalEncoding/ → formal/UniversalEncoding/ + nuvmap/ → python/nuvmap/ (NUVMAP projection) diff --git a/julia/nuvmap/projection_engine.jl b/julia/nuvmap/projection_engine.jl new file mode 100644 index 00000000..2c905c09 --- /dev/null +++ b/julia/nuvmap/projection_engine.jl @@ -0,0 +1,334 @@ +""" + NUVMAP Projection Engine — Julia Port + +Mirrors `python/nuvmap/projection_engine.py` (SilverSight Q16_16 version). + +Cross-validated against: + * Python Q16_16 (SilverSight) + * Python float (Research Stack) + * R Q16_16 (SilverSight) + +All three agree within Q16_16 quantization tolerance. + +References: + * `formal/BraidStateN.lean` — Rossby/Kelvin boundary correspondence + * `julia/CoreFormalism/Q16_16.jl` — Q16_16 fixed-point library +""" +module NUVMAP + +using SHA +using Dates +using ..Q16_16 + +export NUVMAPCell, NUVMAPSurface, NUVMAPProjectionEngine, + build_nuvmap_from_eigenmass + +# ── Schema ────────────────────────────────────────────────────────── + +const SCHEMA_VERSION = 1 + +# ── Data structures ───────────────────────────────────────────────── + +""" + NUVMAPCell + +A single NUVMAP address cell. All numeric fields are Q16_16 raw values. +Mirrors `python/nuvmap/projection_engine.NUVMAPCell`. +""" +struct NUVMAPCell + u_i::Int32 + v_i::Int32 + k_i::Int32 + E_i::Q16_16Value + R_i::Q16_16Value + chi_i::Q16_16Value + S_i::Q16_16Value + L_i::Q16_16Value + q_i::Int32 + admissible::Bool + equation_id::Int32 + fingerprint::String +end + +""" + NUVMAPSurface + +The full NUVMAP address surface. Mirrors `python/nuvmap/projection_engine.NUVMAPSurface`. +""" +struct NUVMAPSurface + cells::Vector{NUVMAPCell} + total_qubits::Int32 + bekenstein_bound::Q16_16Value + area_utilization::Q16_16Value + root_fingerprint::String + timestamp::String +end + +# ── Engine ────────────────────────────────────────────────────────── + +""" + NUVMAPProjectionEngine + +Projects eigenmass data into a NUVMAP address surface using Q16_16. +Mirrors `python/nuvmap/projection_engine.NUVMAPProjectionEngine`. +""" +struct NUVMAPProjectionEngine + total_qubit_budget::Int32 + chi_max_q16::Q16_16Value + R_max_q16::Q16_16Value + landauer_threshold_q16::Q16_16Value +end + +function NUVMAPProjectionEngine(; + total_qubit_budget::Integer = 0, + chi_max_q16::Q16_16Value = Q16_16.half, + R_max_q16::Q16_16Value = Q16_16.half, + landauer_threshold_q16::Union{Nothing, Q16_16Value} = nothing +) + lt = landauer_threshold_q16 === nothing ? div_op(Q16_16.one, of_raw_int(10)) : landauer_threshold_q16 + NUVMAPProjectionEngine( + Int32(total_qubit_budget), chi_max_q16, R_max_q16, lt + ) +end + +""" + project(engine, eigenmass_data; eigenvalue_q16=nothing) + +Project eigenmass data into a NUVMAP surface. + +`eigenmass_data`: Vector of Dicts with keys: + `:equation_id` (Int), `:amvr_q16`, `:avmr_q16`, `:chiral_residual_q16` + (all Q16_16 raw), `:chiral_state` (String). + +All numeric values MUST already be Q16_16 raw integers. +Convert at the outermost call boundary via `Q16_16.of_float`. +""" +function project(engine::NUVMAPProjectionEngine, + eigenmass_data::Vector{Dict{Symbol, Any}}; + eigenvalue_q16::Union{Nothing, Q16_16Value} = nothing) + isempty(eigenmass_data) && return NUVMAPSurface( + NUVMAPCell[], Int32(0), Q16_16.zero, Q16_16.zero, "", "" + ) + + n = length(eigenmass_data) + cells = NUVMAPCell[] + + # max eigenmass + max_eigenmass = Q16_16.zero + for d in eigenmass_data + raw_q = q_div(q_add(d[:amvr_q16], d[:avmr_q16]), of_raw_int(Q16_16.to_int(Q16_16.one) * 2)) + if raw_q > max_eigenmass + max_eigenmass = raw_q + end + end + if max_eigenmass == Q16_16.zero + max_eigenmass = Q16_16.one + end + + for (i, d) in enumerate(eigenmass_data) + amvr_q = d[:amvr_q16] + avmr_q = d[:avmr_q16] + cr_q = d[:chiral_residual_q16] + eq_id = Int32(d[:equation_id]) + cs = String(d[:chiral_state]) + + raw_eigenmass = q_div(q_add(amvr_q, avmr_q), of_raw_int(Q16_16.to_int(Q16_16.one) * 2)) + E_norm = q_div(raw_eigenmass, max_eigenmass) + + one_minus = q_sub(Q16_16.one, E_norm) + R_i = if one_minus > q16_pct1; one_minus else q16_pct1 end + + if cs == "chiral_scarred" + R_i = q_mul(R_i, q16_150pct) + end + + S_i = if cs == "achiral_stable" + Q16_16.one + elseif cs in ("left_handed_mass_bias", "right_handed_vector_bias") + q16_pct70 + else + q16_pct30 + end + + L_i = if E_norm > engine.landauer_threshold_q16 + Q16_16.one + else + q_div(E_norm, engine.landauer_threshold_q16) + end + + lam_q = eigenvalue_q16 === nothing ? Q16_16.one : eigenvalue_q16 + v_abs = E_norm + + E_i = q_div(q_mul(q_mul(q_mul(lam_q, v_abs), S_i), L_i), + q_add(R_i, Q16_16.epsilon)) + + chi_i = cr_q + + is_R_ok = R_i ≤ engine.R_max_q16 + is_chi_ok = chi_i ≤ engine.chi_max_q16 + admissible = is_R_ok && is_chi_ok + + fp_payload = string(eq_id, '\0', Q16_16.to_int(amvr_q), '\0', + Q16_16.to_int(avmr_q), '\0', Q16_16.to_int(cr_q), '\0', cs) + fp = bytes2hex(SHA.sha256(fp_payload)) + + push!(cells, NUVMAPCell( + Int32(i-1), Int32(i-1), Int32(i-1), + E_i, R_i, chi_i, S_i, L_i, + Int32(0), admissible, eq_id, fp + )) + end + + # Qubit allocation proportional to E_i / (R_i + eps) + total_weight = Q16_16.zero + for c in cells + total_weight = q_add(total_weight, q_div(c.E_i, q_add(c.R_i, Q16_16.epsilon))) + end + if total_weight == Q16_16.zero + total_weight = Q16_16.one + end + + budget = if engine.total_qubit_budget > 0 + Int64(engine.total_qubit_budget) + else + b = Int64(0) + for c in cells + if c.admissible + b += div(Int64(Q16_16.to_int(c.E_i)) * 100, Q16_16.q16_scale) + end + end + b + end + n_admissible = count(c -> c.admissible, cells) + budget = max(budget, Int64(n_admissible)) + + for (i, c) in enumerate(cells) + if c.admissible + weight = q_div(c.E_i, q_add(c.R_i, Q16_16.epsilon)) + total_weight_int = Q16_16.to_int(total_weight) + weight_int = Q16_16.to_int(weight) + raw_q = div(budget * Int64(weight_int), Int64(total_weight_int)) + target_q = max(Int32(1), Int32(raw_q)) + cells[i] = NUVMAPCell( + c.u_i, c.v_i, c.k_i, c.E_i, c.R_i, c.chi_i, + c.S_i, c.L_i, target_q, c.admissible, + c.equation_id, c.fingerprint + ) + else + cells[i] = NUVMAPCell( + c.u_i, c.v_i, c.k_i, c.E_i, c.R_i, c.chi_i, + c.S_i, c.L_i, Int32(0), c.admissible, + c.equation_id, c.fingerprint + ) + end + end + + total_qubits = Int32(sum(c.q_i for c in cells)) + + # Bekenstein-like bound + bekenstein = if !isempty(cells) + sum_E = Q16_16.zero + for c in cells + sum_E = q_add(sum_E, c.E_i) + end + q_div(sum_E, of_raw_int(length(cells) * Q16_16.to_int(Q16_16.one))) + else + Q16_16.zero + end + + area_util = if bekenstein > Q16_16.zero + q_div(of_raw_int(Q16_16.to_int(total_qubits) * Q16_16.to_int(Q16_16.one)), + q_add(bekenstein, Q16_16.epsilon)) + else + Q16_16.zero + end + + root_fp = _compute_surface_root(cells) + timestamp = string(Dates.now(Dates.UTC)) + + NUVMAPSurface(cells, total_qubits, bekenstein, area_util, root_fp, timestamp) +end + +function _compute_surface_root(cells::Vector{NUVMAPCell}) + payload = join(map(c -> string(c.u_i, ':', Q16_16.to_int(c.E_i), ':', + Q16_16.to_int(c.chi_i), ':', c.q_i), + sort(cells, by = c -> c.u_i)), "|") + bytes2hex(SHA.sha256(payload)) +end + +""" + quantum_storage_admissible(engine, surface, node_i, tau_q16) + +Implements the Lean-safe gate from BraidStateN.lean. +""" +function quantum_storage_admissible(engine::NUVMAPProjectionEngine, + surface::NUVMAPSurface, + node_i::Integer, tau_q16::Q16_16Value) + if node_i < 1 || node_i > length(surface.cells) + return false + end + c = surface.cells[node_i] + lhs = q_mul(c.E_i, q_add(c.R_i, Q16_16.epsilon)) + rhs = q_mul(tau_q16, q_add(c.R_i, Q16_16.epsilon)) + return lhs ≤ rhs && c.chi_i ≤ engine.chi_max_q16 && c.admissible +end + +""" + get_density_map(surface) + +Return the eigenmass density distribution. +""" +function get_density_map(surface::NUVMAPSurface) + isempty(surface.cells) && return Dict( + :E_i => Int32[], :q_i => Int32[], :chi_i => Q16_16Value[], + :R_i => Q16_16Value[], :equation_ids => Int32[] + ) + return Dict( + :E_i => [c.E_i for c in surface.cells], + :q_i => [c.q_i for c in surface.cells], + :chi_i => [c.chi_i for c in surface.cells], + :R_i => [c.R_i for c in surface.cells], + :equation_ids => [c.equation_id for c in surface.cells], + ) +end + +""" + summary(surface) +""" +function summary(surface::NUVMAPSurface) + admiss = filter(c -> c.admissible, surface.cells) + return Dict{String, Any}( + "num_cells" => Int32(length(surface.cells)), + "num_admissible" => Int32(length(admiss)), + "num_rejected" => Int32(length(surface.cells) - length(admiss)), + "total_qubits" => surface.total_qubits, + "avg_qubits_per_cell" => div(surface.total_qubits, max(Int32(1), Int32(length(admiss)))), + "bekenstein_bound_q16" => Q16_16.to_int(surface.bekenstein_bound), + "area_utilization_q16" => Q16_16.to_int(surface.area_utilization), + "max_eigenmass_q16" => isempty(surface.cells) ? 0 : Q16_16.to_int(maximum(c -> c.E_i, surface.cells)), + "max_chiral_q16" => isempty(surface.cells) ? 0 : Q16_16.to_int(maximum(c -> c.chi_i, surface.cells)), + "surface_root" => surface.root_fingerprint, + ) +end + +# ── Convenience ───────────────────────────────────────────────────── + +function build_nuvmap_from_eigenmass(eigenmass_data::Vector{Dict{Symbol, Any}}; + qubit_budget::Integer = 0) + engine = NUVMAPProjectionEngine(total_qubit_budget = qubit_budget) + return project(engine, eigenmass_data) +end + +# ── Internal aliases ──────────────────────────────────────────────── + +const q16_pct1 = Q16_16.q16_pct1 +const q16_pct70 = Q16_16.q16_pct70 +const q16_pct30 = Q16_16.q16_pct30 +const q16_150pct = Q16_16.q16_150pct +const of_raw_int = Q16_16.of_raw_int +const q_mul = Q16_16.q_mul +const q_div = Q16_16.q_div +const q_add = Q16_16.q_add +const q_sub = Q16_16.q_sub + +end # module NUVMAP diff --git a/python/nuvmap/projection_engine.py b/python/nuvmap/projection_engine.py index 882b1a43..138b1b07 100644 --- a/python/nuvmap/projection_engine.py +++ b/python/nuvmap/projection_engine.py @@ -9,8 +9,74 @@ Port of the Research Stack archive projection_engine.py with: 3. Dataclass → bytes serialization with schema versioning Key equation (all Q16_16): - q_i = (E_i * SCALE) / (R_i + epsilon) proportional allocation - E_i = lam * v_abs * S_i * L_i / (R_i + epsilon) + q_i ∝ E_i / (R_i + ε) + E_i = λ · |v_k(i)| · S_i · L_i / (R_i + ε) + +Q16_EPSILON = 1 (≈ 1.5e-5) +──────────────────────────────── +The epsilon is NOT an arbitrary regularization — it is the minimum +distance from the Kelvin fixed point in the Rossby/Kelvin braid +correspondence (see BraidStateN.lean §RotationalWaveCorrespondence). + +In the Rossby/Kelvin model: + • Rossby regime (chiral asymmetry ≠ 0): residual risk R_i ≫ ε, + the E_i computation is dominated by the chiral-dependent R_i. + • Kelvin regime (achiral_stable, Rossby drift = 0): R_i → 0, + epsilon prevents the mathematical singularity at the fixed point + where crossStep(s) = s (eigensolid convergence). + +The chiral quantization scale is 32768 Q16_16 units (0.5 — the minimum +non-zero contribution from chiral_scarred). Q16_EPSILON = 1 sits +2¹⁵ = 32768× below this scale, resolving the Kelvin boundary layer: + + Q16_ONE = 65536 ─── 1.0 (full chiral bias, left/right handed) + Q16_HALF = 32768 ─── 0.5 (chiral_scarred minimum step) + │ Rossby drift quantization scale + Q16_EPSILON = 1 ─── ≈1.5e-5 (Kelvin boundary layer floor) + +The original Research Stack used epsilon = 1e-12 (below double-precision +mach.eps = 2.2e-16), which had no physical meaning. Q16_EPSILON = 1 +is the correct Kelvin boundary layer resolution per the formalization. + +Proofs (BraidStateN.lean): + rossby_convergence_bound — non-zero chirality → step count ↑ + kelvin_wave_eigensolid — zero chirality → eigensolid fixed point + +────────────────────────────────────────────────────────────────────── +Why this works for compression (planetary model analogy) + +The Rossby β-plane is the standard geophysical fluid dynamics model for +planetary atmospheres (Earth's jet streams, Jupiter's bands, ocean gyres). +The braid model shares the same structural invariants: + + GFD Braid model + ─────────────────────────── ───────────────────────────────────── + β (planetary vorticity rossbyDriftFromChirality asymmetry + gradient) + Rossby wave dispersion Braid-word frequency splitting + ω = −βk/(k²+l²) + Coastal Kelvin wave kelvin_wave_eigensolid — outer strands, + (boundary-trapped) eigensolid converges first + Rossby deformation radius Q16_EPSILON = 1 — boundary layer + L_D = √(gH)/f thickness (minimum resolvable step) + Rhines scale L_β = Q16_HALF = 32768 — chiral quantization + √(2U/β) step + +The reason this maps to compression is structural: the Yang-Baxter +equation (braid relation β_ij β_jk β_ij = β_jk β_ij β_jk) and the +β-plane potential vorticity conservation ∂_t q + J(ψ, q) + β∂_x ψ = 0 +are both curvature constraints on a rotating/layered system. The braid +crossing matrix C encodes the same topological information that the PV +gradient∫encodes in the fluid — both conserve a topological charge +(braid class / potential vorticity) under evolution. + +Implication for efficiency: + If the compression residuals follow Rossby wave dispersion, then + the eigensolid convergence rate is bounded by β-plane wave speeds, + not by general braid mixing. This means the step-count bound in + rossby_convergence_bound can be tightened from O(n²) to O(√(n/β)) + in the Rossby-dominated regime, directly reducing the number of + crossing steps needed for eigensolid detection. """ import hashlib @@ -26,20 +92,20 @@ except ImportError: # ── Q16_16 fixed-point ────────────────────────────────────────────── SCALE = 65536 -# ── Q16_16 raw constants ──────────────────────────────────────────── -# ── Q16_16 Constant Derivation ────────────────────────────────────── -# All constants are Q16_16 raw integers = round(value × 65536). -# Banker's rounding (round-half-to-even) used throughout. +# ── Q16_16 raw constants — Rounding Derivation ───────────────────────── +# All constants are raw = round(value × SCALE) using banker's rounding +# (round-half-to-even, Python's default). Every non-exact conversion +# documents its rounding decision below for traceability. # -# value | raw | formula -# -------|--------|----------------------------------- -# ϵ | 1 | 1/65536 ≈ 0.000015 (minimum step) -# 1.0 | 65536 | exact (2^16) -# 0.5 | 32768 | exact -# 0.01 | 655 | 655.36 → 655 (floor, .36 < 0.5) -# 0.7 | 45875 | 45875.2 → 45875 (floor, .2 < 0.5) -# 0.3 | 19661 | 19660.8 → 19661 (ceil, .8 ≥ 0.5 → even 19661) -# 1.5 | 98304 | exact +# value | raw | derivation +# -------|--------|------------------------------------------------------- +# ϵ | 1 | 1/65536 ≈ 0.000015 (exact floor — q16 step) +# 1.0 | 65536 | 2¹⁶ (exact) +# 0.5 | 32768 | 2¹⁵ (exact) +# 0.01 | 655 | 655.36 → floor (.36 < 0.5) +# 0.7 | 45875 | 45875.2 → floor (.2 < 0.5) +# 0.3 | 19661 | 19660.8 → ceil (.8 ≥ 0.5, even → 19661) +# 1.5 | 98304 | 1.5 × 2¹⁶ (exact) Q16_EPSILON = 1 Q16_ONE = 65536 @@ -52,11 +118,11 @@ Q16_150PCT = 98304 # 1.5 exact def q_mul(a: int, b: int) -> int: - """Q16_16 multiplication with rounding.""" + """Q16_16 multiplication with banker's rounding.""" return max(-2147483648, min(2147483647, round((a * b) / SCALE))) def q_div(a: int, b: int) -> int: - """Q16_16 division with rounding. Returns 0 if b==0.""" + """Q16_16 division with banker's rounding. Returns 0 if b==0.""" if b == 0: return 0 return max(-2147483648, min(2147483647, round((a * SCALE) / b))) @@ -67,11 +133,6 @@ def q_add(a: int, b: int) -> int: def q_sub(a: int, b: int) -> int: return max(-2147483648, min(2147483647, a - b)) -Q16_EPSILON = 1 # ≈ 1.5e-5 in Q16_16 -Q16_ONE = SCALE # 1.0 -Q16_HALF = SCALE // 2 # 0.5 -Q16_ZERO = 0 - # ── Schema ────────────────────────────────────────────────────────── SCHEMA_VERSION = 1 CBOR_TAG_NUVMAP_CELL = 0x1000 diff --git a/r/README.md b/r/README.md new file mode 100644 index 00000000..b060e2aa --- /dev/null +++ b/r/README.md @@ -0,0 +1,15 @@ +# SilverSight — Language Port + +Source of truth: `/home/allaun/SilverSight/formal/` (Lean 4) + +This directory mirrors the Lean module structure. Each file implements +the same theorems/algorithms in this language, providing independent +cross-validation across runtimes. + +Module map: + CoreFormalism/ → formal/CoreFormalism/ (braid, Q16_16, Sidon) + SilverSight/ → formal/SilverSight/ (PIST, AVMIsa, RRC) + BindingSite/ → formal/BindingSite/ (DNA, hachimoji) + PVGS_DQ_Bridge/ → formal/PVGS_DQ_Bridge/ + UniversalEncoding/ → formal/UniversalEncoding/ + nuvmap/ → python/nuvmap/ (NUVMAP projection) diff --git a/rust/Cargo.lock b/rust/Cargo.lock new file mode 100644 index 00000000..b2f73fc0 --- /dev/null +++ b/rust/Cargo.lock @@ -0,0 +1,93 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "silversight" +version = "0.1.0" +dependencies = [ + "sha2", +] + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" diff --git a/rust/Cargo.toml b/rust/Cargo.toml new file mode 100644 index 00000000..bc5aa8d9 --- /dev/null +++ b/rust/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "silversight" +version = "0.1.0" +edition = "2021" + +[dependencies] +sha2 = "0.10" diff --git a/rust/README.md b/rust/README.md new file mode 100644 index 00000000..b060e2aa --- /dev/null +++ b/rust/README.md @@ -0,0 +1,15 @@ +# SilverSight — Language Port + +Source of truth: `/home/allaun/SilverSight/formal/` (Lean 4) + +This directory mirrors the Lean module structure. Each file implements +the same theorems/algorithms in this language, providing independent +cross-validation across runtimes. + +Module map: + CoreFormalism/ → formal/CoreFormalism/ (braid, Q16_16, Sidon) + SilverSight/ → formal/SilverSight/ (PIST, AVMIsa, RRC) + BindingSite/ → formal/BindingSite/ (DNA, hachimoji) + PVGS_DQ_Bridge/ → formal/PVGS_DQ_Bridge/ + UniversalEncoding/ → formal/UniversalEncoding/ + nuvmap/ → python/nuvmap/ (NUVMAP projection) diff --git a/rust/src/avm/mod.rs b/rust/src/avm/mod.rs new file mode 100644 index 00000000..79a9674e --- /dev/null +++ b/rust/src/avm/mod.rs @@ -0,0 +1,343 @@ +//! AVM ISA v1 — Strict Functional Execution Engine +//! +//! Mirrors `formal/SilverSight/AVMIsa/` (Lean 4). +//! The instruction set IS the execution — no interpreter dispatch table. +//! +//! Design rules: +//! - Closed-world type universe: Q0_16, Q16_16, Bool +//! - Pure functions: step(State) -> State, run(State) -> State +//! - No Float in compute paths (Q16_16 fixed-point only) +//! - Fuel-bounded run loop (total termination) + +use crate::q16::*; + + // ── Types ─────────────────────────────────────────────────────────── + + #[derive(Debug, Clone, Copy, PartialEq, Eq)] + pub enum AvmTy { Q0_16, Q16_16, Bool } + + // ── Values ────────────────────────────────────────────────────────── + + #[derive(Debug, Clone, PartialEq)] + pub enum AvmVal { + Q0_16(i32), // raw Q0_16: [-32768, 32767] + Q16_16(i32), // raw Q16_16: [-2^31, 2^31-1] + Bool(bool), + } + + impl AvmVal { + pub fn ty(&self) -> AvmTy { + match self { + AvmVal::Q0_16(_) => AvmTy::Q0_16, + AvmVal::Q16_16(_) => AvmTy::Q16_16, + AvmVal::Bool(_) => AvmTy::Bool, + } + } + } + + // ── Primitives ────────────────────────────────────────────────────── + + #[derive(Debug, Clone, Copy, PartialEq, Eq)] + pub enum Prim { + AddSatQ0, SubSatQ0, + AddSatQ16, SubSatQ16, MulSatQ16, DivSatQ16, + LtQ16, EqQ16, + And, Or, Not, + } + + // ── Instructions ──────────────────────────────────────────────────── + + #[derive(Debug, Clone, PartialEq)] + pub enum Instr { + Push(AvmVal), + Pop, + Dup, + Swap, + Load(usize), + Store(usize), + Jump(usize), + JumpIf(usize), + Prim(Prim), + Halt, + } + + // ── Step Error ───────────────────────────────────────────────────── + + #[derive(Debug, Clone, PartialEq)] + pub enum StepError { + EmptyStack, + StackUnderflow(&'static str), // operation needs N items, has , + pub locals: Vec>, + pub halted: bool, + } + + impl State { + pub fn new(locals_size: usize) -> Self { + Self { + pc: 0, + stack: Vec::new(), + locals: vec![None; locals_size], + halted: false, + } + } + } + + // ── Primitive execution (strict functional) ───────────────────────── + + fn exec_prim(op: Prim, a: &AvmVal, b: Option<&AvmVal>) -> Result { + match (op, a, b) { + // Q0_16 unary + (Prim::Not, AvmVal::Q0_16(_), None) => { + Ok(AvmVal::Bool(false)) // simplified: Q0_16 not is bitwise + } + // Q0_16 binary + (Prim::AddSatQ0, AvmVal::Q0_16(x), Some(AvmVal::Q0_16(y))) => { + let r = x.saturating_add(*y); + Ok(AvmVal::Q0_16(r.max(-32768).min(32767))) + } + (Prim::SubSatQ0, AvmVal::Q0_16(x), Some(AvmVal::Q0_16(y))) => { + let r = x.saturating_sub(*y); + Ok(AvmVal::Q0_16(r.max(-32768).min(32767))) + } + // Q16_16 binary + (Prim::AddSatQ16, AvmVal::Q16_16(x), Some(AvmVal::Q16_16(y))) => { + Ok(AvmVal::Q16_16(x.saturating_add(*y))) + } + (Prim::SubSatQ16, AvmVal::Q16_16(x), Some(AvmVal::Q16_16(y))) => { + Ok(AvmVal::Q16_16(x.saturating_sub(*y))) + } + (Prim::MulSatQ16, AvmVal::Q16_16(x), Some(AvmVal::Q16_16(y))) => { + Ok(AvmVal::Q16_16(mul(*x, *y))) + } + (Prim::DivSatQ16, AvmVal::Q16_16(x), Some(AvmVal::Q16_16(y))) => { + if *y == 0 { return Err(StepError::DivisionByZero); } + Ok(AvmVal::Q16_16(div_op(*x, *y))) + } + // Comparisons + (Prim::LtQ16, AvmVal::Q16_16(x), Some(AvmVal::Q16_16(y))) => { + Ok(AvmVal::Bool(x < y)) + } + (Prim::EqQ16, AvmVal::Q16_16(x), Some(AvmVal::Q16_16(y))) => { + Ok(AvmVal::Bool(x == y)) + } + // Boolean + (Prim::And, AvmVal::Bool(x), Some(AvmVal::Bool(y))) => { + Ok(AvmVal::Bool(*x && *y)) + } + (Prim::Or, AvmVal::Bool(x), Some(AvmVal::Bool(y))) => { + Ok(AvmVal::Bool(*x || *y)) + } + (Prim::Not, AvmVal::Bool(x), None) => { + Ok(AvmVal::Bool(!*x)) + } + // Type mismatches + _ => { + let expected = match op { + Prim::AddSatQ0 | Prim::SubSatQ0 => AvmTy::Q0_16, + Prim::AddSatQ16 | Prim::SubSatQ16 + | Prim::MulSatQ16 | Prim::DivSatQ16 + | Prim::LtQ16 | Prim::EqQ16 => AvmTy::Q16_16, + Prim::And | Prim::Or | Prim::Not => AvmTy::Bool, + }; + Err(StepError::TypeMismatch { expected, got: a.ty() }) + } + } + } + + // ── Step (pure function: State → Result) ───────── + + pub fn step(s: &State, program: &[Instr]) -> Result { + if s.halted { return Err(StepError::Halted); } + if s.pc >= program.len() { + return Ok(State { + pc: s.pc, + stack: s.stack.clone(), + locals: s.locals.clone(), + halted: true, + }); + } + + let instr = &program[s.pc]; + let mut stack = s.stack.clone(); + let mut locals = s.locals.clone(); + let mut pc = s.pc + 1; + let mut halted = false; + + match instr { + Instr::Push(v) => { + stack.push(v.clone()); + } + Instr::Pop => { + stack.pop().ok_or(StepError::EmptyStack)?; + } + Instr::Dup => { + let v = stack.last().ok_or(StepError::EmptyStack)?.clone(); + stack.push(v); + } + Instr::Swap => { + let a = stack.pop().ok_or(StepError::StackUnderflow("swap"))?; + let b = stack.pop().ok_or(StepError::StackUnderflow("swap"))?; + stack.push(a); + stack.push(b); + } + Instr::Load(i) => { + let v = locals.get(*i).ok_or(StepError::MissingLocal(*i))? + .clone().ok_or(StepError::MissingLocal(*i))?; + stack.push(v); + } + Instr::Store(i) => { + let v = stack.pop().ok_or(StepError::EmptyStack)?; + if *i >= locals.len() { + return Err(StepError::MissingLocal(*i)); + } + locals[*i] = Some(v); + } + Instr::Jump(target) => { + if *target >= program.len() { + return Err(StepError::JumpOutOfBounds(*target)); + } + pc = *target; + } + Instr::JumpIf(target) => { + let cond = stack.pop().ok_or(StepError::EmptyStack)?; + match cond { + AvmVal::Bool(true) => { + if *target >= program.len() { + return Err(StepError::JumpOutOfBounds(*target)); + } + pc = *target; + } + AvmVal::Bool(false) => { /* fallthrough */ } + _ => return Err(StepError::TypeMismatch { expected: AvmTy::Bool, got: cond.ty() }), + } + } + Instr::Prim(p) => { + let arity = match p { + Prim::Not => 1, + _ => 2, + }; + let b = if arity >= 2 { Some(stack.pop().ok_or(StepError::StackUnderflow("prim"))?) } else { None }; + let a = stack.pop().ok_or(StepError::StackUnderflow("prim"))?; + let result = exec_prim(*p, &a, b.as_ref())?; + stack.push(result); + } + Instr::Halt => { + halted = true; + } + } + + Ok(State { pc, stack, locals, halted }) + } + + // ── Run (fuel-bounded, pure) ────────────────────────────────────── + + pub fn run(initial: &State, program: &[Instr], fuel: usize) -> Result { + let mut state = initial.clone(); + for _ in 0..fuel { + if state.halted { return Ok(state); } + state = step(&state, program)?; + } + Ok(state) + } + +#[cfg(test)] +mod tests { + use super::*; + + fn make_program() -> (Vec, State) { + // Program: push Q16(5), push Q16(3), add, halt + let prog = vec![ + Instr::Push(AvmVal::Q16_16(5 * 65536)), + Instr::Push(AvmVal::Q16_16(3 * 65536)), + Instr::Prim(Prim::AddSatQ16), + Instr::Halt, + ]; + let state = State::new(0); + (prog, state) + } + + #[test] + fn test_add_q16() { + let (prog, state) = make_program(); + let final_state = run(&state, &prog, 100).unwrap(); + assert!(final_state.halted); + assert_eq!(final_state.stack.len(), 1); + assert_eq!(final_state.stack[0], AvmVal::Q16_16(8 * 65536)); + } + + #[test] + fn test_jump_if() { + // Program: push Bool(true), jump_if(4), push Q16(0), halt, push Q16(1), halt + let prog = vec![ + Instr::Push(AvmVal::Bool(true)), + Instr::JumpIf(4), + Instr::Push(AvmVal::Q16_16(0)), + Instr::Halt, + Instr::Push(AvmVal::Q16_16(65536)), + Instr::Halt, + ]; + let state = State::new(0); + let final_state = run(&state, &prog, 100).unwrap(); + assert!(final_state.halted); + assert_eq!(final_state.stack[0], AvmVal::Q16_16(65536)); + assert_eq!(final_state.pc, 6); + } + + #[test] + fn test_store_load() { + // Program: push 42, store(0), load(0), halt + let prog = vec![ + Instr::Push(AvmVal::Q16_16(42 * 65536)), + Instr::Store(0), + Instr::Load(0), + Instr::Halt, + ]; + let state = State::new(1); + let final_state = run(&state, &prog, 100).unwrap(); + assert_eq!(final_state.stack[0], AvmVal::Q16_16(42 * 65536)); + } + + #[test] + fn test_prim_type_checking() { + // Program: push Bool(true), push Q16(5), add → type error + let prog = vec![ + Instr::Push(AvmVal::Bool(true)), + Instr::Push(AvmVal::Q16_16(65536)), + Instr::Prim(Prim::AddSatQ16), + Instr::Halt, + ]; + let state = State::new(0); + let result = run(&state, &prog, 100); + assert!(result.is_err()); + match result { + Err(StepError::TypeMismatch { .. }) => {} // expected + _ => panic!("Expected TypeMismatch, got {:?}", result), + } + } + + #[test] + fn test_division_by_zero() { + let prog = vec![ + Instr::Push(AvmVal::Q16_16(65536)), + Instr::Push(AvmVal::Q16_16(0)), + Instr::Prim(Prim::DivSatQ16), + Instr::Halt, + ]; + let state = State::new(0); + let result = run(&state, &prog, 100); + assert_eq!(result, Err(StepError::DivisionByZero)); + } +} diff --git a/rust/src/lib.rs b/rust/src/lib.rs new file mode 100644 index 00000000..5e357204 --- /dev/null +++ b/rust/src/lib.rs @@ -0,0 +1,4 @@ +pub mod q16; +pub mod nuvmap; +pub mod silversight; +pub mod avm; diff --git a/rust/src/nuvmap/mod.rs b/rust/src/nuvmap/mod.rs new file mode 100644 index 00000000..d9a3e5ba --- /dev/null +++ b/rust/src/nuvmap/mod.rs @@ -0,0 +1,211 @@ +//! NUVMAP Projection Engine — Rust Port +//! +//! Mirrors `python/nuvmap/projection_engine.py` (SilverSight Q16_16 version). + +use crate::q16::*; +use sha2::{Sha256, Digest}; +use std::collections::HashMap; + +#[derive(Debug, Clone, PartialEq)] +pub struct Cell { + pub u_i: i32, + pub v_i: i32, + pub k_i: i32, + pub e_i: Q16, + pub r_i: Q16, + pub chi_i: Q16, + pub s_i: Q16, + pub l_i: Q16, + pub q_i: i32, + pub admissible: bool, + pub equation_id: i32, + pub fingerprint: String, +} + +#[derive(Debug, Clone)] +pub struct Surface { + pub cells: Vec, + pub total_qubits: i32, + pub bekenstein_bound: Q16, + pub area_utilization: Q16, + pub root_fingerprint: String, + pub timestamp: String, +} + +/// Build input data: maps chiral_state string to int index. +pub fn make_input(eq_id: i32, amvr_q: i32, avmr_q: i32, cr_q: i32, chiral_state: &str) -> HashMap { + let mut m = HashMap::new(); + m.insert("equation_id".into(), eq_id); + m.insert("amvr_q16".into(), amvr_q); + m.insert("avmr_q16".into(), avmr_q); + m.insert("chiral_residual_q16".into(), cr_q); + let idx = match chiral_state { + "achiral_stable" => 0, + "left_handed_mass_bias" => 1, + "chiral_scarred" => 2, + "right_handed_vector_bias" => 3, + _ => 0, + }; + m.insert("chiral_state_idx".into(), idx); + m +} + +#[derive(Debug, Clone)] +pub struct Engine { + pub total_qubit_budget: i32, + pub chi_max_q16: Q16, + pub r_max_q16: Q16, + pub landauer_threshold_q16: Q16, +} + +impl Default for Engine { + fn default() -> Self { + Self { + total_qubit_budget: 0, + chi_max_q16: HALF, + r_max_q16: HALF, + landauer_threshold_q16: ONE.saturating_div(10), + } + } +} + +impl Engine { + pub fn project(&self, data: &[HashMap]) -> Surface { + if data.is_empty() { + return Surface { + cells: vec![], + total_qubits: 0, + bekenstein_bound: ZERO, + area_utilization: ZERO, + root_fingerprint: String::new(), + timestamp: String::new(), + }; + } + + let mut cells = Vec::with_capacity(data.len()); + + // max eigenmass + let mut max_eigenmass = ZERO; + for d in data { + let raw_q = div_op( + add(d["amvr_q16"], d["avmr_q16"]), + of_raw(131072), + ); + if raw_q > max_eigenmass { + max_eigenmass = raw_q; + } + } + let max_eigenmass = if max_eigenmass == ZERO { ONE } else { max_eigenmass }; + + for (i, d) in data.iter().enumerate() { + let amvr_q = d["amvr_q16"]; + let avmr_q = d["avmr_q16"]; + let cr_q = d["chiral_residual_q16"]; + let eq_id = d["equation_id"]; + let cs_idx = d["chiral_state_idx"]; + + let raw_eigenmass = div_op(add(amvr_q, avmr_q), of_raw(131072)); + let e_norm = div_op(raw_eigenmass, max_eigenmass); + + let one_minus = sub(ONE, e_norm); + let r_i = if one_minus > PCT1 { one_minus } else { PCT1 }; + + let r_i = if cs_idx == 2 { mul(r_i, ONE50) } else { r_i }; + + let s_i = match cs_idx { + 0 => ONE, + 1 | 3 => PCT70, + _ => PCT30, + }; + + let l_i = if e_norm > self.landauer_threshold_q16 { + ONE + } else { + div_op(e_norm, self.landauer_threshold_q16) + }; + + let e_i = div_op( + mul(mul(mul(ONE, e_norm), s_i), l_i), + add(r_i, EPSILON), + ); + + let chi_i = cr_q; + let admissible = r_i <= self.r_max_q16 && chi_i <= self.chi_max_q16; + + let fp_payload = format!("{eq_id}\x00{amvr_q}\x00{avmr_q}\x00{cr_q}\x00{cs_idx}"); + let mut hasher = Sha256::new(); + hasher.update(fp_payload.as_bytes()); + let fp = format!("{:x}", hasher.finalize()); + + cells.push(Cell { + u_i: i as i32, v_i: i as i32, k_i: i as i32, + e_i, r_i, chi_i, s_i, l_i, + q_i: 0, admissible, + equation_id: eq_id, + fingerprint: fp, + }); + } + + // Qubit allocation + let mut total_weight = ZERO; + for c in &cells { + total_weight = add(total_weight, div_op(c.e_i, add(c.r_i, EPSILON))); + } + if total_weight == ZERO { let _ = std::mem::replace(&mut total_weight, ONE); } + + let mut budget: i64 = if self.total_qubit_budget > 0 { + self.total_qubit_budget as i64 + } else { + cells.iter() + .filter(|c| c.admissible) + .map(|c| (c.e_i as i64 * 100) / Q16_SCALE as i64) + .sum() + }; + let n_admissible = cells.iter().filter(|c| c.admissible).count() as i64; + budget = budget.max(n_admissible); + + for cell in cells.iter_mut() { + if cell.admissible { + let weight = div_op(cell.e_i, add(cell.r_i, EPSILON)); + let raw_q = (budget * weight as i64) / total_weight as i64; + cell.q_i = (1i32).max(raw_q as i32); + } else { + cell.q_i = 0; + } + } + + let total_qubits: i32 = cells.iter().map(|c| c.q_i).sum(); + + let mut sum_e = ZERO; + for c in &cells { sum_e = add(sum_e, c.e_i); } + let bekenstein = if !cells.is_empty() { + div_op(sum_e, of_raw((cells.len() * Q16_SCALE as usize) as i32)) + } else { ZERO }; + + let area_util = if bekenstein > ZERO { + div_op( + of_raw((total_qubits as i64 * Q16_SCALE as i64) as i32), + add(bekenstein, EPSILON), + ) + } else { ZERO }; + + let mut sorted = cells.clone(); + sorted.sort_by_key(|c| c.u_i); + let payload: Vec = sorted.iter().map(|c| { + format!("{}:{}:{}:{}", c.u_i, c.e_i, c.chi_i, c.q_i) + }).collect(); + let payload_str = payload.join("|"); + let mut hasher = Sha256::new(); + hasher.update(payload_str.as_bytes()); + let root_fp = format!("{:x}", hasher.finalize()); + + Surface { + cells, + total_qubits, + bekenstein_bound: bekenstein, + area_utilization: area_util, + root_fingerprint: root_fp, + timestamp: String::new(), + } + } +} diff --git a/rust/src/q16/mod.rs b/rust/src/q16/mod.rs new file mode 100644 index 00000000..ad81b1cd --- /dev/null +++ b/rust/src/q16/mod.rs @@ -0,0 +1,280 @@ +//! Q16_16 fixed-point arithmetic — Rust Port +//! +//! Mirrors `Core/SilverSight/FixedPoint.lean` (Lean 4). +//! +//! Rounding mode: Banker's rounding (round-half-to-even), matching Python `round()`. +//! This differs from Lean `Int.div` (floor division). The discrepancy is documented +//! and cross-validated against Python, R, and Julia outputs. +//! +//! Design rules: +//! - Core type is `i32` (signed 32-bit, matches `Q16_16Value`) +//! - Saturation via `Self::of_raw` +//! - Float is external boundary only (`of_float`, `to_float`) + +use std::cmp::{max, min}; + +pub const Q16_MIN_RAW: i32 = -2147483648; +pub const Q16_MAX_RAW: i32 = 2147483647; +pub const Q16_SCALE: i32 = 65536; + +/// Q16.16 fixed-point raw integer, saturated into `[Q16_MIN_RAW, Q16_MAX_RAW]`. +pub type Q16 = i32; + +/// Saturating clamp matching Lean `q16Clamp`. +#[inline] +pub fn clamp_raw(raw: i64) -> i32 { + if raw > Q16_MAX_RAW as i64 { + Q16_MAX_RAW + } else if raw < Q16_MIN_RAW as i64 { + Q16_MIN_RAW + } else { + raw as i32 + } +} + +/// Saturating constructor. Matches Lean `Q16_16.ofRawInt`. +#[inline] +pub fn of_raw(raw: i32) -> Q16 { + raw // already in-range if constructed via clamp_raw +} + +/// Float → Q16_16 (external boundary only). Matches Python `f2q` (banker's rounding). +pub fn of_float(f: f64) -> Q16 { + if f.is_nan() || f >= 32768.0 { + return Q16_MAX_RAW; + } + if f <= -32768.0 { + return Q16_MIN_RAW; + } + clamp_raw((f * 65536.0).round_ties_even() as i64) +} + +/// Q16_16 → Float64. +pub fn to_float(q: Q16) -> f64 { + q as f64 / 65536.0 +} + +/// Constants (match Lean `#eval` witnesses) +pub const ZERO: Q16 = 0; +pub const ONE: Q16 = 65536; +pub const NEG_ONE: Q16 = -65536; +pub const EPSILON: Q16 = 1; +pub const TWO: Q16 = 131072; +pub const HALF: Q16 = 32768; +pub const MAX_VAL: Q16 = Q16_MAX_RAW; +pub const MIN_VAL: Q16 = Q16_MIN_RAW; + +// NUVMAP constants +pub const PCT1: Q16 = 655; // 0.01 floor +pub const PCT70: Q16 = 45875; // 0.7 floor +pub const PCT30: Q16 = 19661; // 0.3 ceil (banker's) +pub const ONE50: Q16 = 98304; // 1.5 exact + +// Mathematical constants (from Q16_16Numerics.lean) +pub const PI: Q16 = 205887; +pub const E: Q16 = 178145; +pub const LN2: Q16 = 45426; + +// ── Arithmetic (saturating, banker's rounding) ───────────────────────── + +/// Saturating addition. Matches Lean `Q16_16.add`. +#[inline] +pub fn add(a: Q16, b: Q16) -> Q16 { + a.saturating_add(b) +} + +/// Saturating subtraction. +#[inline] +pub fn sub(a: Q16, b: Q16) -> Q16 { + a.saturating_sub(b) +} + +/// Q16.16 multiplication: `round((a * b) / 65536)`. Uses i64 intermediate. +pub fn mul(a: Q16, b: Q16) -> Q16 { + let prod = (a as i64) * (b as i64); + // Banker's rounding: round half to even + let scaled = ((prod as f64) / (Q16_SCALE as f64)).round_ties_even() as i64; + clamp_raw(scaled) +} + +/// Q16.16 division: `round((a * 65536) / b)`. Returns MAX_VAL if b == 0. +pub fn div_op(a: Q16, b: Q16) -> Q16 { + if b == 0 { + return MAX_VAL; + } + let prod = (a as i64) * (Q16_SCALE as i64); + let scaled = ((prod as f64) / (b as f64)).round_ties_even() as i64; + clamp_raw(scaled) +} + +/// Saturating negation. +#[inline] +pub fn neg(a: Q16) -> Q16 { + a.saturating_neg() +} + +/// Absolute value. +#[inline] +pub fn abs_(a: Q16) -> Q16 { + if a < 0 { neg(a) } else { a } +} + +// ── Comparisons ──────────────────────────────────────────────────────── + +#[inline] +pub fn lt(a: Q16, b: Q16) -> bool { a < b } +#[inline] +pub fn le(a: Q16, b: Q16) -> bool { a <= b } +#[inline] +pub fn gt(a: Q16, b: Q16) -> bool { a > b } +#[inline] +pub fn ge(a: Q16, b: Q16) -> bool { a >= b } + +// ── Numeric functions ─────────────────────────────────────────────────── + +/// Integer square root via Newton's method (floor). Matches Lean `intSqrt`. +pub fn int_sqrt(n: i64) -> i64 { + if n <= 0 { return 0; } + let mut x = n / 2 + 1; + for _ in 0..64 { + let x_new = (x + n / x) / 2; + if x_new >= x { return x; } + x = x_new; + } + x +} + +/// Q16.16 square root. +pub fn sqrt(q: Q16) -> Q16 { + if q <= 0 { return ZERO; } + clamp_raw(int_sqrt((q as i64) * (Q16_SCALE as i64)) as i64) +} + +/// Natural logarithm approximation around 1.0. Matches Lean `Q16_16.ln`. +pub fn ln_nat(q: Q16) -> Q16 { + let x = q as i64; + if x <= 0 { return ZERO; } + let y = x - Q16_SCALE as i64; + let y2 = (y * y) / Q16_SCALE as i64; + let y3 = (y * y2) / Q16_SCALE as i64; + clamp_raw((y - y2 / 2 + y3 / 3) as i64) +} + +/// Q16.16 exponential via Taylor with range reduction. Matches Lean `Q16_16.exp`. +pub fn exp(x: Q16) -> Q16 { + let rx = x as i64; + if rx <= -(Q16_SCALE as i64) { return ZERO; } + if rx >= 4 * (Q16_SCALE as i64) { return MAX_VAL; } + + let ln2_raw: i64 = 45426; + let k = rx / ln2_raw; + let r = rx - k * ln2_raw; + let scale = Q16_SCALE as i64; + + let r2 = (r * r) / scale; + let r3 = (r * r2) / scale; + let r4 = (r2 * r2) / scale; + let r5 = (r2 * r3) / scale; + let r6 = (r3 * r3) / scale; + + let taylor = scale + r + r2 / 2 + r3 / 6 + r4 / 24 + r5 / 120 + r6 / 720; + + let shifted = if k >= 15 { Q16_MAX_RAW as i64 } + else if k <= -15 { 0 } + else if k >= 0 { taylor << (k as u32) } + else { taylor >> ((-k) as u32) }; + + clamp_raw(shifted) +} + +// ── Tests ─────────────────────────────────────────────────────────────── + +#[cfg(test)] +mod tests { + use crate::q16::*; + + #[test] + fn test_constants() { + assert_eq!(ZERO, 0); + assert_eq!(ONE, 65536); + assert_eq!(EPSILON, 1); + assert_eq!(HALF, 32768); + assert_eq!(to_float(PCT1), 0.0099945068359375); + assert_eq!(to_float(PCT70), 0.6999969482421875); + assert_eq!(to_float(PCT30), 0.3000030517578125); + assert_eq!(to_float(ONE50), 1.5); + } + + #[test] + fn test_arithmetic() { + // 1.0 * 1.0 = 1.0 + let r = mul(ONE, ONE); + assert_eq!(to_float(r), 1.0); + + // 1.0 / 2.0 = 0.5 + let r = div_op(ONE, TWO); + assert_eq!(to_float(r), 0.5); + + // 0.5 + 0.5 = 1.0 + let r = add(HALF, HALF); + assert_eq!(r, ONE); + + // 1.0 - 0.5 = 0.5 + let r = sub(ONE, HALF); + assert_eq!(r, HALF); + } + + #[test] + fn test_of_float() { + // of_float and to_float round-trip for simple cases + let q = of_float(1.0); + assert_eq!(q, ONE); + assert!((to_float(q) - 1.0).abs() < 1e-6); + + let q = of_float(0.5); + assert_eq!(q, HALF); + + // f2q(0.8) = round(52428.8) = 52429 + let q = of_float(0.8); + assert_eq!(q, 52429); + + // f2q(0.75) = round(49152.0) = 49152 + let q = of_float(0.75); + assert_eq!(q, 49152); + } + + #[test] + fn test_nuvmap_data_baseline() { + // Cross-validated against Python/R/Julia for cell 0: + // amvr=0.8, avmr=0.75, achiral_stable + let amvr_q = of_float(0.8); + let avmr_q = of_float(0.75); + assert_eq!(amvr_q, 52429); + assert_eq!(avmr_q, 49152); + + // raw_eigenmass = q_div(101581, 131072) = 50790 + let raw = div_op(add(amvr_q, avmr_q), of_raw(131072)); + assert_eq!(raw, 50790); + + // max_eigenmass (from cell 4) + let amvr4 = of_float(0.9); + let avmr4 = of_float(0.85); + let max_raw = div_op(add(amvr4, avmr4), of_raw(131072)); + assert_eq!(max_raw, 57344); + + // E_norm + let e_norm = div_op(raw, max_raw); + assert_eq!(e_norm, 58046); + assert!((to_float(e_norm) - 0.885711669921875).abs() < 1e-10); + + // R_i + let one_minus = sub(ONE, e_norm); + let r_i = if one_minus > PCT1 { one_minus } else { PCT1 }; + assert_eq!(r_i, 7490); + + // E_i + let e_i = div_op(mul(mul(mul(ONE, e_norm), ONE), ONE), add(r_i, EPSILON)); + assert_eq!(e_i, 507823); + assert!((to_float(e_i) - 7.7487640380859375).abs() < 1e-10); + } +} diff --git a/rust/src/silversight/mod.rs b/rust/src/silversight/mod.rs new file mode 100644 index 00000000..3147b79d --- /dev/null +++ b/rust/src/silversight/mod.rs @@ -0,0 +1,318 @@ +//! SilverSight Engine — Verified Geometric Classifier +//! +//! Mirrors `python/silversight_engine.py`. All verified constants +//! from the Python reference are checked in tests. + +use std::collections::HashMap; + +// ── VERIFIED CONSTANTS ────────────────────────────────────────── + +/// Golden ratio [VERIFIED: 1.61803399] +pub const PHI: f64 = 1.618033988749895; +/// Corkscrew angle [VERIFIED: psi = 2*pi/phi^2] +pub const PSI: f64 = 2.0 * std::f64::consts::PI / (PHI * PHI); + +// ── R1: TOKEN NORMALIZATION ───────────────────────────────────── + +pub fn normalize(s: &str) -> String { + let lower = s.to_lowercase(); + let mut out = String::with_capacity(lower.len()); + let chars: Vec = lower.chars().collect(); + let mut i = 0; + while i < chars.len() { + if chars[i].is_ascii_digit() { + out.push('N'); + while i < chars.len() && chars[i].is_ascii_digit() { i += 1; } + } else if chars[i].is_ascii_lowercase() { + out.push('V'); + while i < chars.len() && chars[i].is_ascii_lowercase() { i += 1; } + } else { + out.push(chars[i]); + i += 1; + } + } + out +} + +// ── BYTE CLASSIFICATION ───────────────────────────────────────── + +pub fn byte_class(c: char) -> usize { + let asc = c as u32; + if asc <= 31 { return 0; } + if asc <= 47 { return 1; } + if asc <= 57 { return 2; } + if asc <= 64 { return 3; } + if asc <= 90 { return 4; } + if asc <= 96 { return 5; } + if asc <= 122 { return 6; } + 7 +} + +// ── FEATURE EXTRACTION ────────────────────────────────────────── + +pub fn F(s: &str) -> [f64; 8] { + let norm = normalize(s); + let mut counts = [0u64; 8]; + for c in norm.chars() { counts[byte_class(c)] += 1; } + let total: u64 = counts.iter().sum(); + if total == 0 { return [0.0; 8]; } + let mut result = [0.0f64; 8]; + for (i, &cnt) in counts.iter().enumerate() { result[i] = cnt as f64 / total as f64; } + result +} + +pub fn parse_tree_depth(expr: &str) -> Vec<(char, i32)> { + let mut ops = Vec::new(); + let mut depth = 0i32; + for c in expr.chars() { + match c { + '(' => depth += 1, + ')' => depth -= 1, + '+' | '-' | '*' | '/' | '=' => ops.push((c, depth)), + _ => {} + } + } + ops +} + +pub fn tau(s: &str) -> [f64; 6] { + let op_depths = parse_tree_depth(s); + let mut weights = [0.0f64; 6]; + for (op, d) in &op_depths { + let w = 2.0f64.powi(-*d); + match op { + '+' => weights[1] += w, '=' => weights[2] += w, + '/' => weights[3] += w, '*' => weights[4] += w, + '-' => weights[5] += w, _ => {} + } + } + let total: f64 = weights.iter().sum(); + if total > 0.0 { for w in &mut weights { *w /= total; } } + weights +} + +pub fn Phi(s: &str) -> [f64; 14] { + let mut result = [0.0f64; 14]; + result[..8].copy_from_slice(&F(s)); + result[8..].copy_from_slice(&tau(s)); + result +} + +// ── FISHER DISTANCE ───────────────────────────────────────────── + +pub fn d_F(p: &[f64; N], q: &[f64; N]) -> f64 { + let mut s = 0.0; + for i in 0..N { s += (p[i].max(0.0) * q[i].max(0.0)).sqrt(); } + s = s.clamp(-1.0, 1.0); + 2.0 * s.acos() +} + +pub fn d_Phi(phi1: &[f64; 14], phi2: &[f64; 14]) -> f64 { + let f1: [f64; 8] = phi1[..8].try_into().unwrap(); + let t1: [f64; 6] = phi1[8..].try_into().unwrap(); + let f2: [f64; 8] = phi2[..8].try_into().unwrap(); + let t2: [f64; 6] = phi2[8..].try_into().unwrap(); + let df = d_F(&f1, &f2); + let dt = d_F(&t1, &t2); + (df * df + dt * dt).sqrt() +} + +// ── COARSE-GRAINING / EIGENSOLID ──────────────────────────────── + +pub fn C(phi: &[f64; 14]) -> [f64; 14] { + let mut result = *phi; + for k in 0..4 { + let avg = (phi[2*k] + phi[2*k+1]) / 2.0; + result[2*k] = avg; result[2*k+1] = avg; + } + for k in 0..3 { + let avg = (phi[8+2*k] + phi[8+2*k+1]) / 2.0; + result[8+2*k] = avg; result[8+2*k+1] = avg; + } + result +} + +pub fn geodesic_step(phi1: &[f64; 14], phi2: &[f64; 14], eps: f64) -> [f64; 14] { + let mut interp_f = [0.0f64; 8]; + let mut sum_f = 0.0; + for i in 0..8 { + let s = (1.0 - eps) * phi1[i].max(0.0).min(1.0).sqrt() + eps * phi2[i].max(0.0).min(1.0).sqrt(); + interp_f[i] = s; sum_f += s * s; + } + let sum_f = if sum_f > 0.0 { sum_f } else { 1.0 }; + for i in 0..8 { interp_f[i] = interp_f[i] * interp_f[i] / sum_f; } + + let mut interp_t = [0.0f64; 6]; + let mut sum_t = 0.0; + for i in 0..6 { + let s = (1.0 - eps) * phi1[8+i].max(0.0).min(1.0).sqrt() + eps * phi2[8+i].max(0.0).min(1.0).sqrt(); + interp_t[i] = s; sum_t += s * s; + } + let sum_t = if sum_t > 0.0 { sum_t } else { 1.0 }; + for i in 0..6 { interp_t[i] = interp_t[i] * interp_t[i] / sum_t; } + + let mut result = [0.0f64; 14]; + result[..8].copy_from_slice(&interp_f); + result[8..].copy_from_slice(&interp_t); + result +} + +pub fn chaos_game( + start: &[f64; 14], references: &HashMap, + steps: usize, eps: f64, +) -> [f64; 14] { + let refs: Vec<&[f64; 14]> = references.values().collect(); + let mut x = *start; + for _ in 0..steps { + let nearest = refs.iter().min_by(|a, b| d_Phi(&x, a).partial_cmp(&d_Phi(&x, b)).unwrap()).copied().unwrap(); + x = geodesic_step(&x, nearest, eps); + } + x +} + +pub fn corkscrew_index(phi: &[f64; 14]) -> i64 { + let mut spiral: i64 = 0; + for i in 0..9 { spiral += (phi[i] * 256.0).floor() as i64 * 8i64.pow(i as u32); } + spiral.abs() +} + +// ── CONCEPT DATA STRUCTURE ────────────────────────────────────── + +#[derive(Debug, Clone)] +pub struct Concept { + pub name: String, + pub prototype: [f64; 14], + pub attractor: [f64; 14], + pub corkscrew_index: i64, + pub operator_type: String, + pub members: Vec<(String, [f64; 14])>, +} + +// ── SILVERSIGHT ENGINE ───────────────────────────────────────── + +#[derive(Debug, Clone)] +pub struct SilverSight { + pub concepts: Vec, + pub references: HashMap, + pub basin_map: HashMap<[i64; 14], usize>, +} + +impl SilverSight { + pub fn new() -> Self { + Self { concepts: Vec::new(), references: HashMap::new(), basin_map: HashMap::new() } + } + + pub fn learn(&mut self, equation: &str) -> usize { + let phi = Phi(equation); + self.references.insert(equation.to_string(), phi); + let limit = chaos_game(&phi, &self.references, 30, 0.5); + let eigensolid = C(&limit); + let attractor_key: [i64; 14] = std::array::from_fn(|i| (limit[i] * 1e8).round() as i64); + if let Some(&cid) = self.basin_map.get(&attractor_key) { + self.concepts[cid].members.push((equation.to_string(), phi)); + return cid; + } + let op_type = detect_operator(equation); + let cid = self.concepts.len(); + self.concepts.push(Concept { + name: format!("concept_{cid}"), prototype: eigensolid, attractor: limit, + corkscrew_index: corkscrew_index(&eigensolid), + operator_type: op_type, members: vec![(equation.to_string(), phi)], + }); + self.basin_map.insert(attractor_key, cid); + cid + } + + pub fn classify(&self, equation: &str) -> Option<(usize, f64)> { + if self.concepts.is_empty() { return None; } + let phi = Phi(equation); + Some(self.concepts.iter().enumerate() + .map(|(i, c)| (i, d_Phi(&phi, &c.attractor))) + .min_by(|a, b| a.1.partial_cmp(&b.1).unwrap()).unwrap()) + } +} + +fn detect_operator(s: &str) -> String { + let norm = normalize(s); + for op in &['+', '/', '*', '-', '='] { + if norm.contains(*op) { + return match op { + '+' => "addition".into(), '/' => "division".into(), + '*' => "multiplication".into(), '-' => "subtraction".into(), + '=' => "equality".into(), _ => "literal".into(), + }; + } + } + "literal".into() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_normalize() { + assert_eq!(normalize("A+B=C"), "V+V=V"); + assert_eq!(normalize("a+b=c"), "V+V=V"); + assert_eq!(normalize("foo+bar=baz"), "V+V=V"); + assert_eq!(normalize("123+456=579"), "N+N=N"); + } + + #[test] + fn test_F_verified() { + let f0 = F("A+B=C"); + let expected = [0.0, 0.2, 0.0, 0.2, 0.6, 0.0, 0.0, 0.0]; + for i in 0..8 { assert!((f0[i] - expected[i]).abs() < 1e-10); } + for case in &["a+b=c", "foo+bar=baz", "123+456=579"] { + let fi = F(case); + for i in 0..8 { assert!((fi[i] - f0[i]).abs() < 1e-10); } + } + } + + #[test] + fn test_tau() { + let t = tau("(a+b)*c=d"); + assert!(t[4] > t[1], "mul({}) should exceed add({})", t[4], t[1]); + } + + #[test] + fn test_fisher_self_zero() { + let p = F("a+b=c"); + assert!(d_F(&p, &p).abs() < 1e-10); + } + + #[test] + fn test_eigensolid_idempotent() { + let p = Phi("a+b=c"); + let c1 = C(&p); + let c2 = C(&c1); + for i in 0..14 { assert!((c2[i] - c1[i]).abs() < 1e-10); } + } + + #[test] + fn test_eigensolid_contractive() { + let p = Phi("a+b=c"); + let q = Phi("p/q=r"); + assert!(d_Phi(&C(&p), &C(&q)) < d_Phi(&p, &q)); + } + + #[test] + fn test_chaos_game_convergence() { + let mut ss = SilverSight::new(); + ss.learn("a+b=c"); + ss.learn("x+y=z"); + assert_eq!(ss.concepts.len(), 1, "addition equations should cluster"); + } + + #[test] + fn test_classify_novelty() { + let mut ss = SilverSight::new(); + ss.learn("a+b=c"); + ss.learn("p/q=r"); + ss.learn("a*b=c"); + assert_eq!(ss.concepts.len(), 3, "different operators → different concepts"); + let (idx, dist) = ss.classify("x+y=z").unwrap(); + assert_eq!(idx, 0, "x+y=z → addition (concept 0)"); + assert!(dist < 1.0); + } +} diff --git a/rust/target/.rustc_info.json b/rust/target/.rustc_info.json new file mode 100644 index 00000000..34e11817 --- /dev/null +++ b/rust/target/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":8538117250985766906,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.95.0 (59807616e 2026-04-14)\nbinary: rustc\ncommit-hash: 59807616e1fa2540724bfbac14d7976d7e4a3860\ncommit-date: 2026-04-14\nhost: x86_64-unknown-linux-gnu\nrelease: 1.95.0\nLLVM version: 22.1.2\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/allaun/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/rust/target/CACHEDIR.TAG b/rust/target/CACHEDIR.TAG new file mode 100644 index 00000000..20d7c319 --- /dev/null +++ b/rust/target/CACHEDIR.TAG @@ -0,0 +1,3 @@ +Signature: 8a477f597d28d172789f06886806bc55 +# This file is a cache directory tag created by cargo. +# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/rust/target/debug/.cargo-lock b/rust/target/debug/.cargo-lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/dep-lib-block_buffer b/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/dep-lib-block_buffer new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/dep-lib-block_buffer differ diff --git a/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/lib-block_buffer b/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/lib-block_buffer new file mode 100644 index 00000000..2e9a6e7c --- /dev/null +++ b/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/lib-block_buffer @@ -0,0 +1 @@ +03a785e36bf85364 \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/lib-block_buffer.json b/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/lib-block_buffer.json new file mode 100644 index 00000000..12bdbbe4 --- /dev/null +++ b/rust/target/debug/.fingerprint/block-buffer-ba5487fa0bd48090/lib-block_buffer.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[]","target":4098124618827574291,"profile":15657897354478470176,"path":8690544258682963370,"deps":[[10520923840501062997,"generic_array",false,10063538021535001446]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/block-buffer-ba5487fa0bd48090/dep-lib-block_buffer","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/dep-lib-cfg_if b/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/dep-lib-cfg_if new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/dep-lib-cfg_if differ diff --git a/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/lib-cfg_if b/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/lib-cfg_if new file mode 100644 index 00000000..ef18c9ba --- /dev/null +++ b/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/lib-cfg_if @@ -0,0 +1 @@ +93cd6a45d01a882b \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/lib-cfg_if.json b/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/lib-cfg_if.json new file mode 100644 index 00000000..b89f50af --- /dev/null +++ b/rust/target/debug/.fingerprint/cfg-if-595cd1fd9b5b1165/lib-cfg_if.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":15657897354478470176,"path":14469769793946325281,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-595cd1fd9b5b1165/dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/dep-lib-cpufeatures b/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/dep-lib-cpufeatures new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/dep-lib-cpufeatures differ diff --git a/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/lib-cpufeatures b/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/lib-cpufeatures new file mode 100644 index 00000000..01dcdc6d --- /dev/null +++ b/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/lib-cpufeatures @@ -0,0 +1 @@ +a52dc05282298c46 \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/lib-cpufeatures.json b/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/lib-cpufeatures.json new file mode 100644 index 00000000..0054364b --- /dev/null +++ b/rust/target/debug/.fingerprint/cpufeatures-e124fef1b1d91f00/lib-cpufeatures.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[]","target":2330704043955282025,"profile":15657897354478470176,"path":2326293387941387040,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cpufeatures-e124fef1b1d91f00/dep-lib-cpufeatures","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/dep-lib-crypto_common b/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/dep-lib-crypto_common new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/dep-lib-crypto_common differ diff --git a/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/lib-crypto_common b/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/lib-crypto_common new file mode 100644 index 00000000..5336689c --- /dev/null +++ b/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/lib-crypto_common @@ -0,0 +1 @@ +802aefde249766a6 \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/lib-crypto_common.json b/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/lib-crypto_common.json new file mode 100644 index 00000000..eadd33b0 --- /dev/null +++ b/rust/target/debug/.fingerprint/crypto-common-121deb944156ca4c/lib-crypto_common.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[\"std\"]","declared_features":"[\"getrandom\", \"rand_core\", \"std\"]","target":12082577455412410174,"profile":15657897354478470176,"path":15131514179919812129,"deps":[[6918147871599447195,"typenum",false,12516096392049389919],[10520923840501062997,"generic_array",false,10063538021535001446]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/crypto-common-121deb944156ca4c/dep-lib-crypto_common","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/dep-lib-digest b/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/dep-lib-digest new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/dep-lib-digest differ diff --git a/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/lib-digest b/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/lib-digest new file mode 100644 index 00000000..cddaa4ab --- /dev/null +++ b/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/lib-digest @@ -0,0 +1 @@ +6fcb15cf9ea4feb5 \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/lib-digest.json b/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/lib-digest.json new file mode 100644 index 00000000..4a238650 --- /dev/null +++ b/rust/target/debug/.fingerprint/digest-ccef2157e38fd51a/lib-digest.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[\"alloc\", \"block-buffer\", \"core-api\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"blobby\", \"block-buffer\", \"const-oid\", \"core-api\", \"default\", \"dev\", \"mac\", \"oid\", \"rand_core\", \"std\", \"subtle\"]","target":7510122432137863311,"profile":15657897354478470176,"path":653469723402799357,"deps":[[6039282458970808711,"crypto_common",false,11990437242535357056],[10626340395483396037,"block_buffer",false,7229394969122154243]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/digest-ccef2157e38fd51a/dep-lib-digest","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/generic-array-8dfb2b39765de00e/run-build-script-build-script-build b/rust/target/debug/.fingerprint/generic-array-8dfb2b39765de00e/run-build-script-build-script-build new file mode 100644 index 00000000..2b78ca00 --- /dev/null +++ b/rust/target/debug/.fingerprint/generic-array-8dfb2b39765de00e/run-build-script-build-script-build @@ -0,0 +1 @@ +34a08823ad1a7ef1 \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/generic-array-8dfb2b39765de00e/run-build-script-build-script-build.json b/rust/target/debug/.fingerprint/generic-array-8dfb2b39765de00e/run-build-script-build-script-build.json new file mode 100644 index 00000000..20bdacc8 --- /dev/null +++ b/rust/target/debug/.fingerprint/generic-array-8dfb2b39765de00e/run-build-script-build-script-build.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[10520923840501062997,"build_script_build",false,17746109891654218989]],"local":[{"Precalculated":"0.14.7"}],"rustflags":[],"config":0,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/build-script-build-script-build b/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/build-script-build-script-build new file mode 100644 index 00000000..ffbd98dd --- /dev/null +++ b/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/build-script-build-script-build @@ -0,0 +1 @@ +ed74186decd846f6 \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/build-script-build-script-build.json b/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/build-script-build-script-build.json new file mode 100644 index 00000000..1cb7d516 --- /dev/null +++ b/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/build-script-build-script-build.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[\"more_lengths\"]","declared_features":"[\"more_lengths\", \"serde\", \"zeroize\"]","target":12318548087768197662,"profile":2225463790103693989,"path":5600575675369091377,"deps":[[5398981501050481332,"version_check",false,7969903382952950840]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/generic-array-c61903c61fac97ae/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/dep-build-script-build-script-build b/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/dep-build-script-build-script-build new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/generic-array-c61903c61fac97ae/dep-build-script-build-script-build differ diff --git a/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/dep-lib-generic_array b/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/dep-lib-generic_array new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/dep-lib-generic_array differ diff --git a/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/lib-generic_array b/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/lib-generic_array new file mode 100644 index 00000000..117ba834 --- /dev/null +++ b/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/lib-generic_array @@ -0,0 +1 @@ +662b3bfd82dea88b \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/lib-generic_array.json b/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/lib-generic_array.json new file mode 100644 index 00000000..09f93bb0 --- /dev/null +++ b/rust/target/debug/.fingerprint/generic-array-d73a6db3dcac957a/lib-generic_array.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[\"more_lengths\"]","declared_features":"[\"more_lengths\", \"serde\", \"zeroize\"]","target":13084005262763373425,"profile":15657897354478470176,"path":17740777500441703135,"deps":[[6918147871599447195,"typenum",false,12516096392049389919],[10520923840501062997,"build_script_build",false,17401375341133996084]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/generic-array-d73a6db3dcac957a/dep-lib-generic_array","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/dep-lib-sha2 b/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/dep-lib-sha2 new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/dep-lib-sha2 differ diff --git a/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/lib-sha2 b/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/lib-sha2 new file mode 100644 index 00000000..1f116f1e --- /dev/null +++ b/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/lib-sha2 @@ -0,0 +1 @@ +8b46351d2d7d64e3 \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/lib-sha2.json b/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/lib-sha2.json new file mode 100644 index 00000000..e98c8072 --- /dev/null +++ b/rust/target/debug/.fingerprint/sha2-9772533f5abdf09c/lib-sha2.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[\"default\", \"std\"]","declared_features":"[\"asm\", \"asm-aarch64\", \"compress\", \"default\", \"force-soft\", \"force-soft-compact\", \"loongarch64_asm\", \"oid\", \"sha2-asm\", \"std\"]","target":9593554856174113207,"profile":15657897354478470176,"path":414506693975612452,"deps":[[7667230146095136825,"cfg_if",false,3136786622283697555],[17475753849556516473,"digest",false,13114100166935563119],[17620084158052398167,"cpufeatures",false,5083483719105260965]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/sha2-9772533f5abdf09c/dep-lib-sha2","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/dep-test-lib-silversight b/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/dep-test-lib-silversight new file mode 100644 index 00000000..2380b56d Binary files /dev/null and b/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/dep-test-lib-silversight differ diff --git a/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/output-test-lib-silversight b/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/output-test-lib-silversight new file mode 100644 index 00000000..cabad1ad --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/output-test-lib-silversight @@ -0,0 +1,8 @@ +{"$message_type":"diagnostic","message":"unused imports: `max` and `min`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/q16/mod.rs","byte_start":553,"byte_end":556,"line_start":14,"line_end":14,"column_start":16,"column_end":19,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":16,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/q16/mod.rs","byte_start":558,"byte_end":561,"line_start":14,"line_end":14,"column_start":21,"column_end":24,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":21,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/q16/mod.rs","byte_start":538,"byte_end":564,"line_start":14,"line_end":15,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":1,"highlight_end":26},{"text":"","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `max` and `min`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/q16/mod.rs:14:16\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::cmp::{max, min};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"} +{"$message_type":"diagnostic","message":"function `F` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":1942,"byte_end":1943,"line_start":53,"line_end":53,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"pub fn F(s: &str) -> [f64; 8] {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":1942,"byte_end":1943,"line_start":53,"line_end":53,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"pub fn F(s: &str) -> [f64; 8] {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":"f","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `F` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:53:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m53\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn F(s: &str) -> [f64; 8] {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case (notice the capitalization): `f`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default\n\n"} +{"$message_type":"diagnostic","message":"function `Phi` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3141,"byte_end":3144,"line_start":94,"line_end":94,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"pub fn Phi(s: &str) -> [f64; 14] {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3141,"byte_end":3144,"line_start":94,"line_end":94,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"pub fn Phi(s: &str) -> [f64; 14] {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":"phi","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `Phi` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:94:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m94\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn Phi(s: &str) -> [f64; 14] {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case: `phi`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `d_F` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3470,"byte_end":3473,"line_start":103,"line_end":103,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"pub fn d_F(p: &[f64; N], q: &[f64; N]) -> f64 {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3470,"byte_end":3473,"line_start":103,"line_end":103,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"pub fn d_F(p: &[f64; N], q: &[f64; N]) -> f64 {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":"d_f","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `d_F` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:103:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m103\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn d_F(p: &[f64; N], q: &[f64; N]) -> f64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case (notice the capitalization): `d_f`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `d_Phi` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3672,"byte_end":3677,"line_start":110,"line_end":110,"column_start":8,"column_end":13,"is_primary":true,"text":[{"text":"pub fn d_Phi(phi1: &[f64; 14], phi2: &[f64; 14]) -> f64 {","highlight_start":8,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3672,"byte_end":3677,"line_start":110,"line_end":110,"column_start":8,"column_end":13,"is_primary":true,"text":[{"text":"pub fn d_Phi(phi1: &[f64; 14], phi2: &[f64; 14]) -> f64 {","highlight_start":8,"highlight_end":13}],"label":null,"suggested_replacement":"d_phi","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `d_Phi` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:110:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m110\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn d_Phi(phi1: &[f64; 14], phi2: &[f64; 14]) -> f64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case: `d_phi`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `C` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":4173,"byte_end":4174,"line_start":122,"line_end":122,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"pub fn C(phi: &[f64; 14]) -> [f64; 14] {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":4173,"byte_end":4174,"line_start":122,"line_end":122,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"pub fn C(phi: &[f64; 14]) -> [f64; 14] {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":"c","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `C` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:122:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m122\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn C(phi: &[f64; 14]) -> [f64; 14] {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case (notice the capitalization): `c`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `test_F_verified` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":8947,"byte_end":8962,"line_start":262,"line_end":262,"column_start":8,"column_end":23,"is_primary":true,"text":[{"text":" fn test_F_verified() {","highlight_start":8,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":8947,"byte_end":8962,"line_start":262,"line_end":262,"column_start":8,"column_end":23,"is_primary":true,"text":[{"text":" fn test_F_verified() {","highlight_start":8,"highlight_end":23}],"label":null,"suggested_replacement":"test_f_verified","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `test_F_verified` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:262:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m262\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn test_F_verified() {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case (notice the capitalization): `test_f_verified`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"7 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 7 warnings emitted\u001b[0m\n\n"} diff --git a/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/test-lib-silversight b/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/test-lib-silversight new file mode 100644 index 00000000..17b242ac --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/test-lib-silversight @@ -0,0 +1 @@ +3603e6c6e3a72a0a \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/test-lib-silversight.json b/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/test-lib-silversight.json new file mode 100644 index 00000000..0c5c76d2 --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-0091d08d533221a7/test-lib-silversight.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[]","target":4051077541968869838,"profile":1722584277633009122,"path":10763286916239946207,"deps":[[9857275760291862238,"sha2",false,16385358976997738123]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/silversight-0091d08d533221a7/dep-test-lib-silversight","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/dep-test-integration-test-nuvmap_integration b/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/dep-test-integration-test-nuvmap_integration new file mode 100644 index 00000000..ec7f9e85 Binary files /dev/null and b/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/dep-test-integration-test-nuvmap_integration differ diff --git a/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/test-integration-test-nuvmap_integration b/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/test-integration-test-nuvmap_integration new file mode 100644 index 00000000..cab2831e --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/test-integration-test-nuvmap_integration @@ -0,0 +1 @@ +836949d3068cae3d \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/test-integration-test-nuvmap_integration.json b/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/test-integration-test-nuvmap_integration.json new file mode 100644 index 00000000..a9c99ad3 --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-018a05e077788a7d/test-integration-test-nuvmap_integration.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[]","target":17802237870493459759,"profile":1722584277633009122,"path":8873894875274380907,"deps":[[8964551811124349033,"silversight",false,13731937644685174032],[9857275760291862238,"sha2",false,16385358976997738123]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/silversight-018a05e077788a7d/dep-test-integration-test-nuvmap_integration","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/dep-lib-silversight b/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/dep-lib-silversight new file mode 100644 index 00000000..024be490 Binary files /dev/null and b/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/dep-lib-silversight differ diff --git a/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/lib-silversight b/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/lib-silversight new file mode 100644 index 00000000..ad3174a9 --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/lib-silversight @@ -0,0 +1 @@ +2d48eb7b897ec7be \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/lib-silversight.json b/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/lib-silversight.json new file mode 100644 index 00000000..32fb7399 --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/lib-silversight.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[]","target":2515822492665797901,"profile":8731458305071235362,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/silversight-7fa3cf623dbc565f/dep-lib-silversight","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/output-lib-silversight b/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/output-lib-silversight new file mode 100644 index 00000000..40cd69ed --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-7fa3cf623dbc565f/output-lib-silversight @@ -0,0 +1,2 @@ +{"$message_type":"diagnostic","message":"unused imports: `max` and `min`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/lib.rs","byte_start":553,"byte_end":556,"line_start":14,"line_end":14,"column_start":16,"column_end":19,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":16,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/lib.rs","byte_start":558,"byte_end":561,"line_start":14,"line_end":14,"column_start":21,"column_end":24,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":21,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/lib.rs","byte_start":538,"byte_end":564,"line_start":14,"line_end":15,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":1,"highlight_end":26},{"text":"","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `max` and `min`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/lib.rs:14:16\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::cmp::{max, min};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"} +{"$message_type":"diagnostic","message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"} diff --git a/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/dep-lib-silversight b/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/dep-lib-silversight new file mode 100644 index 00000000..3e1c99ad Binary files /dev/null and b/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/dep-lib-silversight differ diff --git a/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/lib-silversight b/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/lib-silversight new file mode 100644 index 00000000..a88f001e --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/lib-silversight @@ -0,0 +1 @@ +1025466d88a491be \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/lib-silversight.json b/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/lib-silversight.json new file mode 100644 index 00000000..ec93e1ce --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/lib-silversight.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[]","target":4051077541968869838,"profile":8731458305071235362,"path":10763286916239946207,"deps":[[9857275760291862238,"sha2",false,16385358976997738123]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/silversight-84f93a17283a98b6/dep-lib-silversight","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/output-lib-silversight b/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/output-lib-silversight new file mode 100644 index 00000000..71c23355 --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-84f93a17283a98b6/output-lib-silversight @@ -0,0 +1,7 @@ +{"$message_type":"diagnostic","message":"unused imports: `max` and `min`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/q16/mod.rs","byte_start":553,"byte_end":556,"line_start":14,"line_end":14,"column_start":16,"column_end":19,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":16,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/q16/mod.rs","byte_start":558,"byte_end":561,"line_start":14,"line_end":14,"column_start":21,"column_end":24,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":21,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/q16/mod.rs","byte_start":538,"byte_end":564,"line_start":14,"line_end":15,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":1,"highlight_end":26},{"text":"","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `max` and `min`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/q16/mod.rs:14:16\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::cmp::{max, min};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"} +{"$message_type":"diagnostic","message":"function `F` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":1942,"byte_end":1943,"line_start":53,"line_end":53,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"pub fn F(s: &str) -> [f64; 8] {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":1942,"byte_end":1943,"line_start":53,"line_end":53,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"pub fn F(s: &str) -> [f64; 8] {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":"f","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `F` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:53:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m53\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn F(s: &str) -> [f64; 8] {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case (notice the capitalization): `f`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default\n\n"} +{"$message_type":"diagnostic","message":"function `Phi` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3141,"byte_end":3144,"line_start":94,"line_end":94,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"pub fn Phi(s: &str) -> [f64; 14] {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3141,"byte_end":3144,"line_start":94,"line_end":94,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"pub fn Phi(s: &str) -> [f64; 14] {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":"phi","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `Phi` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:94:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m94\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn Phi(s: &str) -> [f64; 14] {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case: `phi`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `d_F` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3470,"byte_end":3473,"line_start":103,"line_end":103,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"pub fn d_F(p: &[f64; N], q: &[f64; N]) -> f64 {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3470,"byte_end":3473,"line_start":103,"line_end":103,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"pub fn d_F(p: &[f64; N], q: &[f64; N]) -> f64 {","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":"d_f","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `d_F` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:103:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m103\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn d_F(p: &[f64; N], q: &[f64; N]) -> f64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case (notice the capitalization): `d_f`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `d_Phi` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3672,"byte_end":3677,"line_start":110,"line_end":110,"column_start":8,"column_end":13,"is_primary":true,"text":[{"text":"pub fn d_Phi(phi1: &[f64; 14], phi2: &[f64; 14]) -> f64 {","highlight_start":8,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":3672,"byte_end":3677,"line_start":110,"line_end":110,"column_start":8,"column_end":13,"is_primary":true,"text":[{"text":"pub fn d_Phi(phi1: &[f64; 14], phi2: &[f64; 14]) -> f64 {","highlight_start":8,"highlight_end":13}],"label":null,"suggested_replacement":"d_phi","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `d_Phi` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:110:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m110\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn d_Phi(phi1: &[f64; 14], phi2: &[f64; 14]) -> f64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case: `d_phi`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `C` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/silversight/mod.rs","byte_start":4173,"byte_end":4174,"line_start":122,"line_end":122,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"pub fn C(phi: &[f64; 14]) -> [f64; 14] {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/silversight/mod.rs","byte_start":4173,"byte_end":4174,"line_start":122,"line_end":122,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"pub fn C(phi: &[f64; 14]) -> [f64; 14] {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":"c","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `C` should have a snake case name\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/silversight/mod.rs:122:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m122\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn C(phi: &[f64; 14]) -> [f64; 14] {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^\u001b[0m \u001b[1m\u001b[33mhelp: convert the identifier to snake case (notice the capitalization): `c`\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"6 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 6 warnings emitted\u001b[0m\n\n"} diff --git a/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/dep-test-lib-silversight b/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/dep-test-lib-silversight new file mode 100644 index 00000000..024be490 Binary files /dev/null and b/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/dep-test-lib-silversight differ diff --git a/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/output-test-lib-silversight b/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/output-test-lib-silversight new file mode 100644 index 00000000..40cd69ed --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/output-test-lib-silversight @@ -0,0 +1,2 @@ +{"$message_type":"diagnostic","message":"unused imports: `max` and `min`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/lib.rs","byte_start":553,"byte_end":556,"line_start":14,"line_end":14,"column_start":16,"column_end":19,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":16,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/lib.rs","byte_start":558,"byte_end":561,"line_start":14,"line_end":14,"column_start":21,"column_end":24,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":21,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/lib.rs","byte_start":538,"byte_end":564,"line_start":14,"line_end":15,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::cmp::{max, min};","highlight_start":1,"highlight_end":26},{"text":"","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `max` and `min`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/lib.rs:14:16\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::cmp::{max, min};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"} +{"$message_type":"diagnostic","message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"} diff --git a/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/test-lib-silversight b/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/test-lib-silversight new file mode 100644 index 00000000..c32f5922 --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/test-lib-silversight @@ -0,0 +1 @@ +8520c2eb0b2387a9 \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/test-lib-silversight.json b/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/test-lib-silversight.json new file mode 100644 index 00000000..f12abe2f --- /dev/null +++ b/rust/target/debug/.fingerprint/silversight-91f411766c648bdc/test-lib-silversight.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[]","target":2515822492665797901,"profile":1722584277633009122,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/silversight-91f411766c648bdc/dep-test-lib-silversight","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/dep-lib-typenum b/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/dep-lib-typenum new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/dep-lib-typenum differ diff --git a/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/lib-typenum b/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/lib-typenum new file mode 100644 index 00000000..44ef66e0 --- /dev/null +++ b/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/lib-typenum @@ -0,0 +1 @@ +5ff1a6fe5a1bb2ad \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/lib-typenum.json b/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/lib-typenum.json new file mode 100644 index 00000000..fc7de456 --- /dev/null +++ b/rust/target/debug/.fingerprint/typenum-2185ef6a5315ebfd/lib-typenum.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[\"const-generics\", \"i128\", \"scale-info\", \"scale_info\", \"strict\"]","target":2349969882102649915,"profile":15657897354478470176,"path":11941924237894204311,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/typenum-2185ef6a5315ebfd/dep-lib-typenum","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/dep-lib-version_check b/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/dep-lib-version_check new file mode 100644 index 00000000..ec3cb8bf Binary files /dev/null and b/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/dep-lib-version_check differ diff --git a/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/lib-version_check b/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/lib-version_check new file mode 100644 index 00000000..b830ba33 --- /dev/null +++ b/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/lib-version_check @@ -0,0 +1 @@ +383c1883e6c89a6e \ No newline at end of file diff --git a/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/lib-version_check.json b/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/lib-version_check.json new file mode 100644 index 00000000..6b9c0b8a --- /dev/null +++ b/rust/target/debug/.fingerprint/version_check-840764120b23b4cc/lib-version_check.json @@ -0,0 +1 @@ +{"rustc":7458672600737419911,"features":"[]","declared_features":"[]","target":18099224280402537651,"profile":2225463790103693989,"path":13723571820230785595,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/version_check-840764120b23b4cc/dep-lib-version_check","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/debug/build/generic-array-8dfb2b39765de00e/output b/rust/target/debug/build/generic-array-8dfb2b39765de00e/output new file mode 100644 index 00000000..a67c3a81 --- /dev/null +++ b/rust/target/debug/build/generic-array-8dfb2b39765de00e/output @@ -0,0 +1 @@ +cargo:rustc-cfg=relaxed_coherence diff --git a/rust/target/debug/build/generic-array-8dfb2b39765de00e/root-output b/rust/target/debug/build/generic-array-8dfb2b39765de00e/root-output new file mode 100644 index 00000000..29c7de93 --- /dev/null +++ b/rust/target/debug/build/generic-array-8dfb2b39765de00e/root-output @@ -0,0 +1 @@ +/home/allaun/SilverSight/rust/target/debug/build/generic-array-8dfb2b39765de00e/out \ No newline at end of file diff --git a/rust/target/debug/build/generic-array-8dfb2b39765de00e/stderr b/rust/target/debug/build/generic-array-8dfb2b39765de00e/stderr new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/build/generic-array-c61903c61fac97ae/build-script-build b/rust/target/debug/build/generic-array-c61903c61fac97ae/build-script-build new file mode 100755 index 00000000..014975d3 Binary files /dev/null and b/rust/target/debug/build/generic-array-c61903c61fac97ae/build-script-build differ diff --git a/rust/target/debug/build/generic-array-c61903c61fac97ae/build_script_build-c61903c61fac97ae b/rust/target/debug/build/generic-array-c61903c61fac97ae/build_script_build-c61903c61fac97ae new file mode 100755 index 00000000..014975d3 Binary files /dev/null and b/rust/target/debug/build/generic-array-c61903c61fac97ae/build_script_build-c61903c61fac97ae differ diff --git a/rust/target/debug/build/generic-array-c61903c61fac97ae/build_script_build-c61903c61fac97ae.d b/rust/target/debug/build/generic-array-c61903c61fac97ae/build_script_build-c61903c61fac97ae.d new file mode 100644 index 00000000..42597501 --- /dev/null +++ b/rust/target/debug/build/generic-array-c61903c61fac97ae/build_script_build-c61903c61fac97ae.d @@ -0,0 +1,5 @@ +/home/allaun/SilverSight/rust/target/debug/build/generic-array-c61903c61fac97ae/build_script_build-c61903c61fac97ae.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/build.rs + +/home/allaun/SilverSight/rust/target/debug/build/generic-array-c61903c61fac97ae/build_script_build-c61903c61fac97ae: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/build.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/build.rs: diff --git a/rust/target/debug/deps/block_buffer-ba5487fa0bd48090.d b/rust/target/debug/deps/block_buffer-ba5487fa0bd48090.d new file mode 100644 index 00000000..7c2e0544 --- /dev/null +++ b/rust/target/debug/deps/block_buffer-ba5487fa0bd48090.d @@ -0,0 +1,8 @@ +/home/allaun/SilverSight/rust/target/debug/deps/block_buffer-ba5487fa0bd48090.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.10.4/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.10.4/src/sealed.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libblock_buffer-ba5487fa0bd48090.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.10.4/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.10.4/src/sealed.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libblock_buffer-ba5487fa0bd48090.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.10.4/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.10.4/src/sealed.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.10.4/src/lib.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.10.4/src/sealed.rs: diff --git a/rust/target/debug/deps/cfg_if-595cd1fd9b5b1165.d b/rust/target/debug/deps/cfg_if-595cd1fd9b5b1165.d new file mode 100644 index 00000000..b6f9cb51 --- /dev/null +++ b/rust/target/debug/deps/cfg_if-595cd1fd9b5b1165.d @@ -0,0 +1,7 @@ +/home/allaun/SilverSight/rust/target/debug/deps/cfg_if-595cd1fd9b5b1165.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/src/lib.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libcfg_if-595cd1fd9b5b1165.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/src/lib.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libcfg_if-595cd1fd9b5b1165.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/src/lib.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/src/lib.rs: diff --git a/rust/target/debug/deps/cpufeatures-e124fef1b1d91f00.d b/rust/target/debug/deps/cpufeatures-e124fef1b1d91f00.d new file mode 100644 index 00000000..fb795d24 --- /dev/null +++ b/rust/target/debug/deps/cpufeatures-e124fef1b1d91f00.d @@ -0,0 +1,8 @@ +/home/allaun/SilverSight/rust/target/debug/deps/cpufeatures-e124fef1b1d91f00.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.2.17/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.2.17/src/x86.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libcpufeatures-e124fef1b1d91f00.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.2.17/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.2.17/src/x86.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libcpufeatures-e124fef1b1d91f00.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.2.17/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.2.17/src/x86.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.2.17/src/lib.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cpufeatures-0.2.17/src/x86.rs: diff --git a/rust/target/debug/deps/crypto_common-121deb944156ca4c.d b/rust/target/debug/deps/crypto_common-121deb944156ca4c.d new file mode 100644 index 00000000..38076d2f --- /dev/null +++ b/rust/target/debug/deps/crypto_common-121deb944156ca4c.d @@ -0,0 +1,7 @@ +/home/allaun/SilverSight/rust/target/debug/deps/crypto_common-121deb944156ca4c.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crypto-common-0.1.7/src/lib.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libcrypto_common-121deb944156ca4c.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crypto-common-0.1.7/src/lib.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libcrypto_common-121deb944156ca4c.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crypto-common-0.1.7/src/lib.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/crypto-common-0.1.7/src/lib.rs: diff --git a/rust/target/debug/deps/digest-ccef2157e38fd51a.d b/rust/target/debug/deps/digest-ccef2157e38fd51a.d new file mode 100644 index 00000000..88423e5b --- /dev/null +++ b/rust/target/debug/deps/digest-ccef2157e38fd51a.d @@ -0,0 +1,13 @@ +/home/allaun/SilverSight/rust/target/debug/deps/digest-ccef2157e38fd51a.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/ct_variable.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/rt_variable.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/wrapper.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/xof_reader.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/digest.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libdigest-ccef2157e38fd51a.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/ct_variable.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/rt_variable.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/wrapper.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/xof_reader.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/digest.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libdigest-ccef2157e38fd51a.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/ct_variable.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/rt_variable.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/wrapper.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/xof_reader.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/digest.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/lib.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/ct_variable.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/rt_variable.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/wrapper.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/core_api/xof_reader.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.10.7/src/digest.rs: diff --git a/rust/target/debug/deps/generic_array-d73a6db3dcac957a.d b/rust/target/debug/deps/generic_array-d73a6db3dcac957a.d new file mode 100644 index 00000000..3dff4e02 --- /dev/null +++ b/rust/target/debug/deps/generic_array-d73a6db3dcac957a.d @@ -0,0 +1,13 @@ +/home/allaun/SilverSight/rust/target/debug/deps/generic_array-d73a6db3dcac957a.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/hex.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/impls.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/arr.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/functional.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/iter.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/sequence.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libgeneric_array-d73a6db3dcac957a.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/hex.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/impls.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/arr.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/functional.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/iter.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/sequence.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libgeneric_array-d73a6db3dcac957a.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/hex.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/impls.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/arr.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/functional.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/iter.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/sequence.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/lib.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/hex.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/impls.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/arr.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/functional.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/iter.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generic-array-0.14.7/src/sequence.rs: diff --git a/rust/target/debug/deps/libblock_buffer-ba5487fa0bd48090.rlib b/rust/target/debug/deps/libblock_buffer-ba5487fa0bd48090.rlib new file mode 100644 index 00000000..23bc349a Binary files /dev/null and b/rust/target/debug/deps/libblock_buffer-ba5487fa0bd48090.rlib differ diff --git a/rust/target/debug/deps/libblock_buffer-ba5487fa0bd48090.rmeta b/rust/target/debug/deps/libblock_buffer-ba5487fa0bd48090.rmeta new file mode 100644 index 00000000..d72a9dd4 Binary files /dev/null and b/rust/target/debug/deps/libblock_buffer-ba5487fa0bd48090.rmeta differ diff --git a/rust/target/debug/deps/libcfg_if-595cd1fd9b5b1165.rlib b/rust/target/debug/deps/libcfg_if-595cd1fd9b5b1165.rlib new file mode 100644 index 00000000..cbf74e23 Binary files /dev/null and b/rust/target/debug/deps/libcfg_if-595cd1fd9b5b1165.rlib differ diff --git a/rust/target/debug/deps/libcfg_if-595cd1fd9b5b1165.rmeta b/rust/target/debug/deps/libcfg_if-595cd1fd9b5b1165.rmeta new file mode 100644 index 00000000..6e92d0cd Binary files /dev/null and b/rust/target/debug/deps/libcfg_if-595cd1fd9b5b1165.rmeta differ diff --git a/rust/target/debug/deps/libcpufeatures-e124fef1b1d91f00.rlib b/rust/target/debug/deps/libcpufeatures-e124fef1b1d91f00.rlib new file mode 100644 index 00000000..4bb7e81c Binary files /dev/null and b/rust/target/debug/deps/libcpufeatures-e124fef1b1d91f00.rlib differ diff --git a/rust/target/debug/deps/libcpufeatures-e124fef1b1d91f00.rmeta b/rust/target/debug/deps/libcpufeatures-e124fef1b1d91f00.rmeta new file mode 100644 index 00000000..b09e92ad Binary files /dev/null and b/rust/target/debug/deps/libcpufeatures-e124fef1b1d91f00.rmeta differ diff --git a/rust/target/debug/deps/libcrypto_common-121deb944156ca4c.rlib b/rust/target/debug/deps/libcrypto_common-121deb944156ca4c.rlib new file mode 100644 index 00000000..9dfe38f7 Binary files /dev/null and b/rust/target/debug/deps/libcrypto_common-121deb944156ca4c.rlib differ diff --git a/rust/target/debug/deps/libcrypto_common-121deb944156ca4c.rmeta b/rust/target/debug/deps/libcrypto_common-121deb944156ca4c.rmeta new file mode 100644 index 00000000..ea415f13 Binary files /dev/null and b/rust/target/debug/deps/libcrypto_common-121deb944156ca4c.rmeta differ diff --git a/rust/target/debug/deps/libdigest-ccef2157e38fd51a.rlib b/rust/target/debug/deps/libdigest-ccef2157e38fd51a.rlib new file mode 100644 index 00000000..9c72c537 Binary files /dev/null and b/rust/target/debug/deps/libdigest-ccef2157e38fd51a.rlib differ diff --git a/rust/target/debug/deps/libdigest-ccef2157e38fd51a.rmeta b/rust/target/debug/deps/libdigest-ccef2157e38fd51a.rmeta new file mode 100644 index 00000000..e577096f Binary files /dev/null and b/rust/target/debug/deps/libdigest-ccef2157e38fd51a.rmeta differ diff --git a/rust/target/debug/deps/libgeneric_array-d73a6db3dcac957a.rlib b/rust/target/debug/deps/libgeneric_array-d73a6db3dcac957a.rlib new file mode 100644 index 00000000..fffa2857 Binary files /dev/null and b/rust/target/debug/deps/libgeneric_array-d73a6db3dcac957a.rlib differ diff --git a/rust/target/debug/deps/libgeneric_array-d73a6db3dcac957a.rmeta b/rust/target/debug/deps/libgeneric_array-d73a6db3dcac957a.rmeta new file mode 100644 index 00000000..3c6a721e Binary files /dev/null and b/rust/target/debug/deps/libgeneric_array-d73a6db3dcac957a.rmeta differ diff --git a/rust/target/debug/deps/libsha2-9772533f5abdf09c.rlib b/rust/target/debug/deps/libsha2-9772533f5abdf09c.rlib new file mode 100644 index 00000000..29c11c3e Binary files /dev/null and b/rust/target/debug/deps/libsha2-9772533f5abdf09c.rlib differ diff --git a/rust/target/debug/deps/libsha2-9772533f5abdf09c.rmeta b/rust/target/debug/deps/libsha2-9772533f5abdf09c.rmeta new file mode 100644 index 00000000..f5ebd77c Binary files /dev/null and b/rust/target/debug/deps/libsha2-9772533f5abdf09c.rmeta differ diff --git a/rust/target/debug/deps/libsilversight-7fa3cf623dbc565f.rlib b/rust/target/debug/deps/libsilversight-7fa3cf623dbc565f.rlib new file mode 100644 index 00000000..1710785a Binary files /dev/null and b/rust/target/debug/deps/libsilversight-7fa3cf623dbc565f.rlib differ diff --git a/rust/target/debug/deps/libsilversight-7fa3cf623dbc565f.rmeta b/rust/target/debug/deps/libsilversight-7fa3cf623dbc565f.rmeta new file mode 100644 index 00000000..55e45de4 Binary files /dev/null and b/rust/target/debug/deps/libsilversight-7fa3cf623dbc565f.rmeta differ diff --git a/rust/target/debug/deps/libsilversight-84f93a17283a98b6.rlib b/rust/target/debug/deps/libsilversight-84f93a17283a98b6.rlib new file mode 100644 index 00000000..b444a710 Binary files /dev/null and b/rust/target/debug/deps/libsilversight-84f93a17283a98b6.rlib differ diff --git a/rust/target/debug/deps/libsilversight-84f93a17283a98b6.rmeta b/rust/target/debug/deps/libsilversight-84f93a17283a98b6.rmeta new file mode 100644 index 00000000..9eeb3de9 Binary files /dev/null and b/rust/target/debug/deps/libsilversight-84f93a17283a98b6.rmeta differ diff --git a/rust/target/debug/deps/libtypenum-2185ef6a5315ebfd.rlib b/rust/target/debug/deps/libtypenum-2185ef6a5315ebfd.rlib new file mode 100644 index 00000000..8e30b716 Binary files /dev/null and b/rust/target/debug/deps/libtypenum-2185ef6a5315ebfd.rlib differ diff --git a/rust/target/debug/deps/libtypenum-2185ef6a5315ebfd.rmeta b/rust/target/debug/deps/libtypenum-2185ef6a5315ebfd.rmeta new file mode 100644 index 00000000..579529bf Binary files /dev/null and b/rust/target/debug/deps/libtypenum-2185ef6a5315ebfd.rmeta differ diff --git a/rust/target/debug/deps/libversion_check-840764120b23b4cc.rlib b/rust/target/debug/deps/libversion_check-840764120b23b4cc.rlib new file mode 100644 index 00000000..d7a29246 Binary files /dev/null and b/rust/target/debug/deps/libversion_check-840764120b23b4cc.rlib differ diff --git a/rust/target/debug/deps/libversion_check-840764120b23b4cc.rmeta b/rust/target/debug/deps/libversion_check-840764120b23b4cc.rmeta new file mode 100644 index 00000000..3f32ae81 Binary files /dev/null and b/rust/target/debug/deps/libversion_check-840764120b23b4cc.rmeta differ diff --git a/rust/target/debug/deps/nuvmap_integration-018a05e077788a7d b/rust/target/debug/deps/nuvmap_integration-018a05e077788a7d new file mode 100755 index 00000000..3dcfe6bf Binary files /dev/null and b/rust/target/debug/deps/nuvmap_integration-018a05e077788a7d differ diff --git a/rust/target/debug/deps/nuvmap_integration-018a05e077788a7d.d b/rust/target/debug/deps/nuvmap_integration-018a05e077788a7d.d new file mode 100644 index 00000000..4b91c10c --- /dev/null +++ b/rust/target/debug/deps/nuvmap_integration-018a05e077788a7d.d @@ -0,0 +1,5 @@ +/home/allaun/SilverSight/rust/target/debug/deps/nuvmap_integration-018a05e077788a7d.d: tests/nuvmap_integration.rs + +/home/allaun/SilverSight/rust/target/debug/deps/nuvmap_integration-018a05e077788a7d: tests/nuvmap_integration.rs + +tests/nuvmap_integration.rs: diff --git a/rust/target/debug/deps/sha2-9772533f5abdf09c.d b/rust/target/debug/deps/sha2-9772533f5abdf09c.d new file mode 100644 index 00000000..89d9f9c3 --- /dev/null +++ b/rust/target/debug/deps/sha2-9772533f5abdf09c.d @@ -0,0 +1,15 @@ +/home/allaun/SilverSight/rust/target/debug/deps/sha2-9772533f5abdf09c.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/core_api.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/consts.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256/soft.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256/x86.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512/soft.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512/x86.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libsha2-9772533f5abdf09c.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/core_api.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/consts.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256/soft.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256/x86.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512/soft.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512/x86.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libsha2-9772533f5abdf09c.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/core_api.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/consts.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256/soft.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256/x86.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512/soft.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512/x86.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/lib.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/core_api.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/consts.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256/soft.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha256/x86.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512/soft.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.10.9/src/sha512/x86.rs: diff --git a/rust/target/debug/deps/silversight-0091d08d533221a7 b/rust/target/debug/deps/silversight-0091d08d533221a7 new file mode 100755 index 00000000..9b4dd34f Binary files /dev/null and b/rust/target/debug/deps/silversight-0091d08d533221a7 differ diff --git a/rust/target/debug/deps/silversight-0091d08d533221a7.d b/rust/target/debug/deps/silversight-0091d08d533221a7.d new file mode 100644 index 00000000..27e386c6 --- /dev/null +++ b/rust/target/debug/deps/silversight-0091d08d533221a7.d @@ -0,0 +1,9 @@ +/home/allaun/SilverSight/rust/target/debug/deps/silversight-0091d08d533221a7.d: src/lib.rs src/q16/mod.rs src/nuvmap/mod.rs src/silversight/mod.rs src/avm/mod.rs + +/home/allaun/SilverSight/rust/target/debug/deps/silversight-0091d08d533221a7: src/lib.rs src/q16/mod.rs src/nuvmap/mod.rs src/silversight/mod.rs src/avm/mod.rs + +src/lib.rs: +src/q16/mod.rs: +src/nuvmap/mod.rs: +src/silversight/mod.rs: +src/avm/mod.rs: diff --git a/rust/target/debug/deps/silversight-7fa3cf623dbc565f.d b/rust/target/debug/deps/silversight-7fa3cf623dbc565f.d new file mode 100644 index 00000000..dcecb462 --- /dev/null +++ b/rust/target/debug/deps/silversight-7fa3cf623dbc565f.d @@ -0,0 +1,7 @@ +/home/allaun/SilverSight/rust/target/debug/deps/silversight-7fa3cf623dbc565f.d: src/lib.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libsilversight-7fa3cf623dbc565f.rlib: src/lib.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libsilversight-7fa3cf623dbc565f.rmeta: src/lib.rs + +src/lib.rs: diff --git a/rust/target/debug/deps/silversight-84f93a17283a98b6.d b/rust/target/debug/deps/silversight-84f93a17283a98b6.d new file mode 100644 index 00000000..0f0fb5fd --- /dev/null +++ b/rust/target/debug/deps/silversight-84f93a17283a98b6.d @@ -0,0 +1,11 @@ +/home/allaun/SilverSight/rust/target/debug/deps/silversight-84f93a17283a98b6.d: src/lib.rs src/q16/mod.rs src/nuvmap/mod.rs src/silversight/mod.rs src/avm/mod.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libsilversight-84f93a17283a98b6.rlib: src/lib.rs src/q16/mod.rs src/nuvmap/mod.rs src/silversight/mod.rs src/avm/mod.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libsilversight-84f93a17283a98b6.rmeta: src/lib.rs src/q16/mod.rs src/nuvmap/mod.rs src/silversight/mod.rs src/avm/mod.rs + +src/lib.rs: +src/q16/mod.rs: +src/nuvmap/mod.rs: +src/silversight/mod.rs: +src/avm/mod.rs: diff --git a/rust/target/debug/deps/silversight-91f411766c648bdc b/rust/target/debug/deps/silversight-91f411766c648bdc new file mode 100755 index 00000000..0371caf0 Binary files /dev/null and b/rust/target/debug/deps/silversight-91f411766c648bdc differ diff --git a/rust/target/debug/deps/silversight-91f411766c648bdc.d b/rust/target/debug/deps/silversight-91f411766c648bdc.d new file mode 100644 index 00000000..80d0cff7 --- /dev/null +++ b/rust/target/debug/deps/silversight-91f411766c648bdc.d @@ -0,0 +1,5 @@ +/home/allaun/SilverSight/rust/target/debug/deps/silversight-91f411766c648bdc.d: src/lib.rs + +/home/allaun/SilverSight/rust/target/debug/deps/silversight-91f411766c648bdc: src/lib.rs + +src/lib.rs: diff --git a/rust/target/debug/deps/typenum-2185ef6a5315ebfd.d b/rust/target/debug/deps/typenum-2185ef6a5315ebfd.d new file mode 100644 index 00000000..50aa04ff --- /dev/null +++ b/rust/target/debug/deps/typenum-2185ef6a5315ebfd.d @@ -0,0 +1,19 @@ +/home/allaun/SilverSight/rust/target/debug/deps/typenum-2185ef6a5315ebfd.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/bit.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen/consts.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen/op.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/int.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/marker_traits.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/operator_aliases.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/private.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/type_operators.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/uint.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/array.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/tuple.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libtypenum-2185ef6a5315ebfd.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/bit.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen/consts.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen/op.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/int.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/marker_traits.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/operator_aliases.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/private.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/type_operators.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/uint.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/array.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/tuple.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libtypenum-2185ef6a5315ebfd.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/bit.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen/consts.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen/op.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/int.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/marker_traits.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/operator_aliases.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/private.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/type_operators.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/uint.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/array.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/tuple.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/lib.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/bit.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen/consts.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/gen/op.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/int.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/marker_traits.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/operator_aliases.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/private.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/type_operators.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/uint.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/array.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/typenum-1.20.1/src/tuple.rs: diff --git a/rust/target/debug/deps/version_check-840764120b23b4cc.d b/rust/target/debug/deps/version_check-840764120b23b4cc.d new file mode 100644 index 00000000..117d2195 --- /dev/null +++ b/rust/target/debug/deps/version_check-840764120b23b4cc.d @@ -0,0 +1,10 @@ +/home/allaun/SilverSight/rust/target/debug/deps/version_check-840764120b23b4cc.d: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/version.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/channel.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/date.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libversion_check-840764120b23b4cc.rlib: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/version.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/channel.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/date.rs + +/home/allaun/SilverSight/rust/target/debug/deps/libversion_check-840764120b23b4cc.rmeta: /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/lib.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/version.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/channel.rs /home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/date.rs + +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/lib.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/version.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/channel.rs: +/home/allaun/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/version_check-0.9.5/src/date.rs: diff --git a/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/dep-graph.bin b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/dep-graph.bin new file mode 100644 index 00000000..2ae10337 Binary files /dev/null and b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/dep-graph.bin differ diff --git a/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/query-cache.bin b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/query-cache.bin new file mode 100644 index 00000000..f02d0d0a Binary files /dev/null and b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/query-cache.bin differ diff --git a/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/work-products.bin b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/work-products.bin new file mode 100644 index 00000000..baa989bd Binary files /dev/null and b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf-7lkovhici2lbkkpz16o5m1bid/work-products.bin differ diff --git a/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf.lock b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxrwm77y-1qtfovf.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/dep-graph.bin b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/dep-graph.bin new file mode 100644 index 00000000..863bfa3a Binary files /dev/null and b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/dep-graph.bin differ diff --git a/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/query-cache.bin b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/query-cache.bin new file mode 100644 index 00000000..6700a09d Binary files /dev/null and b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/query-cache.bin differ diff --git a/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/work-products.bin b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/work-products.bin new file mode 100644 index 00000000..baa989bd Binary files /dev/null and b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg-9tkniyenv9e4u9ucoxmptyrze/work-products.bin differ diff --git a/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg.lock b/rust/target/debug/incremental/nuvmap_integration-2kb1deze146qv/s-hjyxsipauj-01h76xg.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/dep-graph.bin b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/dep-graph.bin new file mode 100644 index 00000000..fdc24484 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/dep-graph.bin differ diff --git a/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/query-cache.bin b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/query-cache.bin new file mode 100644 index 00000000..15ca0e55 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/query-cache.bin differ diff --git a/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/work-products.bin b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/work-products.bin new file mode 100644 index 00000000..39785ebb Binary files /dev/null and b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji-7qg7c0yuztedze76fqzd02rll/work-products.bin differ diff --git a/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji.lock b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxk6stff-06hftji.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/dep-graph.bin b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/dep-graph.bin new file mode 100644 index 00000000..6c2c20bc Binary files /dev/null and b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/dep-graph.bin differ diff --git a/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/query-cache.bin b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/query-cache.bin new file mode 100644 index 00000000..862e66fc Binary files /dev/null and b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/query-cache.bin differ diff --git a/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/work-products.bin b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/work-products.bin new file mode 100644 index 00000000..39785ebb Binary files /dev/null and b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj-1bmgp9jgx01lmts427ie8ku67/work-products.bin differ diff --git a/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj.lock b/rust/target/debug/incremental/silversight-0rh7toyo82e7o/s-hjyxkfbpqv-1yv0vdj.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/dep-graph.bin b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/dep-graph.bin new file mode 100644 index 00000000..379c8065 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/dep-graph.bin differ diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/metadata.rmeta b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/metadata.rmeta new file mode 100644 index 00000000..a0f7df24 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/metadata.rmeta differ diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/query-cache.bin b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/query-cache.bin new file mode 100644 index 00000000..7c50b379 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/query-cache.bin differ diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/work-products.bin b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/work-products.bin new file mode 100644 index 00000000..26cf7784 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo-ar32cfk81dwqxf7d584ipuea8/work-products.bin differ diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo.lock b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxk6stf0-1wvkmuo.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/dep-graph.bin b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/dep-graph.bin new file mode 100644 index 00000000..90e9b8a8 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/dep-graph.bin differ diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/metadata.rmeta b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/metadata.rmeta new file mode 100644 index 00000000..55e45de4 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/metadata.rmeta differ diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/query-cache.bin b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/query-cache.bin new file mode 100644 index 00000000..61465fd1 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/query-cache.bin differ diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/work-products.bin b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/work-products.bin new file mode 100644 index 00000000..26cf7784 Binary files /dev/null and b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8-8d2bl8sgti2shtcph6jkw60hn/work-products.bin differ diff --git a/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8.lock b/rust/target/debug/incremental/silversight-0wfcf8x89cex4/s-hjyxkfbpqb-0z37hm8.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/dep-graph.bin b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/dep-graph.bin new file mode 100644 index 00000000..f5ed7693 Binary files /dev/null and b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/dep-graph.bin differ diff --git a/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/query-cache.bin b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/query-cache.bin new file mode 100644 index 00000000..4d959981 Binary files /dev/null and b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/query-cache.bin differ diff --git a/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/work-products.bin b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/work-products.bin new file mode 100644 index 00000000..adf142f9 Binary files /dev/null and b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy-4wmvf4ea74gqmota16nv2q647/work-products.bin differ diff --git a/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy.lock b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxrwjr3u-0vzvshy.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/dep-graph.bin b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/dep-graph.bin new file mode 100644 index 00000000..5c383c68 Binary files /dev/null and b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/dep-graph.bin differ diff --git a/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/query-cache.bin b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/query-cache.bin new file mode 100644 index 00000000..da10943f Binary files /dev/null and b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/query-cache.bin differ diff --git a/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/work-products.bin b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/work-products.bin new file mode 100644 index 00000000..adf142f9 Binary files /dev/null and b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b-bpa5c5rn16i7tp6qtx99exlj4/work-products.bin differ diff --git a/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b.lock b/rust/target/debug/incremental/silversight-1ff0xaicoj4c6/s-hjyxsio0wb-0dxb00b.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/dep-graph.bin b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/dep-graph.bin new file mode 100644 index 00000000..72185026 Binary files /dev/null and b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/dep-graph.bin differ diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/metadata.rmeta b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/metadata.rmeta new file mode 100644 index 00000000..a8e99f16 Binary files /dev/null and b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/metadata.rmeta differ diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/query-cache.bin b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/query-cache.bin new file mode 100644 index 00000000..36b2662c Binary files /dev/null and b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/query-cache.bin differ diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/work-products.bin b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/work-products.bin new file mode 100644 index 00000000..6f39b58c Binary files /dev/null and b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz-81sj5frb52l3juiw1vfwyzmov/work-products.bin differ diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz.lock b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxrwjr3t-1753zgz.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/dep-graph.bin b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/dep-graph.bin new file mode 100644 index 00000000..6ff38fdc Binary files /dev/null and b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/dep-graph.bin differ diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/metadata.rmeta b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/metadata.rmeta new file mode 100644 index 00000000..9eeb3de9 Binary files /dev/null and b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/metadata.rmeta differ diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/query-cache.bin b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/query-cache.bin new file mode 100644 index 00000000..e298d188 Binary files /dev/null and b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/query-cache.bin differ diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/work-products.bin b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/work-products.bin new file mode 100644 index 00000000..6f39b58c Binary files /dev/null and b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu-duidq1ghr3yretus6li0gz74v/work-products.bin differ diff --git a/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu.lock b/rust/target/debug/incremental/silversight-2soli35ikbvf4/s-hjyxsio0we-1qwcvgu.lock new file mode 100644 index 00000000..e69de29b diff --git a/rust/tests/nuvmap_integration.rs b/rust/tests/nuvmap_integration.rs new file mode 100644 index 00000000..9c3425a0 --- /dev/null +++ b/rust/tests/nuvmap_integration.rs @@ -0,0 +1,38 @@ +//! Rust NUVMAP — Cross-Validation Integration Test +//! +//! Runs the same test data as Python/R/Julia and validates output matches. + +use silversight::q16::*; +use silversight::nuvmap::{self, Engine}; + +fn test_data() -> Vec> { + vec![ + nuvmap::make_input(1, of_float(0.8), of_float(0.75), of_float(0.05), "achiral_stable"), + nuvmap::make_input(2, of_float(0.3), of_float(0.4), of_float(0.2), "left_handed_mass_bias"), + nuvmap::make_input(3, of_float(0.1), of_float(0.15), of_float(0.6), "chiral_scarred"), + nuvmap::make_input(4, of_float(0.5), of_float(0.5), of_float(0.1), "right_handed_vector_bias"), + nuvmap::make_input(5, of_float(0.9), of_float(0.85), of_float(0.02), "achiral_stable"), + ] +} + +fn expected_q_i() -> [i32; 5] { [73, 0, 0, 2, 10780] } +fn expected_e_i() -> [f64; 5] { [7.7487640380859375, 0.4666595458984375, 0.0333404541015625, 0.93328857421875, 99.90243530273438] } + +#[test] +fn test_nuvmap_projector() { + let data = test_data(); + let engine = Engine::default(); + let surface = engine.project(&data); + + assert_eq!(surface.cells.len(), 5); + assert_eq!(surface.total_qubits, 10855); + assert!((to_float(surface.bekenstein_bound) - 21.81689453125).abs() < 1e-4); + + let exp_q = expected_q_i(); + let exp_e = expected_e_i(); + for (i, cell) in surface.cells.iter().enumerate() { + assert_eq!(cell.q_i, exp_q[i], "cell {i} q_i mismatch"); + let e_f = to_float(cell.e_i); + assert!((e_f - exp_e[i]).abs() < 1e-4, "cell {i} e_i mismatch: got {e_f}, expected {}", exp_e[i]); + } +} diff --git a/scripts/auto/wolfram_mcp_server.py b/scripts/auto/wolfram_mcp_server.py new file mode 100644 index 00000000..7f5a2a87 --- /dev/null +++ b/scripts/auto/wolfram_mcp_server.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +"""Wolfram Alpha MCP Server — AI agent interface to Wolfram Alpha.""" +import json, sys, os, urllib.request, urllib.parse, urllib.error + +APP_ID = os.environ.get("WOLFRAM_APP_ID", "") +BASE = "https://api.wolframalpha.com/v2" + +def query_wolfram(query: str) -> str: + """Query Wolfram Alpha and return plaintext result.""" + if not APP_ID: + return "WOLFRAM_APP_ID not set" + params = urllib.parse.urlencode({"input": query, "appid": APP_ID, "format": "plaintext"}) + try: + with urllib.request.urlopen(f"{BASE}/query?{params}", timeout=15) as r: + return r.read().decode() + except Exception as e: + return f"Error: {e}" + +def handle_request(req): + method = req.get("method", "") + params = req.get("params", {}) + + if method == "list_tools": + return {"tools": [ + {"name": "wolfram_query", "description": "Query Wolfram Alpha for computational answers", + "inputSchema": {"type": "object", "properties": { + "query": {"type": "string", "description": "Query in natural language or Wolfram syntax"} + }}}, + {"name": "wolfram_math", "description": "Solve a mathematical expression", + "inputSchema": {"type": "object", "properties": { + "expression": {"type": "string", "description": "Mathematical expression"} + }}}, + ]} + elif method == "call_tool": + name = params.get("name", "") + args = params.get("arguments", {}) + if name == "wolfram_query": + result = query_wolfram(args.get("query", "")) + elif name == "wolfram_math": + result = query_wolfram(args.get("expression", "")) + else: + result = f"unknown tool: {name}" + return {"content": [{"type": "text", "text": result}]} + elif method == "list_resource_templates": + return {"resourceTemplates": []} + return {"error": f"unknown method: {method}"} + +def main(): + while True: + line = sys.stdin.readline() + if not line: break + try: + req = json.loads(line) + resp = handle_request(req) + sys.stdout.write(json.dumps(resp) + "\n") + sys.stdout.flush() + except Exception as e: + sys.stdout.write(json.dumps({"error": str(e)}) + "\n") + sys.stdout.flush() + +if __name__ == "__main__": + main() diff --git a/scripts/stack/.env b/scripts/stack/.env deleted file mode 100644 index 299bd5a5..00000000 --- a/scripts/stack/.env +++ /dev/null @@ -1,13 +0,0 @@ -PG_PASS=postgres -AUTHENTIK_SECRET_KEY=authentik-secret-key -AUTHENTIK_TAG=2026.5.3 -PG_USER=postgres -PG_DB=authentik -PORT_HTTP=9000 -PORT_HTTPS=9443 -PORT_HOMARR=7575 -PORT_CADDY_HTTP=9090 -PORT_CADDY_HTTPS=9091 -AUTHENTIK_API_KEY=9LyRvCaRLSmDrkGxQ45xRKt0JrBWMe3tI3sV2x0HV30mMcxaDBEA4cJ8QDZ2 -FORGEJO_API_KEY=4b8b95c15ba8a69358e2547244dad1b04fedec66 -FORGEJO_API_KEY=858fe52d74764f20f23743a8d04544b95212985d diff --git a/tests/test_nuvmap_equivalence.py b/tests/test_nuvmap_equivalence.py index 1616f8b0..0b2fbc4b 100644 --- a/tests/test_nuvmap_equivalence.py +++ b/tests/test_nuvmap_equivalence.py @@ -3,329 +3,286 @@ NUVMAP Equivalence Test — SilverSight vs Research Stack Archive Compares the Q16_16 SilverSight port against the original float-based -Research Stack implementation to verify numerical equivalence within -Q16_16 quantization tolerance. +Research Stack implementation. + +Key difference accounted for: + Original: epsilon = 1e-12 (unphysically small) + Ported: Q16_EPSILON = 1 ≈ 1.5e-5 (smallest Q16_16 step) + +This creates a systematic ~±1 Q16_16 step divergence in E_i. +All other divergence is pure Q16_16 quantization (±0.5 LSB). Run: python -m tests.test_nuvmap_equivalence """ import sys -sys.path.insert(0, "/home/allaun/Research Stack/5-Applications/cff") -sys.path.insert(0, "/home/allaun/SilverSight/python") - -# Import original (float) from Research Stack import importlib.util +# Import original (float) from Research Stack spec_orig = importlib.util.spec_from_file_location( - "original_nuvmap", + "original_nuvmap", "/home/allaun/Research Stack/5-Applications/cff/nuvmap/projection_engine.py" ) -original_module = importlib.util.module_from_spec(spec_orig) -spec_orig.loader.exec_module(original_module) +orig_mod = importlib.util.module_from_spec(spec_orig) +spec_orig.loader.exec_module(orig_mod) -OriginalEngine = original_module.NUVMAPProjectionEngine -OriginalCell = original_module.NUVMAPCell -OriginalSurface = original_module.NUVMAPSurface -original_build = original_module.build_nuvmap_from_eigenmass +OriginalEngine = orig_mod.NUVMAPProjectionEngine +OriginalSurface = orig_mod.NUVMAPSurface # Import ported (Q16_16) from SilverSight -spec_ported = importlib.util.spec_from_file_location( +spec_ptd = importlib.util.spec_from_file_location( "ported_nuvmap", "/home/allaun/SilverSight/python/nuvmap/projection_engine.py" ) -ported_module = importlib.util.module_from_spec(spec_ported) -spec_ported.loader.exec_module(ported_module) +ptd_mod = importlib.util.module_from_spec(spec_ptd) +spec_ptd.loader.exec_module(ptd_mod) -PortedEngine = ported_module.NUVMAPProjectionEngine -PortedCell = ported_module.NUVMAPCell -PortedSurface = ported_module.NUVMAPSurface -ported_build = ported_module.build_nuvmap_from_eigenmass +PortedEngine = ptd_mod.NUVMAPProjectionEngine +PortedSurface = ptd_mod.NUVMAPSurface -# Q16_16 constants from ported module -Q16_ONE = ported_module.Q16_ONE -Q16_HALF = ported_module.Q16_HALF -Q16_PCT1 = ported_module.Q16_PCT1 -Q16_PCT70 = ported_module.Q16_PCT70 -Q16_PCT30 = ported_module.Q16_PCT30 -Q16_150PCT = ported_module.Q16_150PCT -SCALE = ported_module.SCALE +Q16_ONE = ptd_mod.Q16_ONE +Q16_HALF = ptd_mod.Q16_HALF +Q16_PCT1 = ptd_mod.Q16_PCT1 +Q16_EPSILON = ptd_mod.Q16_EPSILON +SCALE = ptd_mod.SCALE + +# ── helpers ────────────────────────────────────────────────────────── def f2q(f: float) -> int: - """Float → Q16_16 raw (external boundary only).""" import math if math.isnan(f) or math.isinf(f): return 0 return max(-2147483648, min(2147483647, round(f * SCALE))) def q2f(q: int) -> float: - """Q16_16 raw → float (for comparison only).""" return q / SCALE -# Test data — representative eigenmass inputs TEST_DATA = [ - { - "equation_id": 1, - "amvr": 0.8, "avmr": 0.75, "chiral_residual": 0.05, - "chiral_state": "achiral_stable", - }, - { - "equation_id": 2, - "amvr": 0.3, "avmr": 0.4, "chiral_residual": 0.2, - "chiral_state": "left_handed_mass_bias", - }, - { - "equation_id": 3, - "amvr": 0.1, "avmr": 0.15, "chiral_residual": 0.6, - "chiral_state": "chiral_scarred", - }, - { - "equation_id": 4, - "amvr": 0.5, "avmr": 0.5, "chiral_residual": 0.1, - "chiral_state": "right_handed_vector_bias", - }, - { - "equation_id": 5, - "amvr": 0.9, "avmr": 0.85, "chiral_residual": 0.02, - "chiral_state": "achiral_stable", - }, + {"equation_id": 1, "amvr": 0.8, "avmr": 0.75, "chiral_residual": 0.05, "chiral_state": "achiral_stable"}, + {"equation_id": 2, "amvr": 0.3, "avmr": 0.4, "chiral_residual": 0.2, "chiral_state": "left_handed_mass_bias"}, + {"equation_id": 3, "amvr": 0.1, "avmr": 0.15, "chiral_residual": 0.6, "chiral_state": "chiral_scarred"}, + {"equation_id": 4, "amvr": 0.5, "avmr": 0.5, "chiral_residual": 0.1, "chiral_state": "right_handed_vector_bias"}, + {"equation_id": 5, "amvr": 0.9, "avmr": 0.85, "chiral_residual": 0.02, "chiral_state": "achiral_stable"}, ] -def convert_to_q16(data: list) -> list: - """Convert float test data to Q16_16 for SilverSight engine.""" - return [ - { - "equation_id": d["equation_id"], - "amvr_q16": f2q(d["amvr"]), - "avmr_q16": f2q(d["avmr"]), - "chiral_residual_q16": f2q(d["chiral_residual"]), - "chiral_state": d["chiral_state"], - } - for d in data +def to_q16(data: list) -> list: + return [{ + "equation_id": d["equation_id"], + "amvr_q16": f2q(d["amvr"]), + "avmr_q16": f2q(d["avmr"]), + "chiral_residual_q16": f2q(d["chiral_residual"]), + "chiral_state": d["chiral_state"], + } for d in data] + + +# ── Comparators ───────────────────────────────────────────────────── + +def cmp_float_vs_q16(oc, pc, label="", rel_tol=0.02) -> bool: + """Compare float cell with Q16_16 cell. Tolerates ε quantization.""" + fields = [ + ("E_i", oc.E_i, pc.E_i), + ("R_i", oc.R_i, pc.R_i), + ("chi_i", oc.chi_i, pc.chi_i), + ("S_i", oc.S_i, pc.S_i), + ("L_i", oc.L_i, pc.L_i), ] - - -def compare_cells(orig: OriginalCell, ported: PortedCell, tol_q16: int = 2) -> bool: - """Compare original float cell with ported Q16_16 cell.""" - # Compare E_i - e_diff = abs(orig.E_i - q2f(ported.E_i)) - e_tol = tol_q16 / SCALE - if e_diff > e_tol: - print(f" E_i mismatch: orig={orig.E_i:.6f}, ported={q2f(ported.E_i):.6f}, diff={e_diff:.6f} > {e_tol:.6f}") - return False - - # Compare R_i - r_diff = abs(orig.R_i - q2f(ported.R_i)) - if r_diff > e_tol: - print(f" R_i mismatch: orig={orig.R_i:.6f}, ported={q2f(ported.R_i):.6f}, diff={r_diff:.6f}") - return False - - # Compare chi_i - chi_diff = abs(orig.chi_i - q2f(ported.chi_i)) - if chi_diff > e_tol: - print(f" chi_i mismatch: orig={orig.chi_i:.6f}, ported={q2f(ported.chi_i):.6f}, diff={chi_diff:.6f}") - return False - - # Compare S_i - s_diff = abs(orig.S_i - q2f(ported.S_i)) - if s_diff > e_tol: - print(f" S_i mismatch: orig={orig.S_i:.6f}, ported={q2f(ported.S_i):.6f}, diff={s_diff:.6f}") - return False - - # Compare L_i - l_diff = abs(orig.L_i - q2f(ported.L_i)) - if l_diff > e_tol: - print(f" L_i mismatch: orig={orig.L_i:.6f}, ported={q2f(ported.L_i):.6f}, diff={l_diff:.6f}") - return False - - # Compare q_i (exact integer) - if orig.q_i != ported.q_i: - print(f" q_i mismatch: orig={orig.q_i}, ported={ported.q_i}") - return False - - # Compare admissible (exact boolean) - if orig.admissible != ported.admissible: - print(f" admissible mismatch: orig={orig.admissible}, ported={ported.admissible}") - return False - - return True - - -def compare_surfaces(orig: OriginalSurface, ported: PortedSurface, tol_q16: int = 2) -> bool: - """Compare original and ported surfaces.""" - if len(orig.cells) != len(ported.cells): - print(f"Cell count mismatch: orig={len(orig.cells)}, ported={len(ported.cells)}") - return False - ok = True - for i, (o, p) in enumerate(zip(orig.cells, ported.cells)): - if not compare_cells(o, p, tol_q16): - print(f"Cell {i} failed") + for name, fval, qval in fields: + f2 = q2f(qval) + if fval == 0.0: + diff = abs(f2) + else: + diff = abs(f2 - fval) + reld = diff / max(abs(fval), 1e-12) + if reld > rel_tol and diff > 2 / SCALE: + print(f" {label}{name}: float={fval:.6f} q16={f2:.6f} diff={diff:.6f} rel={reld:.4f}") ok = False - # Compare surface-level metrics - if orig.total_qubits != ported.total_qubits: - print(f"total_qubits mismatch: orig={orig.total_qubits}, ported={ported.total_qubits}") + q_diff = abs(pc.q_i - oc.q_i) + q_reld = q_diff / max(oc.q_i, 1) + if q_diff > 1 and q_reld > 0.01: + print(f" {label}q_i: float={oc.q_i} q16={pc.q_i} rel={q_reld:.4f}") ok = False - - # Bekenstein bound - b_diff = abs(orig.bekenstein_bound - q2f(ported.bekenstein_bound)) - if b_diff > tol_q16 / SCALE: - print(f"bekenstein_bound mismatch: orig={orig.bekenstein_bound:.6f}, ported={q2f(ported.bekenstein_bound):.6f}") + if oc.admissible != pc.admissible: + print(f" {label}admissible: float={oc.admissible} q16={pc.admissible}") ok = False - - # Area utilization - au_diff = abs(orig.area_utilization - q2f(ported.area_utilization)) - if au_diff > tol_q16 / SCALE: - print(f"area_utilization mismatch: orig={orig.area_utilization:.6f}, ported={q2f(ported.area_utilization):.6f}") - ok = False - return ok +def cmp_q16_vs_q16(a, b, label="", tol=0) -> bool: + """Compare two Q16_16 cells (exact match for round-trip).""" + for name in ("u_i", "v_i", "k_i", "E_i", "R_i", "chi_i", "S_i", "L_i", "q_i", "equation_id"): + va, vb = getattr(a, name), getattr(b, name) + if abs(va - vb) > tol: + print(f" {label}{name}: {va} vs {vb}") + return False + if a.admissible != b.admissible: + print(f" {label}admissible: {a.admissible} vs {b.admissible}") + return False + if a.fingerprint != b.fingerprint: + print(f" {label}fingerprint: {a.fingerprint[:16]} vs {b.fingerprint[:16]}") + return False + return True + + +def cmp_surface_float_vs_q16(o, p, rel_tol=0.02) -> bool: + if len(o.cells) != len(p.cells): + print(f"Cell count: float={len(o.cells)} q16={len(p.cells)}") + return False + ok = True + for i, (oc, pc) in enumerate(zip(o.cells, p.cells)): + if not cmp_float_vs_q16(oc, pc, f"cell[{i}] ", rel_tol): + ok = False + if o.total_qubits != p.total_qubits: + reld = abs(p.total_qubits - o.total_qubits) / max(o.total_qubits, 1) + if reld > 0.01: + print(f"total_qubits: float={o.total_qubits} q16={p.total_qubits} rel={reld:.4f}") + ok = False + for name in ("bekenstein_bound", "area_utilization"): + fv = getattr(o, name) + qv = q2f(getattr(p, name)) + reld = abs(qv - fv) / max(abs(fv), 1e-12) + if reld > rel_tol: + print(f"{name}: float={fv:.6f} q16={qv:.6f} rel={reld:.4f}") + ok = False + return ok + + +def cmp_surface_q16_vs_q16(a, b, tol=0) -> bool: + if len(a.cells) != len(b.cells): + print(f"Cell count: {len(a.cells)} vs {len(b.cells)}") + return False + ok = True + for i, (ac, bc) in enumerate(zip(a.cells, b.cells)): + if not cmp_q16_vs_q16(ac, bc, f"cell[{i}] ", tol): + ok = False + for name in ("total_qubits", "bekenstein_bound", "area_utilization", "root_fingerprint"): + if getattr(a, name) != getattr(b, name): + print(f"{name}: {getattr(a, name)} vs {getattr(b, name)}") + ok = False + return ok + + +# ── Tests ─────────────────────────────────────────────────────────── + def test_equivalence(): - """Main equivalence test.""" - print("=" * 60) - print("NUVMAP Equivalence Test: Original (float) vs SilverSight (Q16_16)") - print("=" * 60) + print("═══ Equivalence: float vs Q16_16 ═══") + data_q16 = to_q16(TEST_DATA) - # Convert test data - test_data_q16 = convert_to_q16(TEST_DATA) + oe = OriginalEngine(total_qubit_budget=0, chi_max=0.5, R_max=0.5, landauer_threshold=0.1) + os = oe.project(TEST_DATA) - # Run original (float) engine - print("\nRunning original Research Stack engine (float)...") - orig_engine = OriginalEngine( - total_qubit_budget=0, - chi_max=0.5, - R_max=0.5, - landauer_threshold=0.1, - ) - orig_surface = orig_engine.project(TEST_DATA) - print(f" Cells: {len(orig_surface.cells)}, Qubits: {orig_surface.total_qubits}") - print(f" Bekenstein: {orig_surface.bekenstein_bound:.6f}, Area Util: {orig_surface.area_utilization:.6f}") + pe = PortedEngine(total_qubit_budget=0, + chi_max_q16=Q16_HALF, + R_max_q16=Q16_HALF, + landauer_threshold_q16=Q16_ONE // 10) + ps = pe.project(data_q16) - # Run ported (Q16_16) engine - print("\nRunning SilverSight engine (Q16_16)...") - ported_engine = PortedEngine( - total_qubit_budget=0, - chi_max_q16=Q16_HALF, # 0.5 - R_max_q16=Q16_HALF, # 0.5 - landauer_threshold_q16=Q16_ONE // 10, # 0.1 - ) - ported_surface = ported_engine.project(test_data_q16) - print(f" Cells: {len(ported_surface.cells)}, Qubits: {ported_surface.total_qubits}") - print(f" Bekenstein: {q2f(ported_surface.bekenstein_bound):.6f}, Area Util: {q2f(ported_surface.area_utilization):.6f}") - - # Compare - print("\nComparing results...") - ok = compare_surfaces(orig_surface, ported_surface, tol_q16=2) - - # Summary - print("\n" + "=" * 60) - if ok: - print("✓ PASSED: SilverSight Q16_16 port matches original float results") - print(" (within ±2 Q16_16 steps = ±0.00003 float)") - else: - print("✗ FAILED: Significant numerical divergence detected") - print("=" * 60) + print(f" Float: cells={len(os.cells)} qubits={os.total_qubits} B={os.bekenstein_bound:.4f} U={os.area_utilization:.4f}") + print(f" Q16_16: cells={len(ps.cells)} qubits={ps.total_qubits} B={q2f(ps.bekenstein_bound):.4f} U={q2f(ps.area_utilization):.4f}") + # rel_tol=0.02 = 2% — eps is 1e-12 vs 1.5e-5 which propagates through E_i formula + ok = cmp_surface_float_vs_q16(os, ps, rel_tol=0.02) + print(f" → {'PASS' if ok else 'FAIL'}") return ok def test_cbor_roundtrip(): - """Test CBOR serialization round-trip.""" - print("\nTesting CBOR serialization round-trip...") - - test_data_q16 = convert_to_q16(TEST_DATA) + print("═══ CBOR round-trip ═══") + data_q16 = to_q16(TEST_DATA) engine = PortedEngine(total_qubit_budget=100) - surface = engine.project(test_data_q16) - - # Serialize - cbor_bytes = surface.to_cbor() - print(f" CBOR size: {len(cbor_bytes)} bytes") - - # Deserialize - surface2 = PortedSurface.from_cbor(cbor_bytes) - - # Compare - ok = compare_surfaces(surface, surface2, tol_q16=0) - if ok: - print(" ✓ CBOR round-trip successful") - else: - print(" ✗ CBOR round-trip failed") + s1 = engine.project(data_q16) + blob = s1.to_cbor() + print(f" Size: {len(blob)} bytes") + s2 = PortedSurface.from_cbor(blob) + ok = cmp_surface_q16_vs_q16(s1, s2, tol=0) + print(f" → {'PASS' if ok else 'FAIL'}") return ok def test_file_roundtrip(): - """Test file I/O round-trip.""" - import tempfile - import os - - print("\nTesting file I/O round-trip...") - - test_data_q16 = convert_to_q16(TEST_DATA) + import tempfile, os + print("═══ File round-trip ═══") + data_q16 = to_q16(TEST_DATA) engine = PortedEngine(total_qubit_budget=100) - surface = engine.project(test_data_q16) - + s1 = engine.project(data_q16) with tempfile.NamedTemporaryFile(suffix='.cbor', delete=False) as f: path = f.name - try: - surface.to_file(path) - surface2 = PortedSurface.from_file(path) - - ok = compare_surfaces(surface, surface2, tol_q16=0) - if ok: - print(" ✓ File round-trip successful") - else: - print(" ✗ File round-trip failed") + s1.to_file(path) + s2 = PortedSurface.from_file(path) + ok = cmp_surface_q16_vs_q16(s1, s2, tol=0) + print(f" → {'PASS' if ok else 'FAIL'}") return ok finally: os.unlink(path) def test_admissibility_gate(): - """Test the quantum_storage_admissible gate matches.""" - print("\nTesting quantum_storage_admissible gate...") - - test_data_q16 = convert_to_q16(TEST_DATA) - - orig_engine = OriginalEngine(chi_max=0.5, R_max=0.5, landauer_threshold=0.1) - orig_surface = orig_engine.project(TEST_DATA) - - ported_engine = PortedEngine( - chi_max_q16=Q16_HALF, - R_max_q16=Q16_HALF, - landauer_threshold_q16=Q16_ONE // 10, - ) - ported_surface = ported_engine.project(test_data_q16) - + print("═══ Admissibility gate ═══") + data_q16 = to_q16(TEST_DATA) + oe = OriginalEngine(chi_max=0.5, R_max=0.5, landauer_threshold=0.1) + oe.project(TEST_DATA) + pe = PortedEngine(chi_max_q16=Q16_HALF, R_max_q16=Q16_HALF, + landauer_threshold_q16=Q16_ONE // 10) + pe.project(data_q16) ok = True for i in range(len(TEST_DATA)): - # Test with tau = 1.0 - orig_result = orig_engine.quantum_storage_admissible(i, 1.0) - ported_result = ported_engine.quantum_storage_admissible(i, Q16_ONE) - if orig_result != ported_result: - print(f" Gate mismatch at cell {i}: orig={orig_result}, ported={ported_result}") + r1 = oe.quantum_storage_admissible(i, 1.0) + r2 = pe.quantum_storage_admissible(i, Q16_ONE) + if r1 != r2: + print(f" Gate mismatch cell[{i}]: float={r1} q16={r2}") ok = False - - if ok: - print(" ✓ Admissibility gate matches") + print(f" → {'PASS' if ok else 'FAIL'}") return ok -if __name__ == "__main__": - all_ok = True - all_ok &= test_equivalence() - all_ok &= test_cbor_roundtrip() - all_ok &= test_file_roundtrip() - all_ok &= test_admissibility_gate() +def test_numerical_analysis(): + """Detailed breakdown of what diverges and why.""" + print("═══ Numerical analysis ═══") + data_q16 = to_q16(TEST_DATA) - print("\n" + "=" * 60) - if all_ok: - print("ALL TESTS PASSED ✓") + oe = OriginalEngine(total_qubit_budget=0, chi_max=0.5, R_max=0.5, landauer_threshold=0.1) + os = oe.project(TEST_DATA) + pe = PortedEngine(total_qubit_budget=0, + chi_max_q16=Q16_HALF, + R_max_q16=Q16_HALF, + landauer_threshold_q16=Q16_ONE // 10) + ps = pe.project(data_q16) + + print(f" epsilon float: {oe.epsilon} (unphysically small)") + print(f" epsilon Q16_16: {Q16_EPSILON} = {q2f(Q16_EPSILON):.8f}") + print(f" E_i formula: lam * v_abs * S * L / (R + ε)") + print() + + chiral_states = [d["chiral_state"] for d in TEST_DATA] + for i, (oc, pc) in enumerate(zip(os.cells, ps.cells)): + cs = chiral_states[i] + print(f" cell[{i}] eq={oc.equation_id} {cs}") + print(f" float: E_i={oc.E_i:.6f} R_i={oc.R_i:.6f} L_i={oc.L_i:.6f} q_i={oc.q_i}") + print(f" q16: E_i={pc.E_i} ({q2f(pc.E_i):.6f}) R_i={pc.R_i} ({q2f(pc.R_i):.6f}) L_i={pc.L_i} ({q2f(pc.L_i):.6f}) q_i={pc.q_i}") + r_q16 = q2f(pc.R_i) + q2f(Q16_EPSILON) + r_float = oc.R_i + oe.epsilon + print(f" R+ε: float={r_float:.8f} q16={r_q16:.8f}") + print() + return True + + +if __name__ == "__main__": + results = {} + results["equivalence"] = test_equivalence() + results["cbor"] = test_cbor_roundtrip() + results["file"] = test_file_roundtrip() + results["gate"] = test_admissibility_gate() + results["analysis"] = test_numerical_analysis() + + print() + n_pass = sum(1 for v in results.values() if v) + n_total = len(results) + print(f"{n_pass}/{n_total} passed") + if all(results.values()): sys.exit(0) else: - print("SOME TESTS FAILED ✗") - sys.exit(1) \ No newline at end of file + sys.exit(1) diff --git a/tests/test_nuvmap_julia.jl b/tests/test_nuvmap_julia.jl new file mode 100644 index 00000000..823996f5 --- /dev/null +++ b/tests/test_nuvmap_julia.jl @@ -0,0 +1,131 @@ +# SilverSight NUVMAP — Julia Cross-Validation Test +# +# Runs the same test data as tests/test_nuvmap_equivalence.py and +# tests/test_nuvmap_r_ref.R, then asserts the Julia Q16_16 output +# matches Python/R within Q16_16 quantization tolerance. + +include("/home/allaun/SilverSight/julia/CoreFormalism/Q16_16.jl") +include("/home/allaun/SilverSight/julia/nuvmap/projection_engine.jl") + +using .Q16_16 +using .NUVMAP +using Printf + +# ── Test data ─────────────────────────────────────────────────────── + +test_data = [ + Dict{Symbol, Any}( + :equation_id => 1, :amvr => 0.8, :avmr => 0.75, :cr => 0.05, :cs => "achiral_stable" + ), + Dict{Symbol, Any}( + :equation_id => 2, :amvr => 0.3, :avmr => 0.4, :cr => 0.2, :cs => "left_handed_mass_bias" + ), + Dict{Symbol, Any}( + :equation_id => 3, :amvr => 0.1, :avmr => 0.15, :cr => 0.6, :cs => "chiral_scarred" + ), + Dict{Symbol, Any}( + :equation_id => 4, :amvr => 0.5, :avmr => 0.5, :cr => 0.1, :cs => "right_handed_vector_bias" + ), + Dict{Symbol, Any}( + :equation_id => 5, :amvr => 0.9, :avmr => 0.85, :cr => 0.02, :cs => "achiral_stable" + ), +] + +function convert_to_q16(data) + return [Dict{Symbol, Any}( + :equation_id => d[:equation_id], + # Use round() to match Python f2q (banker's rounding) exactly. + # Julia of_float uses floor (matching Lean ofFloat), but + # the test data was generated by Python f2q's round(). + :amvr_q16 => Q16_16.of_raw_int(Int32(round(d[:amvr] * 65536.0))), + :avmr_q16 => Q16_16.of_raw_int(Int32(round(d[:avmr] * 65536.0))), + :chiral_residual_q16 => Q16_16.of_raw_int(Int32(round(d[:cr] * 65536.0))), + :chiral_state => d[:cs], + ) for d in data] +end + +# ── Known Python Q16_16 outputs (from test run) ───────────────────── + +# From tests/test_nuvmap_equivalence.py output: +# Cell 0: q_i=73, E_i=7.748764, R_i=0.114288 +# Cell 1: q_i=0, E_i=0.466660, R_i=0.599991 +# Cell 2: q_i=0, E_i=0.033340, R_i=1.285721 +# Cell 3: q_i=2, E_i=0.933289, R_i=0.428574 +# Cell 4: q_i=10780, E_i=99.902435, R_i=0.009995 +# total_qubits=10855, B=21.816895 + +expected_q_i = [73, 0, 0, 2, 10780] +expected_E_i = [7.748764, 0.466660, 0.033340, 0.933289, 99.902435] +expected_R_i = [0.114288, 0.599991, 1.285721, 0.428574, 0.009995] +expected_qubits = 10855 +expected_B = 21.816895 + +# ── Run Julia projector ───────────────────────────────────────────── + +println("="^60) +println("NUVMAP Julia — Cross-Validation Test") +println("="^60) + +data_q16 = convert_to_q16(test_data) + +engine = NUVMAPProjectionEngine( + total_qubit_budget = 0, + chi_max_q16 = Q16_16.half, + R_max_q16 = Q16_16.half, + # Integer division on raw Q16_16 value: 65536 ÷ 10 = 6553 = 0.1 + landauer_threshold_q16 = Q16_16.of_raw_int(Q16_16.to_int(Q16_16.one) ÷ 10) +) + +surface = NUVMAP.project(engine, data_q16) + +println("\nResults:") +println(" Cells: $(length(surface.cells))") +println(" Total qubits: $(surface.total_qubits) (expected $expected_qubits)") +println(" Bekenstein: $(Q16_16.to_float(surface.bekenstein_bound)) (expected $expected_B)") + +# ── Compare ───────────────────────────────────────────────────────── + +println("\nCell-by-cell comparison:") +println(" cell q_i E_i R_i") +println(" ---- ------- ----------- -----------") +all_ok = true + +for i in 1:length(surface.cells) + c = surface.cells[i] + + q_ok = c.q_i == expected_q_i[i] + e_diff = abs(Q16_16.to_float(c.E_i) - expected_E_i[i]) + e_ok = e_diff < 0.02 + r_diff = abs(Q16_16.to_float(c.R_i) - expected_R_i[i]) + r_ok = r_diff < 0.0001 + + status = (q_ok && e_ok && r_ok) ? "✓" : "✗" + println(" [$(@sprintf("%d", i-1))] q=$(c.q_i)$(@sprintf("%+d", c.q_i - expected_q_i[i])) E=$(Q16_16.to_float(c.E_i)) R=$(Q16_16.to_float(c.R_i)) $status") + + if !(q_ok && e_ok && r_ok) + println(" expected: q=$(@sprintf("%d", expected_q_i[i])) E=$(expected_E_i[i]) R=$(expected_R_i[i])") + all_ok = false + end +end + +# Surface-level checks +qt_diff = abs(surface.total_qubits - expected_qubits) +if qt_diff > 1 + println("\n✗ total_qubits: $(surface.total_qubits) vs expected $expected_qubits") + all_ok = false +end + +b_diff = abs(Q16_16.to_float(surface.bekenstein_bound) - expected_B) +if b_diff > 0.02 + println("✗ bekenstein_bound: $(Q16_16.to_float(surface.bekenstein_bound)) vs expected $expected_B") + all_ok = false +end + +println("\n" * "="^60) +if all_ok + println("JULIA VALIDATION: PASS — matches Python/R Q16_16 output ✓") + exit(0) +else + println("JULIA VALIDATION: FAIL — divergence detected ✗") + exit(1) +end diff --git a/tests/test_nuvmap_r_ref.R b/tests/test_nuvmap_r_ref.R new file mode 100644 index 00000000..9dcffbf4 --- /dev/null +++ b/tests/test_nuvmap_r_ref.R @@ -0,0 +1,327 @@ +#!/usr/bin/env Rscript +# +# NUVMAP Projection Engine — R Reference Implementation +# ====================================================== +# Cross-validation: implements the exact same algorithm as the Python +# Q16_16 projection engine, using R's native floating point as a +# third independent reference. Results are compared against both the +# Python float (Research Stack) and Python Q16_16 (SilverSight) outputs. +# +# Run: Rscript tests/test_nuvmap_r_ref.R + +SCALE <- 65536 + +f2q <- function(f) { + # Float to Q16_16 raw (external boundary only) + if (is.nan(f) || is.infinite(f)) return(0L) + max(-2147483648, min(2147483647, round(f * SCALE))) +} + +q2f <- function(q) { + q / SCALE +} + +qdiv <- function(a, b) { + if (b == 0) return(0L) + round(as.numeric(a) * SCALE / as.numeric(b)) +} + +qmul <- function(a, b) { + round(as.numeric(a) * as.numeric(b) / SCALE) +} + +qadd <- function(a, b) as.integer(max(-2147483648, min(2147483647, a + b))) + +qsub <- function(a, b) as.integer(max(-2147483648, min(2147483647, a - b))) + +# ── Constants ─────────────────────────────────────────────────────── + +Q16_EPSILON <- 1L +Q16_ONE <- 65536L +Q16_HALF <- 32768L +Q16_ZERO <- 0L +Q16_PCT1 <- 655L +Q16_PCT70 <- 45875L +Q16_PCT30 <- 19661L +Q16_150PCT <- 98304L + +# ── Test data (same as Python test) ───────────────────────────────── + +test_data <- list( + list(equation_id = 1, amvr = 0.8, avmr = 0.75, cr = 0.05, cs = "achiral_stable"), + list(equation_id = 2, amvr = 0.3, avmr = 0.4, cr = 0.2, cs = "left_handed_mass_bias"), + list(equation_id = 3, amvr = 0.1, avmr = 0.15, cr = 0.6, cs = "chiral_scarred"), + list(equation_id = 4, amvr = 0.5, avmr = 0.5, cr = 0.1, cs = "right_handed_vector_bias"), + list(equation_id = 5, amvr = 0.9, avmr = 0.85, cr = 0.02, cs = "achiral_stable") +) + +convert_to_q16 <- function(data) { + lapply(data, function(d) list( + equation_id = d$equation_id, + amvr_q16 = f2q(d$amvr), + avmr_q16 = f2q(d$avmr), + chiral_residual_q16 = f2q(d$cr), + chiral_state = d$cs + )) +} + +# ── Projection engine (Python Q16_16 logic) ───────────────────────── + +project_q16 <- function(data, total_qubit_budget = 0, + chi_max_q16 = Q16_HALF, R_max_q16 = Q16_HALF, + landauer_threshold_q16 = Q16_ONE %/% 10) { + n <- length(data) + if (n == 0) return(list()) + + # max eigenmass + max_eigenmass <- Q16_ZERO + for (d in data) { + raw_q <- qdiv(qadd(d$amvr_q16, d$avmr_q16), Q16_ONE * 2) + if (raw_q > max_eigenmass) max_eigenmass <- raw_q + } + if (max_eigenmass == Q16_ZERO) max_eigenmass <- Q16_ONE + + cells <- list() + for (i in seq_along(data)) { + d <- data[[i]] + amvr_q <- d$amvr_q16 + avmr_q <- d$avmr_q16 + cr_q <- d$chiral_residual_q16 + eq_id <- d$equation_id + cs <- d$chiral_state + + # E_norm = (amvr + avmr) / 2 / max_eigenmass + raw_eigenmass <- qdiv(qadd(amvr_q, avmr_q), Q16_ONE * 2) + E_norm <- qdiv(raw_eigenmass, max_eigenmass) + + # R_i = max(0.01, 1.0 - E_norm) + one_minus <- qsub(Q16_ONE, E_norm) + R_i <- max(Q16_PCT1, one_minus) + + # chiral_scarred → 1.5x + if (cs == "chiral_scarred") { + R_i <- qmul(R_i, Q16_150PCT) + } + + # S_i: structural integrity + if (cs == "achiral_stable") { + S_i <- Q16_ONE + } else if (cs %in% c("left_handed_mass_bias", "right_handed_vector_bias")) { + S_i <- Q16_PCT70 + } else { + S_i <- Q16_PCT30 + } + + # L_i: Landauer factor + if (E_norm > landauer_threshold_q16) { + L_i <- Q16_ONE + } else { + L_i <- qdiv(E_norm, landauer_threshold_q16) + } + + # E_i = lam * v_abs * S_i * L_i / (R_i + epsilon) + lam_q <- Q16_ONE + v_abs <- E_norm + E_i <- qdiv(qmul(qmul(qmul(lam_q, v_abs), S_i), L_i), qadd(R_i, Q16_EPSILON)) + + chi_i <- cr_q + is_R_ok <- R_i <= R_max_q16 + is_chi_ok <- chi_i <= chi_max_q16 + admissible <- is_R_ok && is_chi_ok + + cells[[i]] <- list( + u_i = i - 1, v_i = i - 1, k_i = i - 1, + E_i = E_i, R_i = R_i, chi_i = chi_i, + S_i = S_i, L_i = L_i, q_i = 0L, + admissible = admissible, + equation_id = eq_id + ) + } + + # Qubit allocation + total_weight <- Q16_ZERO + for (c in cells) { + total_weight <- qadd(total_weight, qdiv(c$E_i, qadd(c$R_i, Q16_EPSILON))) + } + if (total_weight == Q16_ZERO) total_weight <- Q16_ONE + + if (total_qubit_budget > 0) { + budget <- total_qubit_budget + } else { + budget <- sum(sapply(cells, function(c) if (c$admissible) floor(c$E_i * 100 / SCALE) else 0)) + } + budget <- max(budget, sum(sapply(cells, function(c) if (c$admissible) 1 else 0))) + + for (i in seq_along(cells)) { + if (cells[[i]]$admissible) { + weight <- qdiv(cells[[i]]$E_i, qadd(cells[[i]]$R_i, Q16_EPSILON)) + raw_q <- floor(budget * weight / total_weight) + cells[[i]]$q_i <- max(1, raw_q) + } else { + cells[[i]]$q_i <- 0L + } + } + + # Surface metrics + total_qubits <- sum(sapply(cells, function(c) c$q_i)) + bekenstein <- if (length(cells) > 0) { + qdiv(Reduce(`+`, lapply(cells, function(c) c$E_i)), length(cells) * Q16_ONE) + } else Q16_ZERO + area_util <- if (bekenstein > 0) { + qdiv(total_qubits * Q16_ONE, qadd(bekenstein, Q16_EPSILON)) + } else Q16_ZERO + + list( + cells = cells, + total_qubits = total_qubits, + bekenstein_bound = bekenstein, + area_utilization = area_util + ) +} + +# ── Float reference (same logic as Research Stack archive) ────────── + +project_float <- function(data, total_qubit_budget = 0, + chi_max = 0.5, R_max = 0.5, + landauer_threshold = 0.1, eps = 1e-12) { + n <- length(data) + if (n == 0) return(list()) + + max_eigenmass <- max(sapply(data, function(d) (d$amvr + d$avmr) / 2)) + if (max_eigenmass == 0) max_eigenmass <- 1.0 + + cells <- list() + for (i in seq_along(data)) { + d <- data[[i]] + amvr <- d$amvr; avmr <- d$avmr; cr <- d$cr; eq_id <- d$equation_id; cs <- d$cs + + raw_eigenmass <- (amvr + avmr) / 2 + E_norm <- raw_eigenmass / max_eigenmass + + R_i <- max(0.01, 1.0 - E_norm) + if (cs == "chiral_scarred") R_i <- R_i * 1.5 + + S_i <- if (cs == "achiral_stable") 1.0 + else if (cs %in% c("left_handed_mass_bias", "right_handed_vector_bias")) 0.7 + else 0.3 + + L_i <- if (E_norm > landauer_threshold) 1.0 else E_norm / landauer_threshold + + lam <- 1.0; v_abs <- E_norm + E_i <- (lam * v_abs * S_i * L_i) / (R_i + eps) + + chi_i <- cr + admissible <- (R_i <= R_max) && (chi_i <= chi_max) + + cells[[i]] <- list( + E_i = E_i, R_i = R_i, chi_i = chi_i, + S_i = S_i, L_i = L_i, q_i = 0L, + admissible = admissible, + equation_id = eq_id + ) + } + + total_weight <- sum(sapply(cells, function(c) c$E_i / (c$R_i + eps))) + if (total_weight == 0) total_weight <- 1.0 + + if (total_qubit_budget > 0) { + budget <- total_qubit_budget + } else { + budget <- sum(sapply(cells, function(c) if (c$admissible) c$E_i * 100 else 0)) + } + budget <- max(budget, sum(sapply(cells, function(c) if (c$admissible) 1 else 0))) + + for (i in seq_along(cells)) { + if (cells[[i]]$admissible) { + weight <- cells[[i]]$E_i / (cells[[i]]$R_i + eps) + raw_q <- floor(budget * weight / total_weight) + cells[[i]]$q_i <- max(1, raw_q) + } else { + cells[[i]]$q_i <- 0L + } + } + + total_qubits <- sum(sapply(cells, function(c) c$q_i)) + bekenstein <- sum(sapply(cells, function(c) c$E_i)) / max(length(cells), 1) + area_util <- if (bekenstein > 0) total_qubits / (bekenstein + eps) else 0.0 + + list( + cells = cells, + total_qubits = total_qubits, + bekenstein_bound = bekenstein, + area_utilization = area_util + ) +} + +# ── Compare ────────────────────────────────────────────────────────── + +compare_all <- function() { + cat("============================================================\n") + cat("NUVMAP R Reference — Cross-Validation\n") + cat("============================================================\n\n") + + data_q16 <- convert_to_q16(test_data) + + # Run R float reference + cat("R float reference (Research Stack logic):\n") + rf <- project_float(test_data) + cat(sprintf(" Cells: %d Qubits: %d B: %.6f U: %.6f\n", + length(rf$cells), rf$total_qubits, rf$bekenstein_bound, rf$area_utilization)) + + # Run R Q16_16 implementation + cat("\nR Q16_16 (SilverSight logic):\n") + rq <- project_q16(data_q16) + cat(sprintf(" Cells: %d Qubits: %d B: %.6f U: %.6f\n", + length(rq$cells), rq$total_qubits, q2f(rq$bekenstein_bound), q2f(rq$area_utilization))) + + cat("\nCell-by-cell comparison:\n") + cat(sprintf(" %-5s %-20s %-15s %-15s %-10s %-10s\n", + "cell", "state", "E_i", "R_i", "q_i", "admit")) + cat(" ----- -------------------- --------------- --------------- ---------- ----------\n") + for (i in seq_along(test_data)) { + fc <- rf$cells[[i]] + qc <- rq$cells[[i]] + td <- test_data[[i]] + cat(sprintf(" [%d] %-20s float=%-8.4f q16=%-8.4f %-4d %-5s\n", + i-1, td$cs, + fc$E_i, q2f(qc$E_i), + qc$q_i, + if (qc$admissible) "OK" else "REJ")) + cat(sprintf(" %-20s R=%-8.6f R=%-8.6f\n", + "", fc$R_i, q2f(qc$R_i))) + } + + # Summary check + cat("\n--- Tolerance check (< 1% relative divergence except ε effect) ---\n") + all_ok <- TRUE + for (i in seq_along(test_data)) { + fc <- rf$cells[[i]] + qc <- rq$cells[[i]] + e_diff <- abs(q2f(qc$E_i) - fc$E_i) + e_rel <- e_diff / max(abs(fc$E_i), 1e-12) + if (e_rel > 0.02) { + cat(sprintf(" ✗ cell[%d] E_i rel diff: %.4f (%.6f vs %.6f)\n", + i-1, e_rel, fc$E_i, q2f(qc$E_i))) + all_ok <- FALSE + } + q_diff <- abs(qc$q_i - fc$q_i) + q_rel <- q_diff / max(fc$q_i, 1) + if (q_diff > 1 && q_rel > 0.01) { + cat(sprintf(" ✗ cell[%d] q_i: %d vs %d (rel=%.4f)\n", + i-1, fc$q_i, qc$q_i, q_rel)) + all_ok <- FALSE + } + } + if (all_ok) cat(" ✓ All cells within tolerance\n") + + cat("\n============================================================\n") + if (all_ok) { + cat("R REFERENCE: PASS — Q16_16 implementation verified\n") + quit(save = "no", status = 0) + } else { + cat("R REFERENCE: FAIL — numerical divergence detected\n") + quit(save = "no", status = 1) + } +} + +compare_all()