55 template<
typename dtype>
66 if (inShape.
rows == 1)
68 return inArray.
front();
71 if (inShape.
rows == 2)
73 return inArray(0, 0) * inArray(1, 1) - inArray(0, 1) * inArray(1, 0);
76 if (inShape.
rows == 3)
78 dtype aei = inArray(0, 0) * inArray(1, 1) * inArray(2, 2);
79 dtype bfg = inArray(0, 1) * inArray(1, 2) * inArray(2, 0);
80 dtype cdh = inArray(0, 2) * inArray(1, 0) * inArray(2, 1);
81 dtype ceg = inArray(0, 2) * inArray(1, 1) * inArray(2, 0);
82 dtype bdi = inArray(0, 1) * inArray(1, 0) * inArray(2, 2);
83 dtype afh = inArray(0, 0) * inArray(1, 2) * inArray(2, 1);
85 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));