Add determinant 7x7

This commit is contained in:
Andreas Fabri 2020-03-02 20:56:22 +00:00
parent 5ce802f658
commit 5d053dba1a
3 changed files with 87 additions and 1 deletions

View File

@ -211,6 +211,83 @@ determinant(
return m012345;
}
template <class RT>
RT
determinant(
const RT& a00, const RT& a01, const RT& a02, const RT& a03, const RT& a04,
const RT& a05, const RT& a06,
const RT& a10, const RT& a11, const RT& a12, const RT& a13, const RT& a14,
const RT& a15, const RT& a16,
const RT& a20, const RT& a21, const RT& a22, const RT& a23, const RT& a24,
const RT& a25, const RT& a26,
const RT& a30, const RT& a31, const RT& a32, const RT& a33, const RT& a34,
const RT& a35, const RT& a36,
const RT& a40, const RT& a41, const RT& a42, const RT& a43, const RT& a44,
const RT& a45, const RT& a46,
const RT& a50, const RT& a51, const RT& a52, const RT& a53, const RT& a54,
const RT& a55, const RT& a56,
const RT& a60, const RT& a61, const RT& a62, const RT& a63, const RT& a64,
const RT& a65, const RT& a66)
{
return a00 * determinant(
a11, a12, a13, a14, a15, a16,
a21, a22, a23, a24, a25, a26,
a31, a32, a33, a34, a35, a36,
a41, a42, a43, a44, a45, a46,
a51, a52, a53, a54, a55, a56,
a61, a62, a63, a64, a65, a66)
- a10 * determinant(a01, a02, a03, a04, a05, a06,
a21, a22, a23, a24, a25, a26,
a31, a32, a33, a34, a35, a36,
a41, a42, a43, a44, a45, a46,
a51, a52, a53, a54, a55, a56,
a61, a62, a63, a64, a65, a66)
+ a20 * determinant(a01, a02, a03, a04, a05, a06,
a11, a12, a13, a14, a15, a16,
a31, a32, a33, a34, a35, a36,
a41, a42, a43, a44, a45, a46,
a51, a52, a53, a54, a55, a56,
a61, a62, a63, a64, a65, a66)
- a30 * determinant(a01, a02, a03, a04, a05, a06,
a11, a12, a13, a14, a15, a16,
a21, a22, a23, a24, a25, a26,
a41, a42, a43, a44, a45, a46,
a51, a52, a53, a54, a55, a56,
a61, a62, a63, a64, a65, a66)
+ a40 * determinant(a01, a02, a03, a04, a05, a06,
a11, a12, a13, a14, a15, a16,
a21, a22, a23, a24, a25, a26,
a31, a32, a33, a34, a35, a36,
a51, a52, a53, a54, a55, a56,
a61, a62, a63, a64, a65, a66)
- a50 * determinant(a01, a02, a03, a04, a05, a06,
a11, a12, a13, a14, a15, a16,
a21, a22, a23, a24, a25, a26,
a31, a32, a33, a34, a35, a36,
a41, a42, a43, a44, a45, a46,
a61, a62, a63, a64, a65, a66)
+ a60 * determinant(a01, a02, a03, a04, a05, a06,
a11, a12, a13, a14, a15, a16,
a21, a22, a23, a24, a25, a26,
a31, a32, a33, a34, a35, a36,
a41, a42, a43, a44, a45, a46,
a51, a52, a53, a54, a55, a56
);
}
} //namespace CGAL
#endif // CGAL_DETERMINANT_H

View File

@ -49,7 +49,7 @@ template<> struct Functors_without_division<Dimension_tag<5> > {
template<> struct Functors_without_division<Dimension_tag<6> > {
typedef typeset<Orientation_of_points_tag> type;
};
template < typename Base_, typename AK_, typename EK_, typename Pred_list = typeset_all >
struct Cartesian_filter_K : public Base_,
private Store_kernel<EK_>

View File

@ -151,6 +151,15 @@ template<class NT_,class Dim_,class Max_dim_=Dim_> struct LA_eigen {
m(3,0),m(3,1),m(3,2),m(3,3),m(3,4),m(3,5),
m(4,0),m(4,1),m(4,2),m(4,3),m(4,4),m(4,5),
m(5,0),m(5,1),m(5,2),m(5,3),m(5,4),m(5,5));
case 7:
return CGAL::determinant(
m(0,0),m(0,1),m(0,2),m(0,3),m(0,4),m(0,5),m(0,6),
m(1,0),m(1,1),m(1,2),m(1,3),m(1,4),m(1,5),m(1,6),
m(2,0),m(2,1),m(2,2),m(2,3),m(2,4),m(2,5),m(2,6),
m(3,0),m(3,1),m(3,2),m(3,3),m(3,4),m(3,5),m(3,6),
m(4,0),m(4,1),m(4,2),m(4,3),m(4,4),m(4,5),m(4,6),
m(5,0),m(5,1),m(5,2),m(5,3),m(5,4),m(5,5),m(5,6),
m(6,0),m(6,1),m(6,2),m(6,3),m(6,4),m(6,5),m(6,6));
default:
#if _MSC_VER >= 1911 || __cpp_if_constexpr >= 201606L
// Avoid compiling the LU decomposition for nothing