テンソルのドット積を関数として以下のように実装する。
/* テンソルのドット積 */ void WH_Tensor3D__whT_cdot_whT_OUT_whT (double whT_X[3][3], double whT_Y[3][3], double OUT__whT_Z[3][3]) /* 入力引数: whT_X, whT_Y はテンソル 出力引数: OUT__whT_Zはテンソルで、whT_X と whT_Y のドット積 */ { OUT__whT_Z[0][0] = whT_X[0][0] * whT_Y[0][0] + whT_X[0][1] * whT_Y[1][0] + whT_X[0][2] * whT_Y[2][0]; OUT__whT_Z[0][1] = whT_X[0][0] * whT_Y[0][1] + whT_X[0][1] * whT_Y[1][1] + whT_X[0][2] * whT_Y[2][1]; OUT__whT_Z[0][2] = whT_X[0][0] * whT_Y[0][2] + whT_X[0][1] * whT_Y[1][2] + whT_X[0][2] * whT_Y[2][2]; OUT__whT_Z[1][0] = whT_X[1][0] * whT_Y[0][0] + whT_X[1][1] * whT_Y[1][0] + whT_X[1][2] * whT_Y[2][0]; OUT__whT_Z[1][1] = whT_X[1][0] * whT_Y[0][1] + whT_X[1][1] * whT_Y[1][1] + whT_X[1][2] * whT_Y[2][1]; OUT__whT_Z[1][2] = whT_X[1][0] * whT_Y[0][2] + whT_X[1][1] * whT_Y[1][2] + whT_X[1][2] * whT_Y[2][2]; OUT__whT_Z[2][0] = whT_X[2][0] * whT_Y[0][0] + whT_X[2][1] * whT_Y[1][0] + whT_X[2][2] * whT_Y[2][0]; OUT__whT_Z[2][1] = whT_X[2][0] * whT_Y[0][1] + whT_X[2][1] * whT_Y[1][1] + whT_X[2][2] * whT_Y[2][1]; OUT__whT_Z[2][2] = whT_X[2][0] * whT_Y[0][2] + whT_X[2][1] * whT_Y[1][2] + whT_X[2][2] * whT_Y[2][2]; }