2023-07-01から1ヶ月間の記事一覧

constexpr関数の評価速度

最近のC++では、constexprを使って手軽にコンパイル時計算ができます。 C++20ではstd::vectorやstd::stringなどの動的なデータ構造もconstexpr指定されたため、さらに利便性が高まりました。 コンパイル時に多少の探索を行って最適な値を発見して埋め込む、…

符号なし乗算器の作り方の勉強と11ビット乗算器の設計

ビット符号なし乗算器は、ビットの符号なし整数二つを受け取り、ビットの符号なし整数を出力する回路です。 ビット乗算器は、部分積を作る個のANDゲートと個の全加算器(full adder, FA)を組み合わせて作ることができます。 この構成で全加算器が個必要なの…

式テンプレートを利用してFastTwoSumを自動生成する

倍精度浮動小数点数doubleは53 bitしか精度がありません。 これを超える精度で計算したいけれど多倍長演算は遅いので避けたい、というときに役立つのがdouble-double(疑似四倍精度)です。 double-doubleはその名の通り、doubleを二つ組み合わせることで高…

もっと高速な完全精度 expf 関数の作り方

何年か前に、高速な完全精度(すべての入力に対して最近接丸めを行う) expf 関数の作り方を明らかにしました(高速な完全精度 expf 関数の作り方 - よーる)。 その中で、を求める際に使うは、倍精度浮動小数点数の53bit精度ですら精度が不足しているので、…