/** * 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; }