80 core::AssertTensorShape(T_cpu, {4, 4});
84 const double* T_ptr = T_cpu.
GetDataPtr<
double>();
85 double* Tinv_ptr = Tinv.GetDataPtr<
double>();
88 Tinv_ptr[0 * 4 + 0] = T_ptr[0 * 4 + 0];
89 Tinv_ptr[0 * 4 + 1] = T_ptr[1 * 4 + 0];
90 Tinv_ptr[0 * 4 + 2] = T_ptr[2 * 4 + 0];
92 Tinv_ptr[1 * 4 + 0] = T_ptr[0 * 4 + 1];
93 Tinv_ptr[1 * 4 + 1] = T_ptr[1 * 4 + 1];
94 Tinv_ptr[1 * 4 + 2] = T_ptr[2 * 4 + 1];
96 Tinv_ptr[2 * 4 + 0] = T_ptr[0 * 4 + 2];
97 Tinv_ptr[2 * 4 + 1] = T_ptr[1 * 4 + 2];
98 Tinv_ptr[2 * 4 + 2] = T_ptr[2 * 4 + 2];
101 Tinv_ptr[0 * 4 + 3] = -(Tinv_ptr[0 * 4 + 0] * T_ptr[0 * 4 + 3] +
102 Tinv_ptr[0 * 4 + 1] * T_ptr[1 * 4 + 3] +
103 Tinv_ptr[0 * 4 + 2] * T_ptr[2 * 4 + 3]);
104 Tinv_ptr[1 * 4 + 3] = -(Tinv_ptr[1 * 4 + 0] * T_ptr[0 * 4 + 3] +
105 Tinv_ptr[1 * 4 + 1] * T_ptr[1 * 4 + 3] +
106 Tinv_ptr[1 * 4 + 2] * T_ptr[2 * 4 + 3]);
107 Tinv_ptr[2 * 4 + 3] = -(Tinv_ptr[2 * 4 + 0] * T_ptr[0 * 4 + 3] +
108 Tinv_ptr[2 * 4 + 1] * T_ptr[1 * 4 + 3] +
109 Tinv_ptr[2 * 4 + 2] * T_ptr[2 * 4 + 3]);
112 Tinv_ptr[3 * 4 + 0] = 0;
113 Tinv_ptr[3 * 4 + 1] = 0;
114 Tinv_ptr[3 * 4 + 2] = 0;
115 Tinv_ptr[3 * 4 + 3] = 1;