足し算のループで掛け算をやっていたのを思い出した

恥ずかしい過去を振り返ると、さらに恥ずかしい過去が見えるというもの。
Z80は足し算引き算はできるのですが、掛け算割り算はできませんでした。そこで掛け算のプログラムを作成することになるのですが、足し算のループでやってました。
後に人と話しててこの話を出すと、「それ、筆算でやればいいじゃん」と言われました。
A = Σa(n)*2^n ただしa(n)=0または1 となりますが、Σa(n)*n^2 * Σb(m)*m^2 = Σ(a(n)*n^2 * Σb(m)*m^2) で、Aを上位ビットから走査して、0か1かを見て1だったらBを足して左シフト、0だったら左シフトだけ、というのを桁数分ループさせるというもの。計算量は桁数に比例しますが、値に比例しません。
それに気づかなかった当時の私。結構恥ずかしいね。