up_qor_toy.c (891B)
1 #include "all.h" 2 3 u3_noun 4 u3qdu_qor_toy(u3_noun a, u3_noun b) 5 { 6 if ( u3_nul == a ) { 7 return u3k(b); 8 } 9 else if ( u3_nul == b ) { 10 return u3k(a); 11 } 12 else { 13 u3_noun n_a, t_a, m_a; 14 u3_noun n_b, t_b, m_b; 15 u3x_trel(a, &n_a, &t_a, &m_a); 16 u3x_trel(b, &n_b, &t_b, &m_b); 17 18 u3_noun k_n_a, p_n_a, v_n_a; 19 u3_noun k_n_b, p_n_b, v_n_b; 20 u3x_trel(n_a, &k_n_a, &p_n_a, &v_n_a); 21 u3x_trel(n_b, &k_n_b, &p_n_b, &v_n_b); 22 23 if ( c3y == u3qdu_lex(p_n_a, k_n_a, p_n_b, k_n_b) ) { 24 return u3nt(u3k(n_a), u3qdu_qor_rbal(n_b, t_a, m_a, t_b), u3k(m_b)); 25 } 26 else { 27 return u3nt(u3k(n_b), u3qdu_qor_lbal(n_a, t_a, m_a, t_b), u3k(m_b)); 28 } 29 } 30 } 31 32 u3_noun 33 u3wdu_qor_toy(u3_noun cor) 34 { 35 u3_noun a, b; 36 37 if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0 )) ) 38 { 39 return u3m_bail(c3__exit); 40 } else { 41 return u3qdu_qor_toy(a, b); 42 } 43 } 44