1 /* j/1/div.c 2 ** 3 */ 4 #include "all.h" 5 6 7 /* functions 8 */ 9 u3_noun u3qa_div(u3_atom a,u3_atom b)10 u3qa_div(u3_atom a, 11 u3_atom b) 12 { 13 if ( 0 == b ) { 14 return u3m_bail(c3__exit); 15 } 16 else { 17 if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { 18 return a / b; 19 } 20 else { 21 mpz_t a_mp, b_mp; 22 23 u3r_mp(a_mp, a); 24 u3r_mp(b_mp, b); 25 26 mpz_tdiv_q(a_mp, a_mp, b_mp); 27 mpz_clear(b_mp); 28 29 return u3i_mp(a_mp); 30 } 31 } 32 } 33 u3_noun u3wa_div(u3_noun cor)34 u3wa_div(u3_noun cor) 35 { 36 u3_noun a, b; 37 38 if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || 39 (c3n == u3ud(a)) || 40 (c3n == u3ud(b)) ) 41 { 42 return u3m_bail(c3__exit); 43 } else { 44 return u3qa_div(a, b); 45 } 46 } 47