56 template<
typename dtype>
67 if (inShape.
rows == 1)
69 return inArray.
front();
71 else if (inShape.
rows == 2)
73 return inArray(0, 0) * inArray(1, 1) - inArray(0, 1) * inArray(1, 0);
75 else if (inShape.
rows == 3)
77 dtype aei = inArray(0, 0) * inArray(1, 1) * inArray(2, 2);
78 dtype bfg = inArray(0, 1) * inArray(1, 2) * inArray(2, 0);
79 dtype cdh = inArray(0, 2) * inArray(1, 0) * inArray(2, 1);
80 dtype ceg = inArray(0, 2) * inArray(1, 1) * inArray(2, 0);
81 dtype bdi = inArray(0, 1) * inArray(1, 0) * inArray(2, 2);
82 dtype afh = inArray(0, 0) * inArray(1, 2) * inArray(2, 1);
84 return aei + bfg + cdh - ceg - bdi - afh;
88 dtype determinant = 0;
104 submat(subi, subj++) = inArray(i,
j);
108 determinant += (
static_cast<dtype
>(std::pow(-1,
c)) * inArray(0,
c) *
det(submat));