DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(gmp.info.gz) Basecase Division

Info Catalog (gmp.info.gz) Single Limb Division (gmp.info.gz) Division Algorithms (gmp.info.gz) Divide and Conquer Division
 
 Basecase Division
 -----------------
 
 Basecase NxM division is like long division done by hand, but in base
 2^mp_bits_per_limb.  See Knuth section 4.3.1 algorithm D, and
 `mpn/generic/sb_divrem_mn.c'.
 
    Briefly stated, while the dividend remains larger than the divisor,
 a high quotient limb is formed and the Nx1 product q*d subtracted at
 the top end of the dividend.  With a normalized divisor (most
 significant bit set), each quotient limb can be formed with a 2x1
 division and a 1x1 multiplication plus some subtractions.  The 2x1
 division is by the high limb of the divisor and is done either with a
 hardware divide or a multiply by inverse (the same as in  Single
 Limb Division) whichever is faster.  Such a quotient is sometimes one
 too big, requiring an addback of the divisor, but that happens rarely.
 
    With Q=N-M being the number of quotient limbs, this is an O(Q*M)
 algorithm and will run at a speed similar to a basecase QxM
 multiplication, differing in fact only in the extra multiply and divide
 for each of the Q quotient limbs.
 
Info Catalog (gmp.info.gz) Single Limb Division (gmp.info.gz) Division Algorithms (gmp.info.gz) Divide and Conquer Division
automatically generated byinfo2html