私は部分的な乗算のように見えるものへの洞察を望んでいます。
#define LOW(x) ((x)&0xffffffff)
#define HIGH(x) ((x)>>32)
unsigned long long NotMultiply(unsigned long long x, unsigned long long y)
{
return HIGH(x)*HIGH(y) + LOW(x)*LOW(y);
}
この関数は、次のように複数回繰り返されます。
unsigned long long DoBusyWork( unsigned long long x, unsigned long long y, int n)
{
while (n--)
x = NotMultiply(x,y);
return x;
}
この結果を計算するためのショートカットはありますか?
x == yの場合はどうですか?
詳細情報へのリンクがあれば役立ちます。