Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers...
Transcript of Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers...
![Page 1: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/1.jpg)
Addition and Subtraction
How fast do we add (or subtract) two numbers n and m?
How fast can we add (or subtract) two numbers n and m?
Definition. Let A(d) denote the number of steps required toadd two numbers with d bits.
Theorem. A(d) ⇣ d.
Addition and Subtraction
How fast do we add (or subtract) two numbers n and m?
How fast can we add (or subtract) two numbers n and m?
Definition. Let A(d) denote the number of steps required toadd two numbers with d bits.
Theorem. A(d) ⇣ d.
Addition and Subtraction
How fast do we add (or subtract) two numbers n and m?
How fast can we add (or subtract) two numbers n and m?
Definition. Let A(d) denote the number of steps required toadd two numbers with d bits.
Theorem. A(d) ⇣ d.
Addition and Subtraction
How fast do we add (or subtract) two numbers n and m?
How fast can we add (or subtract) two numbers n and m?
Definition. Let A(d) denote the number of steps required toadd two numbers with d bits.
Theorem. A(d) ⇣ d.
Addition and Subtraction
How fast do we add (or subtract) two numbers n and m?
How fast can we add (or subtract) two numbers n and m?
Definition. Let A(d) denote the number of steps required toadd two numbers with d bits.
Theorem. A(d) ⇣ d.
Theorem. S(d) ⇣ d.
Definition. Let A(d) denote the maximal number of stepsrequired to add two numbers with d bits.
![Page 2: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/2.jpg)
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
![Page 3: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/3.jpg)
Attempt 1
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Attempt 1
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Attempt 1
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Attempt 1
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Attempt 2
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = ??????????????????????????????????, deduceM(d) 3M(r + 1) + O(r) (3 + ")M(r + 1).
• Hence, M(d) (3 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (3 + ")log2 d = dlog(3+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Attempt 2
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From
nm = anam22r+�(an+bn)(am+bm)�anam�bnbm
�2r+bnbm,
deduce M(d) 3M(r + 2) + O(r) (3 + ")M(r + 2).
• Hence, M(d) (3 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (3 + ")log2 d = dlog(3+")/ log 2.
Attempt 2
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From
nm = anam22r+�(an+bn)(am+bm)�anam�bnbm
�2r+bnbm,
deduce M(d) 3M(r + 2) + O(r) (3 + ")M(r + 2).
• Hence, M(d) (3 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (3 + ")log2 d = dlog(3+")/ log 2.
Attempt 2
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From
nm = anam22r+�(an+bn)(am+bm)�anam�bnbm
�2r+bnbm,
deduce M(d) 3M(r + 2) + O(r) (3 + ")M(r + 2).
• Hence, M(d) (3 + ")sM
�(d + 2s+2 � 4)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (3 + ")log2 d = dlog(3+")/ log 2.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
![Page 4: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/4.jpg)
log 3
log 2= 1.5849625
Theorem. M(d) ⌧ d1.585.
Attempt 2
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = ??????????????????????????????????, deduceM(d) 3M(r + 1) + O(r) (3 + ")M(r + 1).
• Hence, M(d) (3 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (3 + ")log2 d = dlog(3+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
log 3
log 2= 1.5849625
Theorem. M(d) ⌧ d1.585.
Multiplication
How fast do we multiply two numbers n and m?
How fast can we multiply two numbers n and m?
Definition. Let M(d) denote the number of steps required tomultiply two numbers with d bits.
Theorem. M(d) ⌧ d2.
Can we do better? Yes
How can we see “easily” that something better is possible?
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
HW: Due January 31 (Friday)
Page 3, Problems 1 and 2
Page 5, unnumbered homework (first set)
(you may use (log 5/ log 3) + " instead of log 5/ log 3)
September 7
![Page 5: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/5.jpg)
Attempt 1
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From nm = anbn22r + (anbm + ambn)2r + bnbm, deduceM(d) 4M(r + 1) + O(r) (4 + ")M(r + 1).
• Hence, M(d) (4 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (4 + ")log2 d = dlog(4+")/ log 2.
Theorem. M(d) ⌧ d (log d) log log d.
Attempt 2
• Suppose M(d) � d1.5.
• Let d be large, and let " > 0.
• Let n and m have d bits, and write n = an ⇥ 2r + bn
and m = am ⇥ 2r + bm, where r = bd/2c and the aj andbj are integers with bj < 2r.
• From
nm = anam22r+�(an+bn)(am+bm)�anam�bnbm
�2r+bnbm,
deduce M(d) 3M(r + 2) + O(r) (3 + ")M(r + 2).
• Hence, M(d) (3 + ")sM
�(d + 2s+1 � 2)/2s
�.
• Take s = blog2 dc � C (with C big). Then 2s � d/2C+1.
• Conclude, M(d) ⌧ (3 + ")log2 d = dlog(3+")/ log 2.
log 3
log 2= 1.5849625
Theorem. M(d) ⌧ d1.585.
Idea for Doing Better
log 3
log 2= 1.5849625
Theorem. M(d) ⌧ d1.585.
Idea for Doing Better
Think in terms of writing
n = an22r + bn2
r + cn and m = am22r + bm2r + cm,
where r = bd/3c.
How many multiplications does it take to expand nm ?
log 3
log 2= 1.5849625
Theorem. M(d) ⌧ d1.585.
Idea for Doing Better
Think in terms of writing
n = an22r + bn2
r + cn and m = am22r + bm2r + cm,
where r = bd/3c.
How many multiplications does it take to expand nm ?
![Page 6: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/6.jpg)
Homework
(3) The value of f(n) =nX
k=1
1/k can be estimated by com-
paring it’s value to an integral. For example, by comparingthe sum of the areas of the rectangles indicated in the graphbelow with the area under the graph of y = 1/x, one obtains
f(9) �Z 10
1
1
xdx = log 10.
(c) Prove that f(n) ⇠ log n.
Theorem. M(d) ⌧ d (log d) log log d.Theorem. For every " > 0, we have M(d) ⌧" d
1+".
Theorem. Given distinct numbers x0, x1, . . . , xk and num-bers y0, y1, . . . , yk, there is a unique polynomial f of degree k such that f(xj) = yj for all j.
Theorem. For every " > 0, we have M(d) ⌧" d1+".
Theorem. Given distinct numbers x0, x1, . . . , xk and num-bers y0, y1, . . . , yk, there is a unique polynomial f of degree k such that f(xj) = yj for all j.
Lagrange Interpolation:
f(x) =kX
i=0
✓ Y
0jk
j 6=i
x � xj
xi � xj
◆yi
Theorem. For every " > 0, we have M(d) ⌧" d1+".
Theorem. Given distinct numbers x0, x1, . . . , xk and num-bers y0, y1, . . . , yk, there is a unique polynomial f of degree k such that f(xj) = yj for all j.
Lagrange Interpolation:
f(x) =kX
i=0
✓ Y
0jk
j 6=i
x � xj
xi � xj
◆yi
![Page 7: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/7.jpg)
Theorem. For every " > 0, we have M(d) ⌧" d1+".
Theorem. Given distinct numbers x0, x1, . . . , xk and num-bers y0, y1, . . . , yk, there is a unique polynomial f of degree k such that f(xj) = yj for all j.
Lagrange Interpolation:
f(x) =kX
i=0
✓ Y
0jk
j 6=i
x � xj
xi � xj
◆yi
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where
f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where
f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
![Page 8: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/8.jpg)
Theorem. For every " > 0, we have M(d) ⌧" d1+".
Theorem. Given distinct numbers x0, x1, . . . , xk and num-bers y0, y1, . . . , yk, there is a unique polynomial f of degree k such that f(xj) = yj for all j.
Lagrange Interpolation:
f(x) =kX
i=0
✓ Y
0jk
j 6=i
x � xj
xi � xj
◆yi
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where
f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where
f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where
f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
Theorem. For every " > 0, we have M(d) ⌧" d1+".
Theorem. Given distinct numbers x0, x1, . . . , xk and num-bers y0, y1, . . . , yk, there is a unique polynomial f of degree k such that f(xj) = yj for all j.
Lagrange Interpolation:
f(x) =kX
i=0
✓ Y
0jk
j 6=i
x � xj
xi � xj
◆yi
![Page 9: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/9.jpg)
Theorem. For every " > 0, we have M(d) ⌧" d1+".
Theorem. Given distinct numbers x0, x1, . . . , xk and num-bers y0, y1, . . . , yk, there is a unique polynomial f of degree k such that f(xj) = yj for all j.
Lagrange Interpolation:
f(x) =kX
i=0
✓ Y
0jk
j 6=i
x � xj
xi � xj
◆yi
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where
f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where
f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
• Suppose n and m have kr digits. Write
n =
k�1X
u=0
au2ur
and m =
k�1X
v=0
bv2vr
.
• Then nm = f(2r), where
f(x) =
✓ k�1X
u=0
auxu
◆✓ k�1X
v=0
bvxv
◆.
• Compute the 2k�1 numbers yj = f(j), for 0 j 2k�2,
using 2k�1 multiplications of two r+ck digit numbers.
• Compute the coe�cients of f(x) expanded, using Lagrange
interpolation, in Ok(r) steps.
• Deduce M(kr) (2k � 1)M(r + ck) + c0kr so that
M(d) ⌧ (2k � 1)logk d ⌧ d
log(2k�1)/ log k.
![Page 10: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/10.jpg)
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
![Page 11: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/11.jpg)
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
![Page 12: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/12.jpg)
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
Division
Problem: Given two positive integers n and m, determine
the quotient q and the remainder r when n is divided by m.
These should be integers satisfying
n = mq + r and 0 r < m.
Definition. Let M0(d) denote an upper bound on the number
of steps required to multiply two numbers with d bits. Let
D0(d) denote an upper bound on the number of steps required
to obtain q and r given n and m each have d binary digits.
Theorem. Suppose M0(d) has the form df(d) where f(d) is
an increasing function of d. Then D0(d) ⌧ M
0(d).
We need only compute 1/m to su�cient accuracy.
Suppose n and m have s digits. If 1/m = 0.d1d2d3d4...
(base 2) with d1, . . . , ds known, then
n
m=
1
2s(n ⇥ d1d2 . . . ds) + ✓, where 0 ✓ 1.
Write this in the form
n
m=
1
2s(q
02
s+ q
00) + ✓,
so n = mq0+✓
0where 0 ✓
0< 2m. Try q = q
0and q = q
0+1.
![Page 13: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/13.jpg)
Newton’s Method
Say we want to compute 1/m. Take a function f(x) which
has root 1/m. If x0
is an approximation to the root, then
how can we get a better approximation? Take f(x) = m �1/x. Starting with x
0= x0, this leads to the approximations
xn+1 = 2xn � mx2
n.
Note that if xn = (1 � ")/m, then xn+1 = (1 � "2)/m.
Newton’s Method
Say we want to compute 1/m. Take a function f(x) which
has root 1/m. If x0
is an approximation to the root, then
how can we get a better approximation? Take
f(x) = m � 1/x.
Starting with x0= x0, this leads to the approximations
xn+1 = 2xn � mx2
n.
Note that if xn = (1 � ")/m, then xn+1 = (1 � "2)/m.
![Page 14: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/14.jpg)
Newton’s Method
Say we want to compute 1/m. Take a function f(x) which
has root 1/m. If x0
is an approximation to the root, then
how can we get a better approximation? Take f(x) = m �1/x. Starting with x
0= x0, this leads to the approximations
xn+1 = 2xn � mx2
n.
Note that if xn = (1 � ")/m, then xn+1 = (1 � "2)/m.
Newton’s Method
Say we want to compute 1/m. Take a function f(x) which
has root 1/m. If x0
is an approximation to the root, then
how can we get a better approximation? Take
f(x) = m � 1/x.
Starting with x0= x0, this leads to the approximations
xn+1 = 2xn � mx2
n.
Note that if xn = (1 � ")/m, then xn+1 = (1 � "2)/m.
Newton’s Method
Say we want to compute 1/m. Take a function f(x) which
has root 1/m. If x0
is an approximation to the root, then
how can we get a better approximation? Take
f(x) = m � 1/x.
Starting with x0= x0, this leads to the approximations
xn+1 = 2xn � mx2
n.
Note that if xn = (1 � ")/m, then xn+1 = (1 � "2)/m.
![Page 15: Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers with d bits. Theorem. A(d) ⇣ d. Addition and Subtraction How fast do we add (or](https://reader034.fdocuments.us/reader034/viewer/2022052103/603e92fd2f9fe4073d79359b/html5/thumbnails/15.jpg)
Algorithm from Knuth, Vol. 2, pp. 295-6
Algorithm R. Let v in binary be v = (0.v1v2v3 . . . )2, with
v1 = 1. The algorithm outputs z satisfying
|z � 1/v| 2�n
.
R1. [Initialize] Set z 1
4b32/(4v1 + 2v2 + v3)c and k 0.
R2. [Newton iteration] (At this point, z 2 has the binary
form (⇤⇤.⇤⇤ · · · ⇤)2 with 2k+1 places after the radix point.)
Calculate z2
exactly. Then calculate Vkz2
exactly, where
Vk = (0.v1v2 . . . v2k+1+3
)2. Then set z 2z � Vkz2
+ r,
where 0 r < 2�2
k+1�1is added if needed to “round up”
z so that it is a multiple of 2�2
k+1�1. Finally, set k k+1.
R3. [End Test] If 2k
< n, go back to step R2; otherwise the
algorithm terminates.
Algorithm from Knuth, Vol. 2, pp. 295-6
Algorithm R. Let v in binary be v = (0.v1v2v3 . . . )2, with
v1 = 1. The algorithm outputs z satisfying
|z � 1/v| 2�n
.
R1. [Initialize] Set z 1
4b32/(4v1 + 2v2 + v3)c and k 0.
R2. [Newton iteration] (At this point, z 2 has the binary
form (⇤⇤.⇤⇤ · · · ⇤)2 with 2k+1 places after the radix point.)
Calculate z2
exactly. Then calculate Vkz2
exactly, where
Vk = (0.v1v2 . . . v2k+1+3
)2. Then set z 2z � Vkz2
+ r,
where 0 r < 2�2
k+1�1is added if needed to “round up”
z so that it is a multiple of 2�2
k+1�1. Finally, set k k+1.
R3. [End Test] If 2k
< n, go back to step R2; otherwise the
algorithm terminates.
Algorithm from Knuth, Vol. 2, pp. 295-6
Algorithm R. Let v in binary be v = (0.v1v2v3 . . . )2, with
v1 = 1. The algorithm outputs z satisfying
|z � 1/v| 2�n
.
R1. [Initialize] Set z 1
4b32/(4v1 + 2v2 + v3)c and k 0.
R2. [Newton iteration] (At this point, z 2 has the binary
form (⇤⇤.⇤⇤ · · · ⇤)2 with 2k+1 places after the radix point.)
Calculate z2
exactly. Then calculate Vkz2
exactly, where
Vk = (0.v1v2 . . . v2k+1+3
)2. Then set z 2z � Vkz2
+ r,
where 0 r < 2�2
k+1�1is added if needed to “round up”
z so that it is a multiple of 2�2
k+1�1. Finally, set k k+1.
R3. [End Test] If 2k
< n, go back to step R2; otherwise the
algorithm terminates.
z 2 [0, 2]