nx_linalg_affine_factor_candidate_t361.nx
buildroot/runtime/nx_linalg_affine_factor_candidate_t361.nx
about
Private additive linear-algebra extension for scale-preserving affine skinning.
Uses existing Q30 arithmetic; no new persistent asset format.
dependencies 1 imports · 1 importers
imports: nx_linalg.nx
imported by: nx_linalg_affine_factor_gate_t361.nx
structs
| none |
consts
| 4 | const LA_AFFINE_RANGE:i64=0-60 |
| 5 | const LA_AFFINE_SINGULAR:i64=0-61 |
| 6 | const LA_AFFINE_RESIDUAL:i64=0-62 |
| 7 | const LA_AFFINE_MAX:i64=70368744177664 |
| 8 | const LA_AFFINE_I64_MAX:i64=9223372036854775807 |
| 57 | const LA_STATIC_INPUT_WORDS:i64=13 |
| 58 | const LA_STATIC_OUTPUT_WORDS:i64=6 |
| 59 | const LA_STATIC_SCRATCH_WORDS:i64=48 |
| 60 | const LA_BINARY32_FRACTION_BITS:i64=23 |
| 61 | const LA_BINARY32_ULP_DEN:i64=8388608 |
| 62 | const LA_STATIC_SOURCE_SHIFT:i64=10 |
| 63 | const LA_STATIC_PATH_ROUNDS:i64=5 |
| 64 | const LA_STATIC_GAMMA_FACTOR:i64=2*LA_STATIC_PATH_ROUNDS |
| 65 | const LA_STATIC_Q8_SHIFT:i64=FQ_SHIFT-8 |
| 111 | const LA_BINARY32_MIN_NORMAL_POWER:i64=0-126 |
| 112 | const LA_BINARY32_FINITE_POWER:i64=128 |
| 113 | const LA_STATIC_EXPANDED_MONOMIALS:i64=2 |
| 114 | const LA_STATIC_FACTORS_PER_MONOMIAL:i64=4 |
| 115 | const LA_STATIC_EXPANDED_LEAVES:i64=LA_STATIC_EXPANDED_MONOMIALS*LA_STATIC_FACTORS_PER_MONOMIAL+1 |
| 116 | const LA_STATIC_EXPANDED_OPS:i64=LA_STATIC_EXPANDED_LEAVES-1 |
| 117 | const LA_STATIC_ROUND_GAIN:i64=2 |
| 118 | const LA_STATIC_FTZ_COEFFICIENT:i64=(LA_STATIC_EXPANDED_LEAVES+LA_STATIC_EXPANDED_OPS)*LA_STATIC_EXPANDED_MONOMIALS*LA_STATIC_ROUND_GAIN |
functions
| 9 | func la_affine_domain(v:i64)->i64{if v<=0-LA_AFFINE_MAX||v>=LA_AFFINE_MAX{return LA_AFFINE_RANGE};return 0} |
| 11 | func la_inverse3_q30(a:*Mat,out:*Mat,residual_budget:i64,report:*i64)->i64 |
| 41 | func la_affine_compose_q30(a:*i64,b:*i64,out:*i64)->i64 |
| 66 | func la_iv(p:*i64,index:i64)->*i64{return ((p as i64)+index*16) as *i64} called by 1: la_static_yaw_bounds_f32 |
| 67 | func la_iv_abs(p:*i64)->i64{let a:i64=fq_abs(p[0]);let b:i64=fq_abs(p[1]);if a>b{return a};return b} |
| 68 | func la_f32_ordered(a:i64,b:i64)->i64 called by 1: la_static_yaw_bounds_f32 |
| 74 | func la_iv_f32(bits:i64,power:i64,out:*i64)->i64 |
| 89 | func la_iv_mul(a:*i64,b:*i64,out:*i64)->i64 |
| 99 | func la_static_storage_disjoint(a:*i64,aw:i64,b:*i64,bw:i64)->i64 called by 1: la_static_yaw_bounds_f32 |
| 121 | func la_static_sum_headroom()->i64{var n:i64=(LA_STATIC_EXPANDED_MONOMIALS+1)*LA_STATIC_ROUND_GAIN;var p:i64=0;var ceiling:i64=1;while ceiling<n{ceiling=ceiling<<1;p=p+1};return p} called by 1: la_static_product_subset_power |
| 122 | func la_f32_abs_ge_one_power(bits:i64)->i64 called by 1: la_static_product_subset_power |
| 128 | func la_static_product_subset_power(input:*i64)->i64 |
| 139 | func la_static_ftz_error_q30(power:i64)->i64 |
| 145 | func la_static_yaw_bounds_f32(input:*i64,input_words:i64,out:*i64,out_words:i64,scratch:*i64,scratch_words:i64)->i64 |