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]"}