up_dew.c (1421B)
1 #include "all.h" 2 3 u3_noun 4 u3qdu_dew(u3_noun a, u3_noun k) 5 { 6 u3_noun ded = u3qdu_qat_dew(a, k); 7 8 if (u3_nul == ded) { 9 return u3_nul; 10 } 11 else { 12 u3_noun pv, qv, rv, sv; 13 u3_noun vrv, trv; 14 15 u3x_qual(u3t(ded), &pv, &qv, &rv, &sv); 16 u3x_cell(rv, &vrv, &trv); 17 18 if (c3y == u3r_sing(k, pv)) { 19 u3_noun low = u3qdu_qor_bot(trv); 20 21 if (u3_nul == low) { 22 u3_noun pro = u3nq(u3_nul, u3k(qv), u3k(vrv), u3k(sv)); 23 24 u3z(ded); 25 26 return pro; 27 } 28 else { 29 u3_noun kl, pl, vl; 30 u3x_trel(u3t(low), &kl, &pl, &vl); 31 32 u3_noun pro = u3nq(u3_nul, u3k(qv), u3k(vrv), 33 u3qdu_qat_raw(sv, kl, pl, vl)); 34 35 u3z(ded); 36 u3z(low); 37 38 return pro; 39 } 40 } 41 else { 42 u3_noun low = u3qdu_qor_dew(trv, k); 43 44 if (u3_nul == low) { 45 u3z(ded); 46 47 return u3_nul; 48 } 49 else { 50 u3_noun pl, ql, rl; 51 u3x_trel(u3t(low), &pl, &ql, &rl); 52 53 u3_noun buc = u3nc(u3k(vrv), u3k(rl)); 54 u3_noun pro = u3nq(u3_nul, u3k(pl), u3k(ql), 55 u3qdu_qat_raw(sv, pv, qv, buc)); 56 57 u3z(ded); 58 u3z(low); 59 u3z(buc); 60 61 return pro; 62 } 63 } 64 } 65 } 66 67 u3_noun 68 u3wdu_dew(u3_noun cor) 69 { 70 u3_noun a, k; 71 72 if (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &k, 0)) { 73 return u3m_bail(c3__exit); 74 } else { 75 return u3qdu_dew(a, k); 76 } 77 } 78