Skip to content

Commit f64f576

Browse files
sigilanteclaude
andcommitted
noun: fix Lagoon argmin/argmax jets to return the forward (ravel) index
The argmin/argmax jets computed the result index as `len_x - i - 1` (reversed), so the jetted index disagreed with the Hoon (which returns the forward ravel index of the first extremum) and with the unjetted interpreter whenever the extremum was not at index 0 -- a silent jet/Hoon mismatch. Use the forward index `i`. Upstreams the numerics fix (urbit/numerics#29, already in the numerics master copy but never carried into the runtime). Verified on a hoon-135 fakezod: for a 3-vector with its min/max at logical index 2, the jet now returns 2 (was 0), matching the unjetted Hoon. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 257dbc2 commit f64f576

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

pkg/noun/jets/i/lagoon.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@
589589
for (c3_d i = 0; i < len_x; i++) {
590590
if(f16_lt(((float16_t*)x_bytes)[i], min_val16)) {
591591
min_val16 = ((float16_t*)x_bytes)[i];
592-
min_idx = (len_x - i - 1);
592+
min_idx = i;
593593
}
594594
}
595595
break;}
@@ -599,7 +599,7 @@
599599
for (c3_d i = 0; i < len_x; i++) {
600600
if(f32_lt(((float32_t*)x_bytes)[i], min_val32)) {
601601
min_val32 = ((float32_t*)x_bytes)[i];
602-
min_idx = (len_x - i - 1);
602+
min_idx = i;
603603
}
604604
}
605605
break;}
@@ -609,7 +609,7 @@
609609
for (c3_d i = 0; i < len_x; i++) {
610610
if(f64_lt(((float64_t*)x_bytes)[i], min_val64)) {
611611
min_val64 = ((float64_t*)x_bytes)[i];
612-
min_idx = (len_x - i - 1);
612+
min_idx = i;
613613
}
614614
}
615615
break;}
@@ -619,7 +619,7 @@
619619
for (c3_d i = 0; i < len_x; i++) {
620620
if(f128M_lt(&(((float128_t*)x_bytes)[i]), &min_val128)) {
621621
min_val128 = *f128M_min(&min_val128, &((float128_t*)x_bytes)[i]);
622-
min_idx = (len_x - i - 1);
622+
min_idx = i;
623623
}
624624
}
625625
break;}
@@ -662,7 +662,7 @@
662662
for (c3_d i = 0; i < len_x; i++) {
663663
if(f16_gt(((float16_t*)x_bytes)[i], max_val16)) {
664664
max_val16 = ((float16_t*)x_bytes)[i];
665-
max_idx = (len_x - i - 1);
665+
max_idx = i;
666666
}
667667
}
668668
break;}
@@ -672,7 +672,7 @@
672672
for (c3_d i = 0; i < len_x; i++) {
673673
if(f32_gt(((float32_t*)x_bytes)[i], max_val32)) {
674674
max_val32 = ((float32_t*)x_bytes)[i];
675-
max_idx = (len_x - i - 1);
675+
max_idx = i;
676676
}
677677
}
678678
break;}
@@ -682,7 +682,7 @@
682682
for (c3_d i = 0; i < len_x; i++) {
683683
if(f64_gt(((float64_t*)x_bytes)[i], max_val64)) {
684684
max_val64 = ((float64_t*)x_bytes)[i];
685-
max_idx = (len_x - i - 1);
685+
max_idx = i;
686686
}
687687
}
688688
break;}
@@ -692,7 +692,7 @@
692692
for (c3_d i = 0; i < len_x; i++) {
693693
if(f128M_gt(&(((float128_t*)x_bytes)[i]), &max_val128)) {
694694
max_val128 = *f128M_max(&max_val128, &((float128_t*)x_bytes)[i]);
695-
max_idx = (len_x - i - 1);
695+
max_idx = i;
696696
}
697697
}
698698
break;}

0 commit comments

Comments
 (0)