児玉 です.

Bignum の積 * に対抗した積をスクリプトで作ってみました.
Ruby 組み込みのメソッドに, Ruby スクリプトが速度で勝てるか? 

普通大きな積の計算では FFT を使ったりするのですが,
以下のような安直な手法でも一応の効果はあるようです.
10進表記で 6000桁程度以上で効果がありました.
Cで書いてRuby に組み込むだけの価値があるかどうかは不明.
巨大数計算の需要ってどのくらい?
#########################
# 以下では a*b を a,b 各々の上位桁部分と下位桁部分に分割して
# 計算を進めています.

def b_split(n,lowbit) # 下位桁数を lowbit数として分割する
	h=n >> lowbit
	l=n-(h << lowbit)
	return h,l
end;

def my_mul(a,b) # 以下 a>=b>=0 と仮定.
	if b.size<512; return a*b; end # ここの数値は要調整
	ldeg=b.size>>3 # 8 byte/block とする
	ldeg=(ldeg+1)>>1 # 下桁の block 数は (総block数)/2 の切り上げ 
	ldeg=ldeg*64 # bit 数
	bh,bl=b_split(b,ldeg)
	ah,al=b_split(a,ldeg)
	hh=my_mul(bh,ah); ll=my_mul(bl,al); hl=my_mul(bh+bl,ah+al)-(hh+ll)
	s=(((hh<<ldeg)+hl)<<ldeg)+ll
	return s
end

a=10**6000
b=a
printf "a*b-m1(a,b)=%d\n", a*b-m1(a,b)
--
Kouji KODAMA, kdm / kobe-kosen.ac.jp