3
Mathematicaのでは、私は経由テンソル積の計算を行うことができ、内蔵Dot[]
、例えば、ここにランク6
とテンソルpts
です:テンソル積を実装するCライブラリはありますか?
SeedRandom[10];
pts = RandomReal[1, {7, 7, 7, 5, 6, 5}];
(*coeffs = {c1, c2, c3, c4}*)
coeff = BernsteinBasis[#1, Range[0, #1], #2] & @@@
[email protected]{(Dimensions[pts, 4] - 1), {0.1, 0.2, 0.3, 0.4}};
(*
{{0.531441,0.354294,0.098415,0.01458,0.001215,0.000054,1.*10^-6},
{0.262144,0.393216,0.24576,0.08192,0.01536,0.001536,0.000064},
{0.117649,0.302526,0.324135,0.18522,0.059535,0.010206,0.000729},
{0.1296,0.3456,0.3456,0.1536,0.0256}}
*)
(*do tensor product calculation ---> c4.(c3.(c2.(c1.pts))) *)
Fold[#2.#1 &, pts, coeff]
私はGoogleのキーワードtensor product in C
を見つけたので、ほとんどのテンソルライブラリはANSI CではなくC++で書かれています。
ので、私は知っているしたいと思います:
- は
Dot[]
操作を実装Cライブラリはありますか?
[Cblas_gemm()](https://software.intel.com/en-us/node/520775)などのBLASマトリックス製品ルーチンをCインタフェースで使用して、テンソル積をシミュレートする必要があります。基本的には、これらのC++テンソルライブラリが行ったことをやり直しています。 – kangshiyin
@kangshiyinあなたの提案をありがとう。実際、* Mathematica LibraryLink *ラッパーを使って 'bスプライン関数 'を実装するには、テンソル積のcライブラリが必要です。 [こちら](http://mathematica.stackexchange.com/questions/120384/why-does-this-librarylink-function-crash)を参照してください。 – xyz
マトリックス製品でも実装できると確信しています。 – kangshiyin