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

Theorem karatsuba 17031
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 12692. (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 12432 . . . . 5 𝐴 ∈ ℂ
3 10nn0 12645 . . . . . . 7 10 ∈ ℕ0
43nn0cni 12432 . . . . . 6 10 ∈ ℂ
5 karatsuba.m . . . . . 6 𝑀 ∈ ℕ0
6 expcl 14022 . . . . . 6 ((10 ∈ ℂ ∧ 𝑀 ∈ ℕ0) → (10↑𝑀) ∈ ℂ)
74, 5, 6mp2an 692 . . . . 5 (10↑𝑀) ∈ ℂ
82, 7mulcli 11159 . . . 4 (𝐴 · (10↑𝑀)) ∈ ℂ
9 karatsuba.b . . . . 5 𝐵 ∈ ℕ0
109nn0cni 12432 . . . 4 𝐵 ∈ ℂ
11 karatsuba.c . . . . . 6 𝐶 ∈ ℕ0
1211nn0cni 12432 . . . . 5 𝐶 ∈ ℂ
1312, 7mulcli 11159 . . . 4 (𝐶 · (10↑𝑀)) ∈ ℂ
14 karatsuba.d . . . . 5 𝐷 ∈ ℕ0
1514nn0cni 12432 . . . 4 𝐷 ∈ ℂ
168, 10, 13, 15muladdi 11607 . . 3 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (𝐷 · 𝐵)) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)))
178, 13mulcli 11159 . . . 4 ((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) ∈ ℂ
1815, 10mulcli 11159 . . . 4 (𝐷 · 𝐵) ∈ ℂ
198, 15mulcli 11159 . . . . 5 ((𝐴 · (10↑𝑀)) · 𝐷) ∈ ℂ
2013, 10mulcli 11159 . . . . 5 ((𝐶 · (10↑𝑀)) · 𝐵) ∈ ℂ
2119, 20addcli 11158 . . . 4 (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)) ∈ ℂ
2217, 18, 21add32i 11376 . . 3 ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (𝐷 · 𝐵)) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) = ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) + (𝐷 · 𝐵))
238, 12mulcli 11159 . . . . . 6 ((𝐴 · (10↑𝑀)) · 𝐶) ∈ ℂ
24 karatsuba.s . . . . . . 7 𝑆 ∈ ℕ0
2524nn0cni 12432 . . . . . 6 𝑆 ∈ ℂ
2623, 25, 7adddiri 11165 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) · (10↑𝑀)) = ((((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) + (𝑆 · (10↑𝑀)))
272, 7, 12mul32i 11348 . . . . . . . . 9 ((𝐴 · (10↑𝑀)) · 𝐶) = ((𝐴 · 𝐶) · (10↑𝑀))
28 karatsuba.r . . . . . . . . . 10 (𝐴 · 𝐶) = 𝑅
2928oveq1i 7379 . . . . . . . . 9 ((𝐴 · 𝐶) · (10↑𝑀)) = (𝑅 · (10↑𝑀))
3027, 29eqtri 2752 . . . . . . . 8 ((𝐴 · (10↑𝑀)) · 𝐶) = (𝑅 · (10↑𝑀))
3130oveq1i 7379 . . . . . . 7 (((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) = ((𝑅 · (10↑𝑀)) + 𝑆)
32 karatsuba.w . . . . . . 7 ((𝑅 · (10↑𝑀)) + 𝑆) = 𝑊
3331, 32eqtri 2752 . . . . . 6 (((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) = 𝑊
3433oveq1i 7379 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) + 𝑆) · (10↑𝑀)) = (𝑊 · (10↑𝑀))
358, 12, 7mulassi 11163 . . . . . 6 (((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) = ((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀)))
362, 12mulcli 11159 . . . . . . . . . . . 12 (𝐴 · 𝐶) ∈ ℂ
3736, 18, 25add32i 11376 . . . . . . . . . . 11 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + 𝑆) + (𝐷 · 𝐵))
3828oveq1i 7379 . . . . . . . . . . . 12 ((𝐴 · 𝐶) + 𝑆) = (𝑅 + 𝑆)
39 karatsuba.t . . . . . . . . . . . . 13 (𝐵 · 𝐷) = 𝑇
4010, 15, 39mulcomli 11161 . . . . . . . . . . . 12 (𝐷 · 𝐵) = 𝑇
4138, 40oveq12i 7381 . . . . . . . . . . 11 (((𝐴 · 𝐶) + 𝑆) + (𝐷 · 𝐵)) = ((𝑅 + 𝑆) + 𝑇)
4237, 41eqtri 2752 . . . . . . . . . 10 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = ((𝑅 + 𝑆) + 𝑇)
43 karatsuba.e . . . . . . . . . 10 ((𝐴 + 𝐵) · (𝐶 + 𝐷)) = ((𝑅 + 𝑆) + 𝑇)
442, 10, 12, 15muladdi 11607 . . . . . . . . . 10 ((𝐴 + 𝐵) · (𝐶 + 𝐷)) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
4542, 43, 443eqtr2i 2758 . . . . . . . . 9 (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
4636, 18addcli 11158 . . . . . . . . . 10 ((𝐴 · 𝐶) + (𝐷 · 𝐵)) ∈ ℂ
472, 15mulcli 11159 . . . . . . . . . . 11 (𝐴 · 𝐷) ∈ ℂ
4812, 10mulcli 11159 . . . . . . . . . . 11 (𝐶 · 𝐵) ∈ ℂ
4947, 48addcli 11158 . . . . . . . . . 10 ((𝐴 · 𝐷) + (𝐶 · 𝐵)) ∈ ℂ
5046, 25, 49addcani 11345 . . . . . . . . 9 ((((𝐴 · 𝐶) + (𝐷 · 𝐵)) + 𝑆) = (((𝐴 · 𝐶) + (𝐷 · 𝐵)) + ((𝐴 · 𝐷) + (𝐶 · 𝐵))) ↔ 𝑆 = ((𝐴 · 𝐷) + (𝐶 · 𝐵)))
5145, 50mpbi 230 . . . . . . . 8 𝑆 = ((𝐴 · 𝐷) + (𝐶 · 𝐵))
5251oveq1i 7379 . . . . . . 7 (𝑆 · (10↑𝑀)) = (((𝐴 · 𝐷) + (𝐶 · 𝐵)) · (10↑𝑀))
5347, 48, 7adddiri 11165 . . . . . . 7 (((𝐴 · 𝐷) + (𝐶 · 𝐵)) · (10↑𝑀)) = (((𝐴 · 𝐷) · (10↑𝑀)) + ((𝐶 · 𝐵) · (10↑𝑀)))
542, 15, 7mul32i 11348 . . . . . . . 8 ((𝐴 · 𝐷) · (10↑𝑀)) = ((𝐴 · (10↑𝑀)) · 𝐷)
5512, 10, 7mul32i 11348 . . . . . . . 8 ((𝐶 · 𝐵) · (10↑𝑀)) = ((𝐶 · (10↑𝑀)) · 𝐵)
5654, 55oveq12i 7381 . . . . . . 7 (((𝐴 · 𝐷) · (10↑𝑀)) + ((𝐶 · 𝐵) · (10↑𝑀))) = (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))
5752, 53, 563eqtri 2756 . . . . . 6 (𝑆 · (10↑𝑀)) = (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))
5835, 57oveq12i 7381 . . . . 5 ((((𝐴 · (10↑𝑀)) · 𝐶) · (10↑𝑀)) + (𝑆 · (10↑𝑀))) = (((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵)))
5926, 34, 583eqtr3ri 2761 . . . 4 (((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) = (𝑊 · (10↑𝑀))
6059, 40oveq12i 7381 . . 3 ((((𝐴 · (10↑𝑀)) · (𝐶 · (10↑𝑀))) + (((𝐴 · (10↑𝑀)) · 𝐷) + ((𝐶 · (10↑𝑀)) · 𝐵))) + (𝐷 · 𝐵)) = ((𝑊 · (10↑𝑀)) + 𝑇)
6116, 22, 603eqtri 2756 . 2 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = ((𝑊 · (10↑𝑀)) + 𝑇)
62 karatsuba.x . . 3 ((𝐴 · (10↑𝑀)) + 𝐵) = 𝑋
63 karatsuba.y . . 3 ((𝐶 · (10↑𝑀)) + 𝐷) = 𝑌
6462, 63oveq12i 7381 . 2 (((𝐴 · (10↑𝑀)) + 𝐵) · ((𝐶 · (10↑𝑀)) + 𝐷)) = (𝑋 · 𝑌)
65 karatsuba.z . 2 ((𝑊 · (10↑𝑀)) + 𝑇) = 𝑍
6661, 64, 653eqtr3i 2760 1 (𝑋 · 𝑌) = 𝑍
Colors of variables: wff setvar class
Syntax hints:   = wceq 1540  wcel 2109  (class class class)co 7369  cc 11044  0cc0 11046  1c1 11047   + caddc 11049   · cmul 11051  0cn0 12420  cdc 12627  cexp 14004
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1795  ax-4 1809  ax-5 1910  ax-6 1967  ax-7 2008  ax-8 2111  ax-9 2119  ax-10 2142  ax-11 2158  ax-12 2178  ax-ext 2701  ax-sep 5246  ax-nul 5256  ax-pow 5315  ax-pr 5382  ax-un 7691  ax-cnex 11102  ax-resscn 11103  ax-1cn 11104  ax-icn 11105  ax-addcl 11106  ax-addrcl 11107  ax-mulcl 11108  ax-mulrcl 11109  ax-mulcom 11110  ax-addass 11111  ax-mulass 11112  ax-distr 11113  ax-i2m1 11114  ax-1ne0 11115  ax-1rid 11116  ax-rnegex 11117  ax-rrecex 11118  ax-cnre 11119  ax-pre-lttri 11120  ax-pre-lttrn 11121  ax-pre-ltadd 11122  ax-pre-mulgt0 11123
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1543  df-fal 1553  df-ex 1780  df-nf 1784  df-sb 2066  df-mo 2533  df-eu 2562  df-clab 2708  df-cleq 2721  df-clel 2803  df-nfc 2878  df-ne 2926  df-nel 3030  df-ral 3045  df-rex 3054  df-reu 3352  df-rab 3403  df-v 3446  df-sbc 3751  df-csb 3860  df-dif 3914  df-un 3916  df-in 3918  df-ss 3928  df-pss 3931  df-nul 4293  df-if 4485  df-pw 4561  df-sn 4586  df-pr 4588  df-op 4592  df-uni 4868  df-iun 4953  df-br 5103  df-opab 5165  df-mpt 5184  df-tr 5210  df-id 5526  df-eprel 5531  df-po 5539  df-so 5540  df-fr 5584  df-we 5586  df-xp 5637  df-rel 5638  df-cnv 5639  df-co 5640  df-dm 5641  df-rn 5642  df-res 5643  df-ima 5644  df-pred 6262  df-ord 6323  df-on 6324  df-lim 6325  df-suc 6326  df-iota 6452  df-fun 6501  df-fn 6502  df-f 6503  df-f1 6504  df-fo 6505  df-f1o 6506  df-fv 6507  df-riota 7326  df-ov 7372  df-oprab 7373  df-mpo 7374  df-om 7823  df-2nd 7948  df-frecs 8237  df-wrecs 8268  df-recs 8317  df-rdg 8355  df-er 8648  df-en 8896  df-dom 8897  df-sdom 8898  df-pnf 11188  df-mnf 11189  df-xr 11190  df-ltxr 11191  df-le 11192  df-sub 11385  df-neg 11386  df-nn 12165  df-2 12227  df-3 12228  df-4 12229  df-5 12230  df-6 12231  df-7 12232  df-8 12233  df-9 12234  df-n0 12421  df-z 12508  df-dec 12628  df-uz 12772  df-seq 13945  df-exp 14005
This theorem is referenced by:  dpmul4  32885
  Copyright terms: Public domain W3C validator