コード例 #1
0
ファイル: DeltaSextadTest.java プロジェクト: jdramsey/tetrad
  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;
  }