public IExpr e2ObjArg(final IExpr o0, final IExpr z) { int n = o0.toIntDefault(Integer.MIN_VALUE); if (n > 0 && z.isNumericFunction()) { // // Gamma(n,z) = ((n - 1)! * Sum(z^k/k!, {k, 0, n - 1}))/E^z // IASTAppendable sum = F.PlusAlloc(n); for (int k = 0; k < n; k++) { sum.append(F.Divide(F.Power(z, k), F.Factorial(F.ZZ(k)))); } return F.Times(F.Factorial(F.ZZ(n - 1)), sum, F.Power(E, z.negate())); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST1()) { IExpr p = dist.arg1(); // IExpr function = // [$ Piecewise({{p^#/(E ^ p * #!), # >= 0}}, 0) & $] F.Function(F.Piecewise(F.List(F.List( F.Times(F.Power(p, F.Slot1), F.Power(F.Times(F.Exp(p), F.Factorial(F.Slot1)), -1)), F.GreaterEqual(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr evaluateArg1(final IExpr arg1) { if (arg1.isInfinity() || arg1.isZero()) { return F.CInfinity; } if (arg1.isNegativeInfinity() || arg1.isDirectedInfinity(F.CI) || arg1.isDirectedInfinity(F.CNI) || arg1.isComplexInfinity()) { return F.CComplexInfinity; } if (arg1.isPositive()) { if (arg1.isInteger()) { return F.Log(F.Factorial(arg1.dec())); } } if (arg1.isNegative()) { if (arg1.isInteger()) { return F.CInfinity; } } return F.NIL; }
F.Times(F.Power(F.CN1, j), F.Power(F.Times(F.C2, z), F.Plus(F.CN1, F.Times(F.CN2, j))), F.Factorial(F.Plus(F.Times(F.C2, j), F.Abs(n), F.C1D2)), F.Power(F .Times(F.Factorial(F.Plus(F.Times(F.C2, j), F.C1)), F.Factorial(F.Plus(F.QQ(-3L, 2L), F.Times(F.CN2, j), F.Abs(n)))), -1)), F.Sum(F.Times( F.Power(F.CN1, j), F.Power(F.Times(F.Factorial(F.Times(F.C2, j)), F.Factorial(F.Plus(F.CN1D2, F.Times(F.CN2, j), F.Abs(n))), F.Power(F.Times(F.C2, z), F.Times(F.C2, j))), -1), F.Factorial(F.Plus(F.CN1D2, F.Times(F.C2, j), F.Abs(n)))), F.List(j, F.C0, F.Floor( F.Times(F.C1D4, F.Plus(F.CN1, F.Times(F.C2, F.Abs(n))))))))));
@Override public IExpr evaluate(final IAST ast, EvalEngine engine) { Validate.checkSize(ast, 4); IExpr z = ast.arg1(); IExpr a = ast.arg2(); IExpr n = ast.arg3(); int ni = n.toIntDefault(Integer.MIN_VALUE); if (ni != Integer.MIN_VALUE) { if (ni < 0) { // for n>=0; BetaRegularized(z, a, -n)=0 return F.C0; } IASTAppendable sum = F.PlusAlloc(ni); // {k, 0, n - 1} for (int k = 0; k < ni; k++) { // (Pochhammer(a, k)*(1 - z)^k)/k! IInteger kk = F.integer(k); sum.append(F.Times(F.Power(F.Plus(F.C1, F.Negate(z)), kk), F.Power(F.Factorial(kk), -1), F.Pochhammer(a, kk))); } // z^a * sum return F.Times(F.Power(z, a), sum); } return F.NIL; }
binomial.append(F.Plus(n, F.ZZ(i))); binomial.append(F.Power(F.Factorial(F.ZZ(nk - 1)), -1)); bin = binomial; comparator = F.GreaterEqual(n, F.C0);
F.Power(F.Factorial(k), -1), F.Power(F.Factorial(F.Plus(F.Times(F.CN2, k), n)), -1), F.Pochhammer(l, F.Plus(F.Negate(k), n))), 0, nInt / 2); return Plus(Times(Power(C2, n), Power(n, -1), Power(z, n)), F.sum(k -> Times(Power(CN1, k), Power(Times(C2, z), Plus(Times(F.CN2, k), n)), Power(Times(Factorial(k), Factorial(Plus(Times(F.CN2, k), n))), -1), Factorial(Plus(CN1, Negate(k), n))), 1, floorND2));
return Times(Power(Factorial(ast.get(2)), CN1), temp);
@Override public IExpr evaluate(final IAST ast, EvalEngine engine) { if (ast.isAST2() && (ast.arg2().isVector() == 3)) { IAST list = (IAST) ast.arg2(); final int upperLimit = Validate.checkIntType(list, 3, 0); if (upperLimit < 0) { return F.NIL; } IASTAppendable fadd = F.PlusAlloc(upperLimit+2); fadd.append(F.ReplaceAll(ast.arg1(), F.Rule(list.arg1(), list.arg2()))); IExpr temp = ast.arg1(); IExpr factor = null; for (int i = 1; i <= upperLimit; i++) { temp = F.D(temp, list.arg1()); factor = F.Times(F.Power(F.Factorial(F.integer(i)), F.CN1), F.Power(F.Plus(list.arg1(), F.Times(F.CN1, list.arg2())), F .integer(i))); fadd.append(F.Times(F.ReplaceAll(temp, F.Rule(list.arg1(), list.arg2())), factor)); } return fadd; } return F.NIL; } }
Power(Factorial(Times(C2, n)), -1), BernoulliB(Times(C2, n)));
@Override public IExpr evaluate(final IAST ast) { if (ast.size() == 3 && (ast.get(2).isVector() == 3)) { IAST list = (IAST) ast.get(2); final int lowerLimit = Validate.checkIntType(list, 2, Integer.MIN_VALUE); if (lowerLimit != 0) { // TODO support other cases than 0 return null; } final int upperLimit = Validate.checkIntType(list, 3, Integer.MIN_VALUE); if (upperLimit < 0) { return null; } IAST fadd = F.Plus(); fadd.add(F.ReplaceAll(ast.get(1), F.Rule(list.get(1), list.get(2)))); IExpr temp = ast.get(1); IExpr factor = null; for (int i = 1; i <= upperLimit; i++) { temp = F.D(temp, list.get(1)); factor = F.Times(F.Power(F.Factorial(F.integer(i)), F.CN1), F.Power(F.Plus(list.get(1), F.Times(F.CN1, list.get(2))), F .integer(i))); fadd.add(F.Times(F.ReplaceAll(temp, F.Rule(list.get(1), list.get(2))), factor)); } return fadd; } return null; } }
IExpr temp = EvalEngine.get().evaluate(F.Plus(((IInteger) a).subtract(F.C1), n)); if (temp.isSymbol()) { return F.Divide(F.Factorial(temp), F.Gamma(a));
BernoulliB(Times(C2, v)), Power(Times(C2, Factorial(Times(C2, v))), CN1));