code wiki / (root) / nx_hairdyn_transport_gate_t284.nx

nx_hairdyn_transport_gate_t284.nx source

↩ module page · 73 lines · 3781 B

1// Retained actual CPU pose palette, 2026-09-13T17:45:20.246Z; not GPU readback. 2// Source317781...; source vertex identities and weights retained in fixture JSON. 3// Test uses actual root-to-first-node displacements, not an anatomical range. 4import "nx_hairdyn_transport_candidate_t284.nx" 5import "nx_gate_verdict.nx" 6func main()->i64{ 7 let ctr:*i64=gv_ctr();gv_head("guide displacement inverse transport" as *u8) 8 let q:*i64=sys_mmap(32) as *i64;let cq:*i64=sys_mmap(32) as *i64 9 let v:*i64=sys_mmap(24) as *i64;let b:*i64=sys_mmap(24) as *i64 10 let back:*i64=sys_mmap(24) as *i64;let wrong:*i64=sys_mmap(24) as *i64 11 var maxerr:i64=0;var err:i64=0;var bad:i64=0;var a:i64=0 12q[0]=234;q[1]=34;q[2]=526;q[3]=4054; 13vm_q_norm(q,q) 14v[0]=-1086;v[1]=658;v[2]=-2339 15hd_posed_delta_to_bind(b,q,v,cq);hd_bind_delta_to_posed(back,q,b) 16 hd_bind_delta_to_posed(wrong,q,v) 17 err=0;bad=0;a=0 18 while a<3{err=vm_max(err,vm_abs(back[a]-v[a]));bad=vm_max(bad,vm_abs(wrong[a]-v[a]));a=a+1} 19 maxerr=vm_max(maxerr,err) 20 gv_kv("guide0_roundtrip_max_source_units" as *u8,err) 21 gv_kv("guide0_uncorrected_max_source_units" as *u8,bad) 22 gv_check("guide0 inverse improves over posed displacement sent as bind" as *u8,err<bad,ctr) 23q[0]=311;q[1]=45;q[2]=526;q[3]=4049; 24vm_q_norm(q,q) 25v[0]=-1654;v[1]=290;v[2]=-977 26hd_posed_delta_to_bind(b,q,v,cq);hd_bind_delta_to_posed(back,q,b) 27 hd_bind_delta_to_posed(wrong,q,v) 28 err=0;bad=0;a=0 29 while a<3{err=vm_max(err,vm_abs(back[a]-v[a]));bad=vm_max(bad,vm_abs(wrong[a]-v[a]));a=a+1} 30 maxerr=vm_max(maxerr,err) 31 gv_kv("guide300_roundtrip_max_source_units" as *u8,err) 32 gv_kv("guide300_uncorrected_max_source_units" as *u8,bad) 33 gv_check("guide300 inverse improves over posed displacement sent as bind" as *u8,err<bad,ctr) 34q[0]=310;q[1]=44;q[2]=525;q[3]=4049; 35vm_q_norm(q,q) 36v[0]=-239;v[1]=875;v[2]=-2519 37hd_posed_delta_to_bind(b,q,v,cq);hd_bind_delta_to_posed(back,q,b) 38 hd_bind_delta_to_posed(wrong,q,v) 39 err=0;bad=0;a=0 40 while a<3{err=vm_max(err,vm_abs(back[a]-v[a]));bad=vm_max(bad,vm_abs(wrong[a]-v[a]));a=a+1} 41 maxerr=vm_max(maxerr,err) 42 gv_kv("guide600_roundtrip_max_source_units" as *u8,err) 43 gv_kv("guide600_uncorrected_max_source_units" as *u8,bad) 44 gv_check("guide600 inverse improves over posed displacement sent as bind" as *u8,err<bad,ctr) 45q[0]=308;q[1]=44;q[2]=525;q[3]=4049; 46vm_q_norm(q,q) 47v[0]=-67;v[1]=0;v[2]=-2556 48hd_posed_delta_to_bind(b,q,v,cq);hd_bind_delta_to_posed(back,q,b) 49 hd_bind_delta_to_posed(wrong,q,v) 50 err=0;bad=0;a=0 51 while a<3{err=vm_max(err,vm_abs(back[a]-v[a]));bad=vm_max(bad,vm_abs(wrong[a]-v[a]));a=a+1} 52 maxerr=vm_max(maxerr,err) 53 gv_kv("guide900_roundtrip_max_source_units" as *u8,err) 54 gv_kv("guide900_uncorrected_max_source_units" as *u8,bad) 55 gv_check("guide900 inverse improves over posed displacement sent as bind" as *u8,err<bad,ctr) 56q[0]=310;q[1]=44;q[2]=525;q[3]=4049; 57vm_q_norm(q,q) 58v[0]=-341;v[1]=1131;v[2]=-1535 59hd_posed_delta_to_bind(b,q,v,cq);hd_bind_delta_to_posed(back,q,b) 60 hd_bind_delta_to_posed(wrong,q,v) 61 err=0;bad=0;a=0 62 while a<3{err=vm_max(err,vm_abs(back[a]-v[a]));bad=vm_max(bad,vm_abs(wrong[a]-v[a]));a=a+1} 63 maxerr=vm_max(maxerr,err) 64 gv_kv("guide1199_roundtrip_max_source_units" as *u8,err) 65 gv_kv("guide1199_uncorrected_max_source_units" as *u8,bad) 66 gv_check("guide1199 inverse improves over posed displacement sent as bind" as *u8,err<bad,ctr) 67vm_q_ident(q);v[0]=17;v[1]=0-31;v[2]=53 68hd_posed_delta_to_bind(b,q,v,cq) 69gv_check_eq("identity x exact" as *u8,b[0],v[0],ctr) 70gv_check_eq("identity y exact" as *u8,b[1],v[1],ctr) 71gv_check_eq("identity z exact" as *u8,b[2],v[2],ctr) 72gv_kv("roundtrip_max_source_units" as *u8,maxerr) 73return gv_verdict("nx_hairdyn_transport_gate_t284" as *u8,ctr,"direction correctness and measured integer quantization; not a zero-error or contact-quality claim" as *u8) 74}