up_qor_sec.c (1251B)
1 #include "all.h" 2 3 u3_noun 4 u3qdu_qor_sec(u3_noun t, u3_atom m) 5 { 6 if ( u3_nul == t ) { 7 return u3_nul; 8 } 9 else { 10 u3_noun hol = u3h(t); 11 12 if ( c3n == u3ud(hol) ) { 13 return u3m_bail(c3__exit); 14 } 15 else switch ( hol ) { 16 default: 17 return u3m_bail(c3__exit); 18 19 case c3__llos: { 20 u3_noun n_p_t, l_p_t, m_p_t, r_p_t; 21 u3x_qual(u3t(u3t(t)), &n_p_t, &l_p_t, &m_p_t, &r_p_t); 22 23 u3_noun fel = u3nt(u3k(n_p_t), u3k(l_p_t), u3k(m_p_t)); 24 25 u3_noun pre = u3qdu_qor_sec(r_p_t, m); 26 u3_noun pro = u3qdu_qor_toy(fel, pre); 27 28 u3z(fel); 29 u3z(pre); 30 31 return pro; 32 } 33 34 case c3__rlos: { 35 u3_noun n_p_t, l_p_t, m_p_t, r_p_t; 36 u3x_qual(u3t(u3t(t)), &n_p_t, &l_p_t, &m_p_t, &r_p_t); 37 38 u3_noun fer = u3nt(u3k(n_p_t), u3k(r_p_t), u3k(m)); 39 40 u3_noun pre = u3qdu_qor_sec(l_p_t, m_p_t); 41 u3_noun pro = u3qdu_qor_toy(pre, fer); 42 43 u3z(fer); 44 u3z(pre); 45 46 return pro; 47 } 48 } 49 } 50 } 51 52 u3_noun 53 u3wdu_qor_sec(u3_noun cor) 54 { 55 u3_noun t, m; 56 57 if ( (c3n == u3r_mean(cor, u3x_sam_2, &t, u3x_sam_3, &m, 0 )) || 58 (c3n == u3ud(m)) ) 59 { 60 return u3m_bail(c3__exit); 61 } else { 62 return u3qdu_qor_sec(t, m); 63 } 64 } 65 66