テンソルのスカラー積を関数として以下のように実装する。
/* テンソルのスカラー積 */
void WH_Tensor2D__whT_colon_whT_OUT_s
(double whT_X[2][2],
double whT_Y[2][2],
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[1][0] * whT_Y[1][0]
+ whT_X[1][1] * whT_Y[1][1];
}
また、対称テンソルの場合には、以下のようになる。
/* 対称テンソルのスカラー積 */
void WH_Tensor2D__whST_colon_whST_OUT_s
(double whST_X[3],
double whST_Y[3],
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] * 2;
}