56 template<
typename dtype>
67 if (inShape.
rows == 1)
69 return inArray.
front();
72 if (inShape.
rows == 2)
74 return inArray(0, 0) * inArray(1, 1) - inArray(0, 1) * inArray(1, 0);
77 if (inShape.
rows == 3)
79 dtype aei = inArray(0, 0) * inArray(1, 1) * inArray(2, 2);
80 dtype bfg = inArray(0, 1) * inArray(1, 2) * inArray(2, 0);
81 dtype cdh = inArray(0, 2) * inArray(1, 0) * inArray(2, 1);
82 dtype ceg = inArray(0, 2) * inArray(1, 1) * inArray(2, 0);
83 dtype bdi = inArray(0, 1) * inArray(1, 0) * inArray(2, 2);
84 dtype afh = inArray(0, 0) * inArray(1, 2) * inArray(2, 1);
86 return aei + bfg + cdh - ceg - bdi - afh;
89 dtype determinant = 0;
105 submat(subi, subj++) = inArray(i,
j);
109 determinant += (
static_cast<dtype
>(std::pow(-1,
c)) * inArray(0,
c) *
det(submat));