78 core::AssertTensorShape(T, {4, 4});
82 utility::LogError(
"T is expected to be contiguous");
87 double* Tinv_ptr = Tinv.GetDataPtr<
double>();
90 Tinv_ptr[0 * 4 + 0] = T_ptr[0 * 4 + 0];
91 Tinv_ptr[0 * 4 + 1] = T_ptr[1 * 4 + 0];
92 Tinv_ptr[0 * 4 + 2] = T_ptr[2 * 4 + 0];
94 Tinv_ptr[1 * 4 + 0] = T_ptr[0 * 4 + 1];
95 Tinv_ptr[1 * 4 + 1] = T_ptr[1 * 4 + 1];
96 Tinv_ptr[1 * 4 + 2] = T_ptr[2 * 4 + 1];
98 Tinv_ptr[2 * 4 + 0] = T_ptr[0 * 4 + 2];
99 Tinv_ptr[2 * 4 + 1] = T_ptr[1 * 4 + 2];
100 Tinv_ptr[2 * 4 + 2] = T_ptr[2 * 4 + 2];
103 Tinv_ptr[0 * 4 + 3] = -(Tinv_ptr[0 * 4 + 0] * T_ptr[0 * 4 + 3] +
104 Tinv_ptr[0 * 4 + 1] * T_ptr[1 * 4 + 3] +
105 Tinv_ptr[0 * 4 + 2] * T_ptr[2 * 4 + 3]);
106 Tinv_ptr[1 * 4 + 3] = -(Tinv_ptr[1 * 4 + 0] * T_ptr[0 * 4 + 3] +
107 Tinv_ptr[1 * 4 + 1] * T_ptr[1 * 4 + 3] +
108 Tinv_ptr[1 * 4 + 2] * T_ptr[2 * 4 + 3]);
109 Tinv_ptr[2 * 4 + 3] = -(Tinv_ptr[2 * 4 + 0] * T_ptr[0 * 4 + 3] +
110 Tinv_ptr[2 * 4 + 1] * T_ptr[1 * 4 + 3] +
111 Tinv_ptr[2 * 4 + 2] * T_ptr[2 * 4 + 3]);
114 Tinv_ptr[3 * 4 + 0] = 0;
115 Tinv_ptr[3 * 4 + 1] = 0;
116 Tinv_ptr[3 * 4 + 2] = 0;
117 Tinv_ptr[3 * 4 + 3] = 1;