テンソルのスカラー積を関数として以下のように実装する。
/* テンソルのスカラー積 */ void WH_Tensor3D__whT_colon_whT_OUT_s (double whT_X[3][3], double whT_Y[3][3], double *OUT__a) /* 入力引数: whT_X, whT_Y はテンソル 出力引数: OUT__aはスカラーで、whT_X と whT_Y のスカラー積 */ { *OUT__a = whT_X[0][0] * whT_Y[0][0] + whT_X[0][1] * whT_Y[0][1] + whT_X[0][2] * whT_Y[0][2] + whT_X[1][0] * whT_Y[1][0] + whT_X[1][1] * whT_Y[1][1] + whT_X[1][2] * whT_Y[1][2] + whT_X[2][0] * whT_Y[2][0] + whT_X[2][1] * whT_Y[2][1] + whT_X[2][2] * whT_Y[2][2]; }
また、対称テンソルの場合には、以下のようになる。
/* 対称テンソルのスカラー積 */ void WH_Tensor3D__whST_colon_whST_OUT_s (double whST_X[6], double whST_Y[6], double *OUT__a) /* 入力引数: whST_X, whST_Y は対称テンソル 出力引数: OUT__aはスカラーで、whST_X と whST_Y のスカラー積 */ { *OUT__a = whST_X[0] * whST_Y[0] + whST_X[1] * whST_Y[1] + whST_X[2] * whST_Y[2] + (whST_X[3] * whST_Y[3] + whST_X[4] * whST_Y[4] + whST_X[5] * whST_Y[5]) * 2; }