* Lewis and Michael Wester. */
/*
- * GiNaC Copyright (C) 1999-2008 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2016 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <iostream>
-#include <vector>
#include "ginac.h"
#include "timer.h"
-using namespace std;
using namespace GiNaC;
-static const bool do_test2 = false; // set to true in order to run this beast
+#include <iostream>
+#include <vector>
+using namespace std;
+
+constexpr bool do_test2 = false; // set to true in order to run this beast
static const symbol a1("a1"), a2("a2"), a3("a3"), a4("a4"), a5("a5"), a6("a6");
static const symbol b1("b1"), b2("b2"), b3("b3"), b4("b4"), b5("b5"), b6("b6");
static const ex det1()
{
- matrix d1(15,15);
- d1 = a6, a5, a4, a3, a2, a1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0,
- 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0, 0,
- 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0,
- 0, 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1,
- 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0, 0,
- 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0,
- 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0, 0,
- 0, 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1,
- 0, 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1,
- 0, 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0,
- 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0;
+ matrix d1 = {{a6, a5, a4, a3, a2, a1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ {0, 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0},
+ {0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0, 0},
+ {0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0},
+ {0, 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1},
+ {0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0, 0},
+ {0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0},
+ {0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0, 0},
+ {0, 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1},
+ {0, 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1},
+ {0, 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0},
+ {0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0}};
return d1.determinant();
}
static const ex det2()
{
- matrix d2(15,15);
- d2 = b6, b5, b4, b3, b2, b1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0,
- 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0, 0,
- 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0,
- 0, 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1,
- 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0, 0,
- 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0,
- 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0, 0,
- 0, 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1,
- 0, 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1,
- 0, 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0,
- 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0;
+ matrix d2 = {{b6, b5, b4, b3, b2, b1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ {0, 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0},
+ {0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0, 0},
+ {0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0},
+ {0, 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1},
+ {0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0, 0},
+ {0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0},
+ {0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0, 0},
+ {0, 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1},
+ {0, 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1},
+ {0, 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0},
+ {0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0}};
return d2.determinant();
}
static const ex det3()
{
- matrix d3(15,15);
- d3 = c6, c5, c4, c3, c2, c1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0,
- 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0, 0,
- 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0,
- 0, 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1,
- 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0, 0,
- 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0,
- 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0, 0,
- 0, 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1,
- 0, 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1,
- 0, 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0,
- 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0;
+ matrix d3 = {{c6, c5, c4, c3, c2, c1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ {0, 0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0},
+ {0, c6, 0, c5, c4, 0, c3, c2, c1, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0, 0},
+ {0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1, 0},
+ {0, 0, 0, 0, 0, c6, 0, 0, c5, c4, 0, 0, c3, c2, c1},
+ {0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0, 0},
+ {0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1, 0},
+ {0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0, 0},
+ {0, 0, a6, 0, a5, a4, 0, a3, a2, a1, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0, a6, 0, 0, a5, a4, 0, 0, a3, a2, a1},
+ {0, 0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1},
+ {0, 0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0},
+ {0, b6, 0, b5, b4, 0, b3, b2, b1, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, b6, 0, 0, b5, b4, 0, 0, b3, b2, b1, 0}};
return d3.determinant();
}