Пример #1
0
  /**
   * calculate the number of permutations
   *
   * @param operand[0] = the order of the equation
   * @return the coefficients as a vector
   */
  public OperandToken evaluate(Token[] operands) {
    OperandToken result = new DoubleNumberToken(0);
    if (operands.length >= 1 && operands[0] instanceof DoubleNumberToken) {
      double val = ((DoubleNumberToken) operands[0]).getValueRe();
      int order = (new Double(val)).intValue();

      double[][] results = new double[1][order + 1];

      DoubleNumberToken total = ((DoubleNumberToken) operands[0]);
      for (int count = 0; count <= order; count++) {
        // comb(x y) = y!/(x! * (y-x)!)
        DoubleNumberToken objects = new DoubleNumberToken(count);

        // result = x!
        OperandToken temp = objects.factorial();

        // temp2 = y-x
        OperandToken temp2 = ((OperandToken) total.clone());
        temp2 = temp2.subtract(objects);

        // temp2 = (y-x)!
        temp2 = temp2.factorial();

        // temp = x! * (y-x)!
        temp = temp.multiply(temp2);

        // temp2 = y! / (x! * (y-x)!)
        temp2 = total.factorial();

        temp2 = temp2.divide(temp);

        results[0][count] = ((DoubleNumberToken) temp2).getValueRe();
      }
      result = new DoubleNumberToken(results);
    }
    return result;
  }