private double getDerivative(Sextad sextad, Sigma sigma) { Node a = sigma.getA(); Node b = sigma.getB(); Node n1 = sextad.getI(); Node n2 = sextad.getJ(); Node n3 = sextad.getK(); Node n4 = sextad.getL(); Node n5 = sextad.getM(); Node n6 = sextad.getN(); if (a == n1) { if (b == n4) { return r(n2, n5) * r(n3, n6) - r(n2, n6) * r(n3, n5); } else if (b == n5) { return -r(n2, n4) * r(n3, n6) + r(n3, n4) * r(n2, n6); } else if (b == n6) { return r(n2, n4) * r(n3, n5) - r(n3, n4) * r(n2, n5); } } else if (a == n2) { if (b == n4) { return r(n3, n5) * r(n1, n6) - r(n1, n5) * r(n3, n6); } else if (b == n5) { return r(n1, n4) * r(n3, n6) - r(n3, n4) * r(n1, n6); } else if (b == n6) { return -r(n1, n4) * r(n3, n5) + r(n3, n4) * r(n1, n5); } } else if (a == n3) { if (b == n4) { return r(n1, n5) * r(n2, n6) - r(n2, n5) * r(n1, n6); } else if (b == n5) { return -r(n1, n4) * r(n2, n6) + r(n2, n4) * r(n1, n6); } else if (b == n6) { return r(n1, n4) * r(n2, n5) - r(n2, n4) * r(n1, n5); } } // symmetry n6 = sextad.getI(); n5 = sextad.getJ(); n4 = sextad.getK(); n3 = sextad.getL(); n2 = sextad.getM(); n1 = sextad.getN(); if (a == n1) { if (b == n4) { return r(n2, n5) * r(n3, n6) - r(n2, n6) * r(n3, n5); } else if (b == n5) { return -r(n2, n4) * r(n3, n6) + r(n3, n4) * r(n2, n6); } else if (b == n6) { return r(n2, n4) * r(n3, n5) - r(n3, n4) * r(n2, n5); } } else if (a == n2) { if (b == n4) { return r(n3, n5) * r(n1, n6) - r(n1, n5) * r(n3, n6); } else if (b == n5) { return r(n1, n4) * r(n3, n6) - r(n3, n4) * r(n1, n6); } else if (b == n6) { return -r(n1, n4) * r(n3, n5) + r(n3, n4) * r(n1, n5); } } else if (a == n3) { if (b == n4) { return r(n1, n5) * r(n2, n6) - r(n2, n5) * r(n1, n6); } else if (b == n5) { return -r(n1, n4) * r(n2, n6) + r(n2, n4) * r(n1, n6); } else if (b == n6) { return r(n1, n4) * r(n2, n5) - r(n2, n4) * r(n1, n5); } } return 0.0; }