MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  karatsuba Structured version   Visualization version   GIF version

Theorem karatsuba 16403
Description: The Karatsuba multiplication algorithm. If 𝑋 and 𝑌 are decomposed into two groups of digits of length 𝑀 (only the lower group is known to be this size but the algorithm is most efficient when the partition is chosen near the middle of the digit string), then 𝑋𝑌 can be written in three groups of digits, where each group needs only one multiplication. Thus, we can halve both inputs with only three multiplications on the smaller operands, yielding an asymptotic improvement of n^(log2 3) instead of n^2 for the "naive" algorithm decmul1c 12150. (Contributed by Mario Carneiro, 16-Jul-2015.) (Revised by AV, 9-Sep-2021.)
Hypotheses
Ref Expression
karatsuba.a 𝐴 ∈ ℕ0
karatsuba.b 𝐵 ∈ ℕ0
karatsuba.c 𝐶 ∈ ℕ0
karatsuba.d 𝐷 ∈ ℕ0
karatsuba.s 𝑆 ∈ ℕ0
karatsuba.m 𝑀 ∈ ℕ0
karatsuba.r (𝐴 · 𝐶) = 𝑅
karatsuba.t (𝐵 · 𝐷) = 𝑇
karatsuba.e ((𝐴 + 𝐵) · (𝐶 + 𝐷)) = ((𝑅 + 𝑆) + 𝑇)
karatsuba.x ((𝐴 · (10↑𝑀)) + 𝐵) = 𝑋
karatsuba.y ((𝐶 · (10↑𝑀)) + 𝐷) = 𝑌
karatsuba.w ((𝑅 · (10↑𝑀)) + 𝑆) = 𝑊
karatsuba.z ((𝑊 · (10↑𝑀)) + 𝑇) = 𝑍
Assertion
Ref Expression
karatsuba (𝑋 · 𝑌) = 𝑍

Proof of Theorem karatsuba
StepHypRef Expression
1 karatsuba.a . . . . . 6 𝐴 ∈ ℕ0
21nn0cni 11896 . . . . 5 𝐴 ∈ ℂ
3 10nn0 12103 . . . . . . 7 10 ∈ ℕ0
43nn0cni 11896 . . . . . 6 10 ∈ ℂ
5 karatsuba.m . . . . . 6 𝑀 ∈ ℕ0
6 expcl 13437 . . . . . 6 ((10 ∈ ℂ ∧ 𝑀 ∈ ℕ0) → (10↑𝑀) ∈ ℂ)
74, 5, 6mp2an 690 . . . . 5 (10↑𝑀) ∈ ℂ
82, 7mulcli 10634 . . . 4 (𝐴 · (10↑𝑀)) ∈ ℂ
9 karatsuba.b . . . . 5 𝐵 ∈ ℕ0
109nn0cni 11896 . . . 4 𝐵 ∈ ℂ
11 karatsuba.c . . . . . 6 𝐶 ∈ ℕ0
1211nn0cni 11896 . . . . 5 𝐶 ∈ ℂ
1312, 7mulcli 10634 . . . 4 (𝐶 · (10↑𝑀)) ∈ ℂ
14 karatsuba.d . . . . 5 𝐷 ∈ ℕ0
1514nn0cni 11896 . . . 4 𝐷 ∈ ℂ
168, 10, 13, 15muladdi 11077 . . 3 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (𝐷 · 𝐵)) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)))
178, 13mulcli 10634 . . . 4 ((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) ∈ ℂ
1815, 10mulcli 10634 . . . 4 (𝐷 · 𝐵) ∈ ℂ
198, 15mulcli 10634 . . . . 5 ((𝐴 · (10↑𝑀)) · 𝐷) ∈ ℂ
2013, 10mulcli 10634 . . . . 5 ((𝐶 · (10↑𝑀)) · 𝐵) ∈ ℂ
2119, 20addcli 10633 . . . 4 (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)) ∈ ℂ
2217, 18, 21add32i 10849 . . 3 ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (𝐷 · 𝐵)) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) = ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) + (𝐷 · 𝐵))
238, 12mulcli 10634 . . . . . 6 ((𝐴 · (10↑𝑀)) · 𝐶) ∈ ℂ
24 karatsuba.s . . . . . . 7 𝑆 ∈ ℕ0
2524nn0cni 11896 . . . . . 6 𝑆 ∈ ℂ
2623, 25, 7adddiri 10640 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) · (10↑𝑀)) = ((((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) + (𝑆 · (10↑𝑀)))
272, 7, 12mul32i 10822 . . . . . . . . 9 ((𝐴 · (10↑𝑀)) · 𝐶) = ((𝐴 · 𝐶) · (10↑𝑀))
28 karatsuba.r . . . . . . . . . 10 (𝐴 · 𝐶) = 𝑅
2928oveq1i 7152 . . . . . . . . 9 ((𝐴 · 𝐶) · (10↑𝑀)) = (𝑅 · (10↑𝑀))
3027, 29eqtri 2844 . . . . . . . 8 ((𝐴 · (10↑𝑀)) · 𝐶) = (𝑅 · (10↑𝑀))
3130oveq1i 7152 . . . . . . 7 (((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) = ((𝑅 · (10↑𝑀)) + 𝑆)
32 karatsuba.w . . . . . . 7 ((𝑅 · (10↑𝑀)) + 𝑆) = 𝑊
3331, 32eqtri 2844 . . . . . 6 (((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) = 𝑊
3433oveq1i 7152 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) · (10↑𝑀)) = (𝑊 · (10↑𝑀))
358, 12, 7mulassi 10638 . . . . . 6 (((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) = ((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀)))
362, 12mulcli 10634 . . . . . . . . . . . 12 (𝐴 · 𝐶) ∈ ℂ
3736, 18, 25add32i 10849 . . . . . . . . . . 11 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + 𝑆) + (𝐷 · 𝐵))
3828oveq1i 7152 . . . . . . . . . . . 12 ((𝐴 · 𝐶) + 𝑆) = (𝑅 + 𝑆)
39 karatsuba.t . . . . . . . . . . . . 13 (𝐵 · 𝐷) = 𝑇
4010, 15, 39mulcomli 10636 . . . . . . . . . . . 12 (𝐷 · 𝐵) = 𝑇
4138, 40oveq12i 7154 . . . . . . . . . . 11 (((𝐴 · 𝐶) + 𝑆) + (𝐷 · 𝐵)) = ((𝑅 + 𝑆) + 𝑇)
4237, 41eqtri 2844 . . . . . . . . . 10 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = ((𝑅 + 𝑆) + 𝑇)
43 karatsuba.e . . . . . . . . . 10 ((𝐴 + 𝐵) · (𝐶 + 𝐷)) = ((𝑅 + 𝑆) + 𝑇)
442, 10, 12, 15muladdi 11077 . . . . . . . . . 10 ((𝐴 + 𝐵) · (𝐶 + 𝐷)) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
4542, 43, 443eqtr2i 2850 . . . . . . . . 9 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
4636, 18addcli 10633 . . . . . . . . . 10 ((𝐴 · 𝐶) + (𝐷 · 𝐵)) ∈ ℂ
472, 15mulcli 10634 . . . . . . . . . . 11 (𝐴 · 𝐷) ∈ ℂ
4812, 10mulcli 10634 . . . . . . . . . . 11 (𝐶 · 𝐵) ∈ ℂ
4947, 48addcli 10633 . . . . . . . . . 10 ((𝐴 · 𝐷) + (𝐶 · 𝐵)) ∈ ℂ
5046, 25, 49addcani 10819 . . . . . . . . 9 ((((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵))) ↔ 𝑆 = ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
5145, 50mpbi 232 . . . . . . . 8 𝑆 = ((𝐴 · 𝐷) + (𝐶 · 𝐵))
5251oveq1i 7152 . . . . . . 7 (𝑆 · (10↑𝑀)) = (((𝐴 · 𝐷) + (𝐶 · 𝐵)) · (10↑𝑀))
5347, 48, 7adddiri 10640 . . . . . . 7 (((𝐴 · 𝐷) + (𝐶 · 𝐵)) · (10↑𝑀)) = (((𝐴 · 𝐷) · (10↑𝑀)) + ((𝐶 · 𝐵) · (10↑𝑀)))
542, 15, 7mul32i 10822 . . . . . . . 8 ((𝐴 · 𝐷) · (10↑𝑀)) = ((𝐴 · (10↑𝑀)) · 𝐷)
5512, 10, 7mul32i 10822 . . . . . . . 8 ((𝐶 · 𝐵) · (10↑𝑀)) = ((𝐶 · (10↑𝑀)) · 𝐵)
5654, 55oveq12i 7154 . . . . . . 7 (((𝐴 · 𝐷) · (10↑𝑀)) + ((𝐶 · 𝐵) · (10↑𝑀))) = (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))
5752, 53, 563eqtri 2848 . . . . . 6 (𝑆 · (10↑𝑀)) = (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))
5835, 57oveq12i 7154 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) + (𝑆 · (10↑𝑀))) = (((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)))
5926, 34, 583eqtr3ri 2853 . . . 4 (((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) = (𝑊 · (10↑𝑀))
6059, 40oveq12i 7154 . . 3 ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) + (𝐷 · 𝐵)) = ((𝑊 · (10↑𝑀)) + 𝑇)
6116, 22, 603eqtri 2848 . 2 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = ((𝑊 · (10↑𝑀)) + 𝑇)
62 karatsuba.x . . 3 ((𝐴 · (10↑𝑀)) + 𝐵) = 𝑋
63 karatsuba.y . . 3 ((𝐶 · (10↑𝑀)) + 𝐷) = 𝑌
6462, 63oveq12i 7154 . 2 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = (𝑋 · 𝑌)
65 karatsuba.z . 2 ((𝑊 · (10↑𝑀)) + 𝑇) = 𝑍
6661, 64, 653eqtr3i 2852 1 (𝑋 · 𝑌) = 𝑍
Colors of variables: wff setvar class
Syntax hints:   = wceq 1537  wcel 2114  (class class class)co 7142  cc 10521  0cc0 10523  1c1 10524   + caddc 10526   · cmul 10528  0cn0 11884  cdc 12085  cexp 13419
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1796  ax-4 1810  ax-5 1911  ax-6 1970  ax-7 2015  ax-8 2116  ax-9 2124  ax-10 2145  ax-11 2161  ax-12 2177  ax-ext 2793  ax-sep 5189  ax-nul 5196  ax-pow 5252  ax-pr 5316  ax-un 7447  ax-cnex 10579  ax-resscn 10580  ax-1cn 10581  ax-icn 10582  ax-addcl 10583  ax-addrcl 10584  ax-mulcl 10585  ax-mulrcl 10586  ax-mulcom 10587  ax-addass 10588  ax-mulass 10589  ax-distr 10590  ax-i2m1 10591  ax-1ne0 10592  ax-1rid 10593  ax-rnegex 10594  ax-rrecex 10595  ax-cnre 10596  ax-pre-lttri 10597  ax-pre-lttrn 10598  ax-pre-ltadd 10599  ax-pre-mulgt0 10600
This theorem depends on definitions:  df-bi 209  df-an 399  df-or 844  df-3or 1084  df-3an 1085  df-tru 1540  df-ex 1781  df-nf 1785  df-sb 2070  df-mo 2622  df-eu 2654  df-clab 2800  df-cleq 2814  df-clel 2893  df-nfc 2963  df-ne 3017  df-nel 3124  df-ral 3143  df-rex 3144  df-reu 3145  df-rab 3147  df-v 3488  df-sbc 3764  df-csb 3872  df-dif 3927  df-un 3929  df-in 3931  df-ss 3940  df-pss 3942  df-nul 4280  df-if 4454  df-pw 4527  df-sn 4554  df-pr 4556  df-tp 4558  df-op 4560  df-uni 4825  df-iun 4907  df-br 5053  df-opab 5115  df-mpt 5133  df-tr 5159  df-id 5446  df-eprel 5451  df-po 5460  df-so 5461  df-fr 5500  df-we 5502  df-xp 5547  df-rel 5548  df-cnv 5549  df-co 5550  df-dm 5551  df-rn 5552  df-res 5553  df-ima 5554  df-pred 6134  df-ord 6180  df-on 6181  df-lim 6182  df-suc 6183  df-iota 6300  df-fun 6343  df-fn 6344  df-f 6345  df-f1 6346  df-fo 6347  df-f1o 6348  df-fv 6349  df-riota 7100  df-ov 7145  df-oprab 7146  df-mpo 7147  df-om 7567  df-2nd 7676  df-wrecs 7933  df-recs 7994  df-rdg 8032  df-er 8275  df-en 8496  df-dom 8497  df-sdom 8498  df-pnf 10663  df-mnf 10664  df-xr 10665  df-ltxr 10666  df-le 10667  df-sub 10858  df-neg 10859  df-nn 11625  df-2 11687  df-3 11688  df-4 11689  df-5 11690  df-6 11691  df-7 11692  df-8 11693  df-9 11694  df-n0 11885  df-z 11969  df-dec 12086  df-uz 12231  df-seq 13360  df-exp 13420
This theorem is referenced by:  dpmul4  30576
  Copyright terms: Public domain W3C validator