言語のコンパイル時関数評価機能を使用して、コンパイル時に std.math の多くを評価できるようにする D プログラミング言語標準ライブラリにパッチを提出しようとしています。コンパイル時の関数評価にはいくつかの制限がありますが、最も重要なものは次のとおりです。
- アセンブリ言語は使用できません。
- C コードまたはソースが利用できないコードを呼び出すことはできません。
いくつかの std.math 関数はこれらに違反しており、コンパイル時のバージョンを作成する必要があります。対数、指数、累乗、三角関数などを計算するための優れたアルゴリズムに関する情報はどこで入手できますか? 私は、次の 2 つの理由から、実際のコードよりもアルゴリズムの高レベルの説明だけを好みます。
法的なあいまいさを回避し、著作権を所有していることを確認するために、コードをソースと「十分に異なる」ように見せる必要を避けるため。
シンプルで移植可能なアルゴリズムが必要です。少なくとも漸近的に効率的である限り、マイクロ最適化は気にしません。
編集: D のコンパイル時の関数評価モデルでは、コンパイル時に計算された浮動小数点の結果が実行時に計算された結果と異なる場合があるため、コンパイル時のアルゴリズムが実行時のバージョンとまったく同じ結果を返さなくてもかまいません。実際にかなりの程度まで精度が低下しない限り。