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

Theorem karatsuba 17013
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 12738. (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 12480 . . . . 5 ๐ด โˆˆ โ„‚
3 10nn0 12691 . . . . . . 7 10 โˆˆ โ„•0
43nn0cni 12480 . . . . . 6 10 โˆˆ โ„‚
5 karatsuba.m . . . . . 6 ๐‘€ โˆˆ โ„•0
6 expcl 14041 . . . . . 6 ((10 โˆˆ โ„‚ โˆง ๐‘€ โˆˆ โ„•0) โ†’ (10โ†‘๐‘€) โˆˆ โ„‚)
74, 5, 6mp2an 690 . . . . 5 (10โ†‘๐‘€) โˆˆ โ„‚
82, 7mulcli 11217 . . . 4 (๐ด ยท (10โ†‘๐‘€)) โˆˆ โ„‚
9 karatsuba.b . . . . 5 ๐ต โˆˆ โ„•0
109nn0cni 12480 . . . 4 ๐ต โˆˆ โ„‚
11 karatsuba.c . . . . . 6 ๐ถ โˆˆ โ„•0
1211nn0cni 12480 . . . . 5 ๐ถ โˆˆ โ„‚
1312, 7mulcli 11217 . . . 4 (๐ถ ยท (10โ†‘๐‘€)) โˆˆ โ„‚
14 karatsuba.d . . . . 5 ๐ท โˆˆ โ„•0
1514nn0cni 12480 . . . 4 ๐ท โˆˆ โ„‚
168, 10, 13, 15muladdi 11661 . . 3 (((๐ด ยท (10โ†‘๐‘€)) + ๐ต) ยท ((๐ถ ยท (10โ†‘๐‘€)) + ๐ท)) = ((((๐ด ยท (10โ†‘๐‘€)) ยท (๐ถ ยท (10โ†‘๐‘€))) + (๐ท ยท ๐ต)) + (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต)))
178, 13mulcli 11217 . . . 4 ((๐ด ยท (10โ†‘๐‘€)) ยท (๐ถ ยท (10โ†‘๐‘€))) โˆˆ โ„‚
1815, 10mulcli 11217 . . . 4 (๐ท ยท ๐ต) โˆˆ โ„‚
198, 15mulcli 11217 . . . . 5 ((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) โˆˆ โ„‚
2013, 10mulcli 11217 . . . . 5 ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต) โˆˆ โ„‚
2119, 20addcli 11216 . . . 4 (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต)) โˆˆ โ„‚
2217, 18, 21add32i 11433 . . 3 ((((๐ด ยท (10โ†‘๐‘€)) ยท (๐ถ ยท (10โ†‘๐‘€))) + (๐ท ยท ๐ต)) + (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต))) = ((((๐ด ยท (10โ†‘๐‘€)) ยท (๐ถ ยท (10โ†‘๐‘€))) + (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต))) + (๐ท ยท ๐ต))
238, 12mulcli 11217 . . . . . 6 ((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) โˆˆ โ„‚
24 karatsuba.s . . . . . . 7 ๐‘† โˆˆ โ„•0
2524nn0cni 12480 . . . . . 6 ๐‘† โˆˆ โ„‚
2623, 25, 7adddiri 11223 . . . . 5 ((((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) + ๐‘†) ยท (10โ†‘๐‘€)) = ((((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) ยท (10โ†‘๐‘€)) + (๐‘† ยท (10โ†‘๐‘€)))
272, 7, 12mul32i 11406 . . . . . . . . 9 ((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) = ((๐ด ยท ๐ถ) ยท (10โ†‘๐‘€))
28 karatsuba.r . . . . . . . . . 10 (๐ด ยท ๐ถ) = ๐‘…
2928oveq1i 7415 . . . . . . . . 9 ((๐ด ยท ๐ถ) ยท (10โ†‘๐‘€)) = (๐‘… ยท (10โ†‘๐‘€))
3027, 29eqtri 2760 . . . . . . . 8 ((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) = (๐‘… ยท (10โ†‘๐‘€))
3130oveq1i 7415 . . . . . . 7 (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) + ๐‘†) = ((๐‘… ยท (10โ†‘๐‘€)) + ๐‘†)
32 karatsuba.w . . . . . . 7 ((๐‘… ยท (10โ†‘๐‘€)) + ๐‘†) = ๐‘Š
3331, 32eqtri 2760 . . . . . 6 (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) + ๐‘†) = ๐‘Š
3433oveq1i 7415 . . . . 5 ((((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) + ๐‘†) ยท (10โ†‘๐‘€)) = (๐‘Š ยท (10โ†‘๐‘€))
358, 12, 7mulassi 11221 . . . . . 6 (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) ยท (10โ†‘๐‘€)) = ((๐ด ยท (10โ†‘๐‘€)) ยท (๐ถ ยท (10โ†‘๐‘€)))
362, 12mulcli 11217 . . . . . . . . . . . 12 (๐ด ยท ๐ถ) โˆˆ โ„‚
3736, 18, 25add32i 11433 . . . . . . . . . . 11 (((๐ด ยท ๐ถ) + (๐ท ยท ๐ต)) + ๐‘†) = (((๐ด ยท ๐ถ) + ๐‘†) + (๐ท ยท ๐ต))
3828oveq1i 7415 . . . . . . . . . . . 12 ((๐ด ยท ๐ถ) + ๐‘†) = (๐‘… + ๐‘†)
39 karatsuba.t . . . . . . . . . . . . 13 (๐ต ยท ๐ท) = ๐‘‡
4010, 15, 39mulcomli 11219 . . . . . . . . . . . 12 (๐ท ยท ๐ต) = ๐‘‡
4138, 40oveq12i 7417 . . . . . . . . . . 11 (((๐ด ยท ๐ถ) + ๐‘†) + (๐ท ยท ๐ต)) = ((๐‘… + ๐‘†) + ๐‘‡)
4237, 41eqtri 2760 . . . . . . . . . 10 (((๐ด ยท ๐ถ) + (๐ท ยท ๐ต)) + ๐‘†) = ((๐‘… + ๐‘†) + ๐‘‡)
43 karatsuba.e . . . . . . . . . 10 ((๐ด + ๐ต) ยท (๐ถ + ๐ท)) = ((๐‘… + ๐‘†) + ๐‘‡)
442, 10, 12, 15muladdi 11661 . . . . . . . . . 10 ((๐ด + ๐ต) ยท (๐ถ + ๐ท)) = (((๐ด ยท ๐ถ) + (๐ท ยท ๐ต)) + ((๐ด ยท ๐ท) + (๐ถ ยท ๐ต)))
4542, 43, 443eqtr2i 2766 . . . . . . . . 9 (((๐ด ยท ๐ถ) + (๐ท ยท ๐ต)) + ๐‘†) = (((๐ด ยท ๐ถ) + (๐ท ยท ๐ต)) + ((๐ด ยท ๐ท) + (๐ถ ยท ๐ต)))
4636, 18addcli 11216 . . . . . . . . . 10 ((๐ด ยท ๐ถ) + (๐ท ยท ๐ต)) โˆˆ โ„‚
472, 15mulcli 11217 . . . . . . . . . . 11 (๐ด ยท ๐ท) โˆˆ โ„‚
4812, 10mulcli 11217 . . . . . . . . . . 11 (๐ถ ยท ๐ต) โˆˆ โ„‚
4947, 48addcli 11216 . . . . . . . . . 10 ((๐ด ยท ๐ท) + (๐ถ ยท ๐ต)) โˆˆ โ„‚
5046, 25, 49addcani 11403 . . . . . . . . 9 ((((๐ด ยท ๐ถ) + (๐ท ยท ๐ต)) + ๐‘†) = (((๐ด ยท ๐ถ) + (๐ท ยท ๐ต)) + ((๐ด ยท ๐ท) + (๐ถ ยท ๐ต))) โ†” ๐‘† = ((๐ด ยท ๐ท) + (๐ถ ยท ๐ต)))
5145, 50mpbi 229 . . . . . . . 8 ๐‘† = ((๐ด ยท ๐ท) + (๐ถ ยท ๐ต))
5251oveq1i 7415 . . . . . . 7 (๐‘† ยท (10โ†‘๐‘€)) = (((๐ด ยท ๐ท) + (๐ถ ยท ๐ต)) ยท (10โ†‘๐‘€))
5347, 48, 7adddiri 11223 . . . . . . 7 (((๐ด ยท ๐ท) + (๐ถ ยท ๐ต)) ยท (10โ†‘๐‘€)) = (((๐ด ยท ๐ท) ยท (10โ†‘๐‘€)) + ((๐ถ ยท ๐ต) ยท (10โ†‘๐‘€)))
542, 15, 7mul32i 11406 . . . . . . . 8 ((๐ด ยท ๐ท) ยท (10โ†‘๐‘€)) = ((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท)
5512, 10, 7mul32i 11406 . . . . . . . 8 ((๐ถ ยท ๐ต) ยท (10โ†‘๐‘€)) = ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต)
5654, 55oveq12i 7417 . . . . . . 7 (((๐ด ยท ๐ท) ยท (10โ†‘๐‘€)) + ((๐ถ ยท ๐ต) ยท (10โ†‘๐‘€))) = (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต))
5752, 53, 563eqtri 2764 . . . . . 6 (๐‘† ยท (10โ†‘๐‘€)) = (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต))
5835, 57oveq12i 7417 . . . . 5 ((((๐ด ยท (10โ†‘๐‘€)) ยท ๐ถ) ยท (10โ†‘๐‘€)) + (๐‘† ยท (10โ†‘๐‘€))) = (((๐ด ยท (10โ†‘๐‘€)) ยท (๐ถ ยท (10โ†‘๐‘€))) + (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต)))
5926, 34, 583eqtr3ri 2769 . . . 4 (((๐ด ยท (10โ†‘๐‘€)) ยท (๐ถ ยท (10โ†‘๐‘€))) + (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต))) = (๐‘Š ยท (10โ†‘๐‘€))
6059, 40oveq12i 7417 . . 3 ((((๐ด ยท (10โ†‘๐‘€)) ยท (๐ถ ยท (10โ†‘๐‘€))) + (((๐ด ยท (10โ†‘๐‘€)) ยท ๐ท) + ((๐ถ ยท (10โ†‘๐‘€)) ยท ๐ต))) + (๐ท ยท ๐ต)) = ((๐‘Š ยท (10โ†‘๐‘€)) + ๐‘‡)
6116, 22, 603eqtri 2764 . 2 (((๐ด ยท (10โ†‘๐‘€)) + ๐ต) ยท ((๐ถ ยท (10โ†‘๐‘€)) + ๐ท)) = ((๐‘Š ยท (10โ†‘๐‘€)) + ๐‘‡)
62 karatsuba.x . . 3 ((๐ด ยท (10โ†‘๐‘€)) + ๐ต) = ๐‘‹
63 karatsuba.y . . 3 ((๐ถ ยท (10โ†‘๐‘€)) + ๐ท) = ๐‘Œ
6462, 63oveq12i 7417 . 2 (((๐ด ยท (10โ†‘๐‘€)) + ๐ต) ยท ((๐ถ ยท (10โ†‘๐‘€)) + ๐ท)) = (๐‘‹ ยท ๐‘Œ)
65 karatsuba.z . 2 ((๐‘Š ยท (10โ†‘๐‘€)) + ๐‘‡) = ๐‘
6661, 64, 653eqtr3i 2768 1 (๐‘‹ ยท ๐‘Œ) = ๐‘
Colors of variables: wff setvar class
Syntax hints:   = wceq 1541   โˆˆ wcel 2106  (class class class)co 7405  โ„‚cc 11104  0cc0 11106  1c1 11107   + caddc 11109   ยท cmul 11111  โ„•0cn0 12468  cdc 12673  โ†‘cexp 14023
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1797  ax-4 1811  ax-5 1913  ax-6 1971  ax-7 2011  ax-8 2108  ax-9 2116  ax-10 2137  ax-11 2154  ax-12 2171  ax-ext 2703  ax-sep 5298  ax-nul 5305  ax-pow 5362  ax-pr 5426  ax-un 7721  ax-cnex 11162  ax-resscn 11163  ax-1cn 11164  ax-icn 11165  ax-addcl 11166  ax-addrcl 11167  ax-mulcl 11168  ax-mulrcl 11169  ax-mulcom 11170  ax-addass 11171  ax-mulass 11172  ax-distr 11173  ax-i2m1 11174  ax-1ne0 11175  ax-1rid 11176  ax-rnegex 11177  ax-rrecex 11178  ax-cnre 11179  ax-pre-lttri 11180  ax-pre-lttrn 11181  ax-pre-ltadd 11182  ax-pre-mulgt0 11183
This theorem depends on definitions:  df-bi 206  df-an 397  df-or 846  df-3or 1088  df-3an 1089  df-tru 1544  df-fal 1554  df-ex 1782  df-nf 1786  df-sb 2068  df-mo 2534  df-eu 2563  df-clab 2710  df-cleq 2724  df-clel 2810  df-nfc 2885  df-ne 2941  df-nel 3047  df-ral 3062  df-rex 3071  df-reu 3377  df-rab 3433  df-v 3476  df-sbc 3777  df-csb 3893  df-dif 3950  df-un 3952  df-in 3954  df-ss 3964  df-pss 3966  df-nul 4322  df-if 4528  df-pw 4603  df-sn 4628  df-pr 4630  df-op 4634  df-uni 4908  df-iun 4998  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5573  df-eprel 5579  df-po 5587  df-so 5588  df-fr 5630  df-we 5632  df-xp 5681  df-rel 5682  df-cnv 5683  df-co 5684  df-dm 5685  df-rn 5686  df-res 5687  df-ima 5688  df-pred 6297  df-ord 6364  df-on 6365  df-lim 6366  df-suc 6367  df-iota 6492  df-fun 6542  df-fn 6543  df-f 6544  df-f1 6545  df-fo 6546  df-f1o 6547  df-fv 6548  df-riota 7361  df-ov 7408  df-oprab 7409  df-mpo 7410  df-om 7852  df-2nd 7972  df-frecs 8262  df-wrecs 8293  df-recs 8367  df-rdg 8406  df-er 8699  df-en 8936  df-dom 8937  df-sdom 8938  df-pnf 11246  df-mnf 11247  df-xr 11248  df-ltxr 11249  df-le 11250  df-sub 11442  df-neg 11443  df-nn 12209  df-2 12271  df-3 12272  df-4 12273  df-5 12274  df-6 12275  df-7 12276  df-8 12277  df-9 12278  df-n0 12469  df-z 12555  df-dec 12674  df-uz 12819  df-seq 13963  df-exp 14024
This theorem is referenced by:  dpmul4  32067
  Copyright terms: Public domain W3C validator