u3: optimizes +wyt:in jet, gated by compile-time assertion
*/
#include "all.h"
-/* functions
-*/
-u3_noun
-u3qdi_wyt(u3_noun a)
+STATIC_ASSERT( (UINT32_MAX > u3a_cells),
+ "width precision" );
+
+static c3_w
+_wyt_in(u3_noun a)
{
if ( u3_nul == a ) {
return 0;
}
else {
- u3_noun n_a, l_a, r_a;
- u3x_trel(a, &n_a, &l_a, &r_a);
+ u3_noun l_a, r_a;
+ u3x_trel(a, 0, &l_a, &r_a);
- return u3i_vint(u3ka_add(u3qdi_wyt(l_a), u3qdi_wyt(r_a)));
+ return 1 + _wyt_in(l_a) + _wyt_in(r_a);
+ }
}
+
+u3_noun
+u3qdi_wyt(u3_noun a)
+{
+ return u3i_word(_wyt_in(a));
}
u3_noun
u3wdi_wyt(u3_noun cor)
{
- u3_noun a;
- u3x_mean(cor, u3x_con_2, &a, 0);
- return u3qdi_wyt(a);
+ return u3qdi_wyt(u3x_at(u3x_con_2, cor));
}
