Lines Matching refs:qn
88 mp_size_t qn;
99 qn = nn - dn;
100 qp += qn;
104 if (qn >= dn)
106 qn++; /* pretend we'll need an extra limb */
107 /* Reduce qn mod dn without division, optimizing small operations. */
109 qn -= dn;
110 while (qn > dn);
112 qp -= qn; /* point at low limb of next quotient block */
113 np -= qn; /* point in the middle of partial remainder */
118 if (qn == 1)
174 if (qn == 2)
176 else if (BELOW_THRESHOLD (qn, DC_DIV_QR_THRESHOLD))
177 qh = mpn_sbpi1_div_qr (qp, np - qn, 2 * qn, dp - qn, qn, dinv->inv32);
179 qh = mpn_dcpi1_div_qr_n (qp, np - qn, dp - qn, qn, dinv, tp);
181 if (qn != dn)
183 if (qn > dn - qn)
184 mpn_mul (tp, qp, qn, dp - dn, dn - qn);
186 mpn_mul (tp, dp - dn, dn - qn, qp, qn);
190 cy += mpn_sub_n (np - dn + qn, np - dn + qn, dp - dn, dn - qn);
194 qh -= mpn_sub_1 (qp, qp, qn, 1);
199 qn = nn - dn - qn + 1;
200 while (qn > dn)
205 qn -= dn;
209 have made sure the code above left just dn-1=qn quotient limbs to
211 qn--;
212 qp -= qn;
214 qsave = qp[qn];
216 MPN_COPY_INCR (qp, qp + 1, qn);
217 qp[qn] = qsave;
219 else /* (qn < dn) */
223 if (qn == 0)
233 qp -= qn; /* point at low limb of next quotient block */
234 np -= qn; /* point in the middle of partial remainder */
236 q2p = TMP_SALLOC_LIMBS (qn + 1);
239 if (BELOW_THRESHOLD (qn, DC_DIVAPPR_Q_THRESHOLD))
241 qh = mpn_sbpi1_divappr_q (q2p, np - qn - 2, 2 * (qn + 1),
242 dp - (qn + 1), qn + 1, dinv->inv32);
248 tp = TMP_SALLOC_LIMBS (qn + 1);
249 qh = mpn_dcpi1_divappr_q_n (q2p, np - qn - 2, dp - (qn + 1), qn + 1, dinv, tp);
251 MPN_COPY (qp, q2p + 1, qn);