ToDo:
要素毎に適用可能な数学関数のアルゴリズムドライバ部を提供する関数
cfunに関しては特殊なdummy関数tfdummyを呼び出すケースのコード が含まれるが、複素関数が未実装なケースでir=-1を返すためのもので、適用対象は Gamma0 のみ
cmplが偽の場合、cfunの戻り値は実部のみが返される
SAD引数に対する処理
引数のうち、fun,cfun,cmpはコンパイル時に確定するので、テンプレートからコード生成すると分岐処理と関数の間接呼び出しが削減出来る。特に、funやcfunが組み込み関数の場合、機械語命令への展開・最適化が期待できる。
テンプレート展開するデメリットは、リスト処理を含んだコードのバリエーションが関数毎に生成されるので、その部分のキャッシュヒット率が低下する懸念がある。影響の大きさは、リストに対する評価頻度に依存する。itfunalocも含めた最適化を行いtable dispatchするケースでは、call/ret削減による効果が大きいと思われる
テンプレート展開自体は、開発時のSAD数学関数追加時にしか行われないので、shell script等の簡易ツールで賄える
直接SADScript評価器からtable dispatchを行うには、entryが2種類必要(SADScript標準インターフェースと再帰用)となるが、function tableを改修するのであれば、再帰的な数学関数用のタイプを用意してしまいtable dispatcher側で処理してしまうのが良いかも
cfunにtfdummyが設定されるケースも、テンプレート展開時に最適化可能で、ダミー関数の呼び出し自体を削除出来る
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記