0

a、b を n 桁の 2 つの整数とする。a の 2 乗の計算時間は a*b よりも短いのでしょうか。

ご協力ありがとうございました。

4

3 に答える 3

1

x86でIMULを使用せずにAを2乗する方法はないと思います。私は間違っているかもしれません。

何かにかかる時間を調べるには、マイクロベンチマークを行ってください!

編集:ああ待って、私はそれを手に入れました!a b は 2 回のメモリ読み取りを行い、a a は 1 回の読み取りを行います! したがって、a*a の方が高速です :-)。

正しい答え: 何か影響を与える外部要因がない限り、a*b が遅くなる理由はありません。

于 2010-07-08T03:29:44.937 に答える
1

あなたの質問は次のとおりだと思います:

*a、b を n 桁の 2 つの整数とする。a の 2 乗を計算する計算時間は、a*b.* を計算する計算時間よりも短いのではないかと考えています。

n が十分に大きく、単一の乗算命令だけを使用できない場合、私が知っているアルゴリズムは、両方の因数が同じであるという事実を利用できます。これは、学校で学んだアルゴリズムにも当てはまります。数字のペアの積のほぼ半分は乗算する必要がないからです。非常に大きな n の極端な場合、FFT で畳み込みを使用すると、両方の係数の FFT は 2 乗で同じになり、1 回だけ計算する必要があります。

于 2014-03-30T00:56:53.540 に答える
0

Bentley の "Programming Pearls" のベンチマークを見てみましょう。そこから何かをハックして測定することができます。

于 2013-01-23T00:30:34.643 に答える