Posted to tcl by mookie at Mon Nov 10 00:11:23 GMT 2025view pretty
proc S a\ b {set f [string triml [join [lmap x [split [format %0[set l [string le [expr max(abs($a),abs($b))]]]lld [expr abs($a)]] ""] y [split [format %0$l\lld [expr abs($b)]] ""] {format %02d [expr $x*$y]}] ""] 0]
set s [expr {$f==""?0:$f}]
expr $a<0^$b<0?-$s:$s}
lmap a\ b {
0 0
302 40
302 -40
-4352 448
0 6623
0 -6623
20643 -56721
63196 21220
1276 933024
-1276 933024
-1276 -933024
5007204555 350073039
-612137119 -8088606033
3389903661 -6619166963
-23082746128560880381 1116941217
-668336881543038127783364011867 896431401738330915057436190556
402878826066336701417493206805490000415 312487283677673237790517973105761463808
} {puts "$a $b => [S $a $b]"}