Esempio n. 1
0
  @Override
  public double evalEnergy(Value[] values) {
    // Allow one constant input
    FiniteFieldNumber result = (FiniteFieldNumber) values[0].getObject();
    Object arg1 = values[1].getObject();
    FiniteFieldNumber input1 =
        (arg1 instanceof FiniteFieldNumber)
            ? (FiniteFieldNumber) arg1
            : result.cloneWithNewValue(FactorFunctionUtilities.toInteger(arg1));
    Object arg2 = values[2].getObject();
    FiniteFieldNumber input2 =
        (arg2 instanceof FiniteFieldNumber)
            ? (FiniteFieldNumber) arg2
            : result.cloneWithNewValue(FactorFunctionUtilities.toInteger(arg2));

    if (!result.isCompatible(input1) || !result.isCompatible(input2))
      throw new DimpleException("Primitive polynomials must match.");

    FiniteFieldNumber computedResult = finiteFieldProduct(input1, input2);

    return (computedResult.isEqual(result)) ? 0 : Double.POSITIVE_INFINITY;
  }
  @Override
  public final double evalEnergy(Value[] arguments) {
    // Allow one constant input
    final FiniteFieldNumber result = requireNonNull((FiniteFieldNumber) arguments[0].getObject());
    final Value arg1 = arguments[1];
    final FiniteFieldNumber input1 =
        (arg1 instanceof FiniteFieldValue)
            ? arg1.getFiniteField()
            : result.cloneWithNewValue(arg1.getInt());
    final Value arg2 = arguments[2];
    final FiniteFieldNumber input2 =
        (arg2 instanceof FiniteFieldValue)
            ? arg2.getFiniteField()
            : result.cloneWithNewValue(arg2.getInt());

    if (!result.isCompatible(input1) || !result.isCompatible(input2))
      throw new DimpleException("Primitive polynomials must match.");

    final FiniteFieldNumber computedResult = finiteFieldProduct(input1, input2);

    return (computedResult.isEqual(result)) ? 0 : Double.POSITIVE_INFINITY;
  }