+ All Categories
Home > Documents > Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers...

Addition and SubtractionDefinition. Let A(d) denote the number of steps required to add two numbers...

Date post: 10-Oct-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
15
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? Theorem. A(d) d. Theorem. S (d) d. Definition. Let A(d) denote the maximal number of steps required to add two numbers with d bits.
Transcript
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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]


Recommended