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

Theorem karatsuba 16422
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 12166. (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 11912 . . . . 5 𝐴 ∈ ℂ
3 10nn0 12119 . . . . . . 7 10 ∈ ℕ0
43nn0cni 11912 . . . . . 6 10 ∈ ℂ
5 karatsuba.m . . . . . 6 𝑀 ∈ ℕ0
6 expcl 13450 . . . . . 6 ((10 ∈ ℂ ∧ 𝑀 ∈ ℕ0) → (10↑𝑀) ∈ ℂ)
74, 5, 6mp2an 690 . . . . 5 (10↑𝑀) ∈ ℂ
82, 7mulcli 10650 . . . 4 (𝐴 · (10↑𝑀)) ∈ ℂ
9 karatsuba.b . . . . 5 𝐵 ∈ ℕ0
109nn0cni 11912 . . . 4 𝐵 ∈ ℂ
11 karatsuba.c . . . . . 6 𝐶 ∈ ℕ0
1211nn0cni 11912 . . . . 5 𝐶 ∈ ℂ
1312, 7mulcli 10650 . . . 4 (𝐶 · (10↑𝑀)) ∈ ℂ
14 karatsuba.d . . . . 5 𝐷 ∈ ℕ0
1514nn0cni 11912 . . . 4 𝐷 ∈ ℂ
168, 10, 13, 15muladdi 11093 . . 3 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (𝐷 · 𝐵)) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)))
178, 13mulcli 10650 . . . 4 ((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) ∈ ℂ
1815, 10mulcli 10650 . . . 4 (𝐷 · 𝐵) ∈ ℂ
198, 15mulcli 10650 . . . . 5 ((𝐴 · (10↑𝑀)) · 𝐷) ∈ ℂ
2013, 10mulcli 10650 . . . . 5 ((𝐶 · (10↑𝑀)) · 𝐵) ∈ ℂ
2119, 20addcli 10649 . . . 4 (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)) ∈ ℂ
2217, 18, 21add32i 10865 . . 3 ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (𝐷 · 𝐵)) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) = ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) + (𝐷 · 𝐵))
238, 12mulcli 10650 . . . . . 6 ((𝐴 · (10↑𝑀)) · 𝐶) ∈ ℂ
24 karatsuba.s . . . . . . 7 𝑆 ∈ ℕ0
2524nn0cni 11912 . . . . . 6 𝑆 ∈ ℂ
2623, 25, 7adddiri 10656 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) · (10↑𝑀)) = ((((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) + (𝑆 · (10↑𝑀)))
272, 7, 12mul32i 10838 . . . . . . . . 9 ((𝐴 · (10↑𝑀)) · 𝐶) = ((𝐴 · 𝐶) · (10↑𝑀))
28 karatsuba.r . . . . . . . . . 10 (𝐴 · 𝐶) = 𝑅
2928oveq1i 7168 . . . . . . . . 9 ((𝐴 · 𝐶) · (10↑𝑀)) = (𝑅 · (10↑𝑀))
3027, 29eqtri 2846 . . . . . . . 8 ((𝐴 · (10↑𝑀)) · 𝐶) = (𝑅 · (10↑𝑀))
3130oveq1i 7168 . . . . . . 7 (((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) = ((𝑅 · (10↑𝑀)) + 𝑆)
32 karatsuba.w . . . . . . 7 ((𝑅 · (10↑𝑀)) + 𝑆) = 𝑊
3331, 32eqtri 2846 . . . . . 6 (((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) = 𝑊
3433oveq1i 7168 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) · (10↑𝑀)) = (𝑊 · (10↑𝑀))
358, 12, 7mulassi 10654 . . . . . 6 (((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) = ((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀)))
362, 12mulcli 10650 . . . . . . . . . . . 12 (𝐴 · 𝐶) ∈ ℂ
3736, 18, 25add32i 10865 . . . . . . . . . . 11 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + 𝑆) + (𝐷 · 𝐵))
3828oveq1i 7168 . . . . . . . . . . . 12 ((𝐴 · 𝐶) + 𝑆) = (𝑅 + 𝑆)
39 karatsuba.t . . . . . . . . . . . . 13 (𝐵 · 𝐷) = 𝑇
4010, 15, 39mulcomli 10652 . . . . . . . . . . . 12 (𝐷 · 𝐵) = 𝑇
4138, 40oveq12i 7170 . . . . . . . . . . 11 (((𝐴 · 𝐶) + 𝑆) + (𝐷 · 𝐵)) = ((𝑅 + 𝑆) + 𝑇)
4237, 41eqtri 2846 . . . . . . . . . 10 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = ((𝑅 + 𝑆) + 𝑇)
43 karatsuba.e . . . . . . . . . 10 ((𝐴 + 𝐵) · (𝐶 + 𝐷)) = ((𝑅 + 𝑆) + 𝑇)
442, 10, 12, 15muladdi 11093 . . . . . . . . . 10 ((𝐴 + 𝐵) · (𝐶 + 𝐷)) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
4542, 43, 443eqtr2i 2852 . . . . . . . . 9 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
4636, 18addcli 10649 . . . . . . . . . 10 ((𝐴 · 𝐶) + (𝐷 · 𝐵)) ∈ ℂ
472, 15mulcli 10650 . . . . . . . . . . 11 (𝐴 · 𝐷) ∈ ℂ
4812, 10mulcli 10650 . . . . . . . . . . 11 (𝐶 · 𝐵) ∈ ℂ
4947, 48addcli 10649 . . . . . . . . . 10 ((𝐴 · 𝐷) + (𝐶 · 𝐵)) ∈ ℂ
5046, 25, 49addcani 10835 . . . . . . . . 9 ((((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵))) ↔ 𝑆 = ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
5145, 50mpbi 232 . . . . . . . 8 𝑆 = ((𝐴 · 𝐷) + (𝐶 · 𝐵))
5251oveq1i 7168 . . . . . . 7 (𝑆 · (10↑𝑀)) = (((𝐴 · 𝐷) + (𝐶 · 𝐵)) · (10↑𝑀))
5347, 48, 7adddiri 10656 . . . . . . 7 (((𝐴 · 𝐷) + (𝐶 · 𝐵)) · (10↑𝑀)) = (((𝐴 · 𝐷) · (10↑𝑀)) + ((𝐶 · 𝐵) · (10↑𝑀)))
542, 15, 7mul32i 10838 . . . . . . . 8 ((𝐴 · 𝐷) · (10↑𝑀)) = ((𝐴 · (10↑𝑀)) · 𝐷)
5512, 10, 7mul32i 10838 . . . . . . . 8 ((𝐶 · 𝐵) · (10↑𝑀)) = ((𝐶 · (10↑𝑀)) · 𝐵)
5654, 55oveq12i 7170 . . . . . . 7 (((𝐴 · 𝐷) · (10↑𝑀)) + ((𝐶 · 𝐵) · (10↑𝑀))) = (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))
5752, 53, 563eqtri 2850 . . . . . 6 (𝑆 · (10↑𝑀)) = (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))
5835, 57oveq12i 7170 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) + (𝑆 · (10↑𝑀))) = (((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)))
5926, 34, 583eqtr3ri 2855 . . . 4 (((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) = (𝑊 · (10↑𝑀))
6059, 40oveq12i 7170 . . 3 ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) + (𝐷 · 𝐵)) = ((𝑊 · (10↑𝑀)) + 𝑇)
6116, 22, 603eqtri 2850 . 2 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = ((𝑊 · (10↑𝑀)) + 𝑇)
62 karatsuba.x . . 3 ((𝐴 · (10↑𝑀)) + 𝐵) = 𝑋
63 karatsuba.y . . 3 ((𝐶 · (10↑𝑀)) + 𝐷) = 𝑌
6462, 63oveq12i 7170 . 2 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = (𝑋 · 𝑌)
65 karatsuba.z . 2 ((𝑊 · (10↑𝑀)) + 𝑇) = 𝑍
6661, 64, 653eqtr3i 2854 1 (𝑋 · 𝑌) = 𝑍
Colors of variables: wff setvar class
Syntax hints:   = wceq 1537  wcel 2114  (class class class)co 7158  cc 10537  0cc0 10539  1c1 10540   + caddc 10542   · cmul 10544  0cn0 11900  cdc 12101  cexp 13432
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 2795  ax-sep 5205  ax-nul 5212  ax-pow 5268  ax-pr 5332  ax-un 7463  ax-cnex 10595  ax-resscn 10596  ax-1cn 10597  ax-icn 10598  ax-addcl 10599  ax-addrcl 10600  ax-mulcl 10601  ax-mulrcl 10602  ax-mulcom 10603  ax-addass 10604  ax-mulass 10605  ax-distr 10606  ax-i2m1 10607  ax-1ne0 10608  ax-1rid 10609  ax-rnegex 10610  ax-rrecex 10611  ax-cnre 10612  ax-pre-lttri 10613  ax-pre-lttrn 10614  ax-pre-ltadd 10615  ax-pre-mulgt0 10616
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 2802  df-cleq 2816  df-clel 2895  df-nfc 2965  df-ne 3019  df-nel 3126  df-ral 3145  df-rex 3146  df-reu 3147  df-rab 3149  df-v 3498  df-sbc 3775  df-csb 3886  df-dif 3941  df-un 3943  df-in 3945  df-ss 3954  df-pss 3956  df-nul 4294  df-if 4470  df-pw 4543  df-sn 4570  df-pr 4572  df-tp 4574  df-op 4576  df-uni 4841  df-iun 4923  df-br 5069  df-opab 5131  df-mpt 5149  df-tr 5175  df-id 5462  df-eprel 5467  df-po 5476  df-so 5477  df-fr 5516  df-we 5518  df-xp 5563  df-rel 5564  df-cnv 5565  df-co 5566  df-dm 5567  df-rn 5568  df-res 5569  df-ima 5570  df-pred 6150  df-ord 6196  df-on 6197  df-lim 6198  df-suc 6199  df-iota 6316  df-fun 6359  df-fn 6360  df-f 6361  df-f1 6362  df-fo 6363  df-f1o 6364  df-fv 6365  df-riota 7116  df-ov 7161  df-oprab 7162  df-mpo 7163  df-om 7583  df-2nd 7692  df-wrecs 7949  df-recs 8010  df-rdg 8048  df-er 8291  df-en 8512  df-dom 8513  df-sdom 8514  df-pnf 10679  df-mnf 10680  df-xr 10681  df-ltxr 10682  df-le 10683  df-sub 10874  df-neg 10875  df-nn 11641  df-2 11703  df-3 11704  df-4 11705  df-5 11706  df-6 11707  df-7 11708  df-8 11709  df-9 11710  df-n0 11901  df-z 11985  df-dec 12102  df-uz 12247  df-seq 13373  df-exp 13433
This theorem is referenced by:  dpmul4  30592
  Copyright terms: Public domain W3C validator