@Override protected IASTMutable getAST(final IExpr value) { return (IASTMutable) F.Plus(null, F.Negate(value)); }
@Override public IExpr cdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); IExpr function = // [$ (1 - E^(-E^((# - n)/m))) & $] F.Function(F.Plus(F.C1, F.Negate( F.Exp(F.Negate(F.Exp(F.Times(F.Power(m, -1), F.Plus(F.Negate(n), F.Slot1)))))))); // $$; return callFunction(function, k); } return F.NIL; }
public IExpr e1FraArg(final IFraction f) { if (f.isPositive() && f.isLessThan(F.C1)) { return F.Negate(F.Log(f.inverse())); } return F.NIL; }
@Override public IExpr variance(IAST dist) { IExpr[] minMax = minmax(dist); if (minMax != null) { IExpr l = minMax[0]; IExpr r = minMax[1]; return // [$ (1/12)*(l - r)^2 $] F.Times(F.QQ(1L, 12L), F.Sqr(F.Plus(l, F.Negate(r)))); // $$; } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); IExpr function = // [$ (E^(-E^((# - n)/m) + (# - n)/m)/m) & $] F.Function(F.Times( F.Exp(F.Plus(F.Negate(F.Exp(F.Times(F.Power(m, -1), F.Plus(F.Negate(n), F.Slot1)))), F.Times(F.Power(m, -1), F.Plus(F.Negate(n), F.Slot1)))), F.Power(m, -1))); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr variance(IAST dist) { IExpr[] minMax = minmax(dist); if (minMax != null) { // (1/12)*(-1+(1+max-min)^2) return F.Times(F.QQ(1L, 12L), F.Plus(F.CN1, F.Sqr(F.Plus(F.C1, minMax[1], F.Negate(minMax[0]))))); } return F.NIL; }
@Override public IExpr median(IAST dist) { IExpr[] minMax = minmax(dist); if (minMax != null) { IExpr l = minMax[0]; IExpr r = minMax[1]; // (l,r) => -1 + l + Max(1, Ceiling((1/2)*(1 - l + r))) return F.Plus(F.CN1, l, F.Max(F.C1, F.Ceiling(F.Times(F.C1D2, F.Plus(F.C1, F.Negate(l), r))))); } return F.NIL; }
private static IExpr termPartitionsQ1(EvalEngine engine, IInteger n, int k) { // DivisorSigma(1, k)*PartitionsQ(n - k) IInteger k2 = F.ZZ(k); return engine.evaluate(Times(F.DivisorSigma(C1, k2), F.PartitionsQ(Plus(Negate(k2), n)))); }
@Override public IExpr median(IAST dist) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // (n,m) => m/Log(2)^n^(-1) return F.Times(m, F.Power(F.Log(F.C2), F.Negate(F.Power(n, -1)))); } return F.NIL; }
@Override public IExpr evaluateArg1(final IExpr arg1) { IExpr negExpr = AbstractFunctionEvaluator.getNormalizedNegativeExpression(arg1); if (negExpr.isPresent()) { return Negate(ArcCoth(negExpr)); } IExpr imPart = AbstractFunctionEvaluator.getPureImaginaryPart(arg1); if (imPart.isPresent()) { return F.Times(F.CNI, F.ArcCot(imPart)); } return F.NIL; }
@Override public IExpr evaluateArg1(final IExpr arg1) { IExpr negExpr = AbstractFunctionEvaluator.getNormalizedNegativeExpression(arg1); if (negExpr.isPresent()) { return Negate(ArcCsc(negExpr)); } IExpr imPart = AbstractFunctionEvaluator.getPureImaginaryPart(arg1); if (imPart.isPresent()) { return F.Times(F.CNI, F.ArcCsch(imPart)); } return F.NIL; }
@Override public IExpr evaluateArg1(final IExpr arg1) { IExpr negExpr = AbstractFunctionEvaluator.getNormalizedNegativeExpression(arg1); if (negExpr.isPresent()) { return Negate(ArcTanh(negExpr)); } IExpr imPart = AbstractFunctionEvaluator.getPureImaginaryPart(arg1); if (imPart.isPresent()) { return F.Times(F.CI, F.ArcTan(imPart)); } return F.NIL; }
@Override public IExpr evaluateArg1(final IExpr arg1) { IExpr negExpr = AbstractFunctionEvaluator.getNormalizedNegativeExpression(arg1); if (negExpr.isPresent()) { return Negate(ArcCsch(negExpr)); } IExpr imPart = AbstractFunctionEvaluator.getPureImaginaryPart(arg1); if (imPart.isPresent()) { return F.Times(F.CNI, F.ArcCsc(imPart)); } return F.NIL; }
@Override public IExpr evaluateArg1(final IExpr arg1) { IExpr negExpr = AbstractFunctionEvaluator.getNormalizedNegativeExpression(arg1); if (negExpr.isPresent()) { return Negate(ArcSinh(negExpr)); } IExpr imPart = AbstractFunctionEvaluator.getPureImaginaryPart(arg1); if (imPart.isPresent()) { return F.Times(F.CI, F.ArcSin(imPart)); } return F.NIL; }
@Override public IExpr evaluate(final IAST ast, EvalEngine engine) { Validate.checkSize(ast, 2); IExpr n = ast.arg1(); if (n.isNumericFunction()) { if (n.isPositiveResult()) { return F.Power(n, F.C1D3); } return F.Times(F.CN1, F.Power(F.Negate(n), F.C1D3)); } return F.Power(n, F.C1D3); }
@Override public IExpr evaluateArg1(final IExpr arg1) { IExpr negExpr = AbstractFunctionEvaluator.getNormalizedNegativeExpression(arg1); if (negExpr.isPresent()) { return Negate(Coth(negExpr)); } IExpr imPart = AbstractFunctionEvaluator.getPureImaginaryPart(arg1); if (imPart.isPresent()) { return F.Times(F.CNI, F.Cot(imPart)); } if (arg1.isZero()) { return F.CComplexInfinity; } return F.NIL; }
@Override public IExpr evaluateArg1(final IExpr arg1) { IExpr negExpr = AbstractFunctionEvaluator.getNormalizedNegativeExpression(arg1); if (negExpr.isPresent()) { return Negate(Sinh(negExpr)); } IExpr imPart = AbstractFunctionEvaluator.getPureImaginaryPart(arg1); if (imPart.isPresent()) { return F.Times(F.CI, F.Sin(imPart)); } if (arg1.isZero()) { return F.C0; } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST1()) { IExpr n = dist.arg1(); // IExpr function = // [$ (Piecewise({{(1 - n)^#*n, # >= 0}}, 0)) & $] F.Function(F.Piecewise(F.List(F.List(F.Times(F.Power(F.Plus(F.C1, F.Negate(n)), F.Slot1), n), F.GreaterEqual(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST1()) { IExpr p = dist.arg1(); // IExpr function = // [$ Piecewise({{1 - p, # == 0}, {p, # == 1}}, 0) & $] F.Function(F.Piecewise(F.List(F.List(F.Plus(F.C1, F.Negate(p)), F.Equal(F.Slot1, F.C0)), F.List(p, F.Equal(F.Slot1, F.C1))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr variance(IAST dist) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // m^2*(-Gamma(1 + 1/n)^2 + Gamma(1 + 2/n)) return F.Times(F.Sqr(m), F.Plus(F.Negate(F.Sqr(F.Gamma(F.Plus(F.C1, F.Power(n, -1))))), F.Gamma(F.Plus(F.C1, F.Times(F.C2, F.Power(n, -1)))))); } return F.NIL; }