up_qor_rrsin.c (1715B)
1 #include "all.h" 2 3 u3_noun 4 u3qdu_qor_rrsin(u3_noun n_a, u3_noun l_a, u3_noun m_a, u3_noun r_a) 5 { 6 if ( c3n == u3du(l_a) ) { 7 return u3m_bail(c3__exit); 8 } 9 10 u3_noun b = u3t(u3t(l_a)); 11 12 u3_noun n_b, l_b, m_b, r_b, t_b; 13 u3_noun k_n_b; 14 u3x_qual(b, &n_b, &l_b, &m_b, &r_b); 15 u3x_cell(n_b, &k_n_b, &t_b); 16 17 u3_noun p_n_b = u3h(t_b); 18 u3_noun hol = u3h(l_a); 19 20 if ( c3n == u3ud(hol) ) { 21 return u3m_bail(c3__exit); 22 } 23 else switch ( hol ) { 24 default: 25 return u3m_bail(c3__exit); 26 27 case c3__llos: { 28 u3_noun pre = u3qdu_qor_rlos(n_a, r_b, m_a, r_a); 29 u3_noun pro = u3qdu_qor_llos(n_b, l_b, m_b, pre); 30 31 u3z(pre); 32 33 return pro; 34 } 35 36 case c3__rlos: { 37 u3_noun k_n_a; 38 u3_noun t_a; 39 40 u3x_cell(n_a, &k_n_a, &t_a); 41 42 u3_noun p_n_a = u3h(t_a); 43 44 if ( (c3n == u3ud(p_n_a)) || (c3n == u3ud(p_n_b)) ) { 45 return u3m_bail(c3__exit); 46 } 47 48 if ( c3y == u3qdu_lex(p_n_a, k_n_a, p_n_b, k_n_b) ) { 49 u3_noun pre = u3qdu_qor_llos(n_b, r_b, m_a, r_a); 50 u3_noun pro = u3qdu_qor_rlos(n_a, l_b, m_b, pre); 51 52 u3z(pre); 53 54 return pro; 55 } 56 else { 57 u3_noun pre = u3qdu_qor_rlos(n_a, r_b, m_a, r_a); 58 u3_noun pro = u3qdu_qor_rlos(n_b, l_b, m_b, pre); 59 60 u3z(pre); 61 62 return pro; 63 } 64 } 65 } 66 } 67 68 u3_noun 69 u3wdu_qor_rrsin(u3_noun cor) 70 { 71 u3_noun a; 72 73 if ( (c3n == u3r_mean(cor, u3x_sam, &a, 0 )) || 74 (c3n == u3du(a)) ) 75 { 76 return u3m_bail(c3__exit); 77 } else { 78 u3_noun n, l, m, r; 79 u3x_qual(a, &n, &l, &m, &r); 80 81 if ( (c3n == u3du(n)) || (c3n == u3ud(m)) ) { 82 return u3m_bail(c3__exit); 83 } 84 else { 85 return u3qdu_qor_rrsin(n, l, m, r); 86 } 87 } 88 } 89