@Override public IExpr median(IAST dist) { if (dist.isAST1()) { // (p) => Piecewise({{1, p > 1/2}}, 0) return F.Piecewise(F.List(F.List(F.C1, F.Greater(dist.arg1(), F.C1D2))), F.C0); } return F.NIL; }
public static IExpr tukeyWindow(IExpr x) { return // [$ Piecewise({{1, -(1/3) - 2*x <= 0 && -(1/3) + 2*x <= 0}, {(1/2)*(1 + Cos(3*Pi*(1/6 + x))), x >= -(1/2) && // -(1/3) - 2*x > 0}, {(1/2)*(1 + Cos(3*Pi*(-(1/6) + x))), -(1/3) + 2*x > 0 && x <= 1/2}}, 0) $] F.Piecewise(F.List( F.List(F.C1, F.And(F.LessEqual(F.Plus(F.CN1D3, F.Times(F.CN2, x)), F.C0), F.LessEqual(F.Plus(F.CN1D3, F.Times(F.C2, x)), F.C0))), F.List(F.Times(F.C1D2, F.Plus(F.C1, F.Cos(F.Times(F.C3, F.Pi, F.Plus(F.QQ(1L, 6L), x))))), F.And(F.GreaterEqual(x, F.CN1D2), F.Greater(F.Plus(F.CN1D3, F.Times(F.CN2, x)), F.C0))), F.List(F.Times(F.C1D2, F.Plus(F.C1, F.Cos(F.Times(F.C3, F.Pi, F.Plus(F.QQ(-1L, 6L), x))))), F.And(F.Greater(F.Plus(F.CN1D3, F.Times(F.C2, x)), F.C0), F.LessEqual(x, F.C1D2)))), F.C0); // $$; }
/** * Evaluate Greater, if both arguments are real numbers * * @param a1 * @return */ default IExpr greater(final IExpr a1) { if (isReal() && a1.isReal()) { return ((ISignedNumber) this).isGreaterThan(((ISignedNumber) a1)) ? F.True : F.False; } EvalEngine engine = EvalEngine.get(); return engine.evaluate(F.Greater(this, a1)); }
@Override public IExpr mean(IAST dist) { if (dist.isAST1()) { // (v) -> Piecewise({{0, v > 1}}, Indeterminate) return F.Piecewise(F.List(F.List(F.C0, F.Greater(dist.arg1(), F.C1))), F.Indeterminate); } if (dist.isAST3()) { // (m,s,v) -> Piecewise({{m, v > 1}}, Indeterminate) return F.Piecewise(F.List(F.List(dist.arg1(), F.Greater(dist.arg3(), F.C1))), F.Indeterminate); } return F.NIL; }
@Override public IExpr variance(IAST dist) { if (dist.isAST1()) { IExpr n = dist.arg1(); return F.Piecewise(F.List(F.List(F.Divide(n, F.Plus(F.CN2, n)), F.Greater(n, F.C2))), F.Indeterminate); } return F.NIL; }
@Override public IExpr mean(IAST dist) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); return // [$ Piecewise({{m/(-2 + m), m > 2}}, Indeterminate) $] F.Piecewise(F.List(F.List(F.Times(F.Power(F.Plus(F.CN2, m), -1), m), F.Greater(m, F.C2))), F.Indeterminate); // $$; } return F.NIL; }
@Override public IExpr cdf(IAST dist, IExpr k) { if (dist.isAST1()) { IExpr v = dist.arg1(); IExpr function = // [$ Piecewise({{GammaRegularized(v/2, 0, #/2), # > 0}}, 0) & $] F.Function(F.Piecewise( F.List(F.List(F.GammaRegularized(F.Times(F.C1D2, v), F.C0, F.Times(F.C1D2, F.Slot1)), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr cdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); IExpr function = // [$ (Piecewise({{GammaRegularized(n, 0, #*m), # > 0}}, 0)) & $] F.Function(F.Piecewise(F.List( F.List(F.GammaRegularized(n, F.C0, F.Times(F.Slot1, m)), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr cdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); IExpr function = // [$ Piecewise({{GammaRegularized(n, 0, (#^2*n)/m), # > 0}}, 0) & $] F.Function(F.Piecewise( F.List(F.List(F.GammaRegularized(n, F.C0, F.Times(F.Power(m, -1), n, F.Sqr(F.Slot1))), F.Greater(F.Slot1, F.C0))), 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(); return // [$ Piecewise({{(2*m^2*(-2 + m + n))/((-4 + m)*(-2 + m)^2*n), m > 4}}, Indeterminate) $] F.Piecewise(F.List(F.List( F.Times(F.C2, F.Sqr(m), F.Plus(F.CN2, m, n), F.Power(F.Times(F.Plus(F.CN4, m), F.Sqr(F.Plus(F.CN2, m)), n), -1)), F.Greater(m, F.C4))), F.Indeterminate); // $$; } return F.NIL; } }
@Override public IExpr cdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); IExpr function = // [$ (Piecewise({{E^(-(#/m)^(-n)), # > 0}}, 0)) & $] F.Function(F.Piecewise( F.List(F.List(F.Exp(F.Negate(F.Power(F.Times(F.Power(m, -1), F.Slot1), F.Negate(n)))), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr cdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); IExpr function = // [$ Piecewise({{BetaRegularized((#*n)/(m + #*n), n/2, m/2), # > 0}}, 0) & $] F.Function(F.Piecewise(F.List(F.List( F.BetaRegularized(F.Times(n, F.Power(F.Plus(m, F.Times(F.Slot1, n)), -1), F.Slot1), F.Times(F.C1D2, n), F.Times(F.C1D2, m)), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr cdf(IAST dist, IExpr k) { IExpr[] minMax = minmax(dist); if (minMax != null) { IExpr a = minMax[0]; IExpr b = minMax[1]; IExpr function = // [$ Piecewise({{(# - a)/(b - a), a <= # <= b}, {1, # > b}}, 0) & $] F.Function( F.Piecewise(F.List( F.List(F.Times(F.Power(F.Plus(F.Negate(a), b), -1), F.Plus(F.Negate(a), F.Slot1)), F.LessEqual(a, F.Slot1, b)), F.List(F.C1, F.Greater(F.Slot1, b))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // IExpr function = // [$ Piecewise({{(#^(-1 + n)*m^n)/(E^(#*m)*Gamma(n)), # > 0}}, 0) & $] F.Function(F.Piecewise(F.List(F.List( F.Times(F.Power(m, n), F.Power(F.Times(F.Exp(F.Times(F.Slot1, m)), F.Gamma(n)), -1), F.Power(F.Slot1, F.Plus(F.CN1, n))), F.Greater(F.Slot1, F.C0))), 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(); // Piecewise({{m^2*(Gamma(1 - 2/n) - Gamma(1 - 1/n)^2), n > 2}}, Infinity) return F.Piecewise(F.List(F.List( F.Times(F.Sqr(m), F.Plus(F.Gamma(F.Plus(F.C1, F.Times(F.CN2, F.Power(n, -1)))), F.Negate(F.Sqr(F.Gamma(F.Plus(F.C1, F.Negate(F.Power(n, -1)))))))), F.Greater(n, F.C2))), F.CInfinity); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // IExpr function = // [$ Piecewise({{((#/m)^(-1 + n)*n)/(E^(#/m)^n*m), # > 0}}, 0) & $] F.Function(F.Piecewise(F.List(F.List( F.Times(F.Power(F.Times(F.Exp(F.Power(F.Times(F.Power(m, -1), F.Slot1), n)), m), -1), n, F.Power(F.Times(F.Power(m, -1), F.Slot1), F.Plus(F.CN1, n))), F.Greater(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 v = dist.arg1(); IExpr function = // [$ Piecewise({{#^(-1 + v/2)/(2^(v/2)*E^(#/2)*Gamma(v/2)), # > 0}}, 0) & $] F.Function( F.Piecewise(F.List(F.List( F.Times(F.Power( F.Times(F.Power(F.C2, F.Times(F.C1D2, v)), F.Exp(F.Times(F.C1D2, F.Slot1)), F.Gamma(F.Times(F.C1D2, v))), -1), F.Power(F.Slot1, F.Plus(F.CN1, F.Times(F.C1D2, v)))), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // IExpr function = // [$ Piecewise({{((#/m)^(-1 - n)*n)/(E^(#/m)^(-n)*m), # > 0}}, 0) & $] F.Function(F.Piecewise(F.List(F.List( F.Times(F.Power( F.Times(F.Exp(F.Power(F.Times(F.Power(m, -1), F.Slot1), F.Negate(n))), m), -1), n, F.Power(F.Times(F.Power(m, -1), F.Slot1), F.Plus(F.CN1, F.Negate(n)))), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // IExpr function = // [$ (Piecewise({{1/(E^((-n + Log(#))^2/(2*m^2))*(#*m*Sqrt(2*Pi))), # > 0}}, 0)) & $] F.Function( F.Piecewise( F.List(F.List( F.Power(F.Times( F.Exp(F.Times(F.Power(F.Times(F.C2, F.Sqr(m)), -1), F.Sqr(F.Plus(F.Negate(n), F.Log(F.Slot1))))), F.Slot1, m, F.Sqrt(F.Times(F.C2, F.Pi))), -1), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); IExpr function = // [$ Piecewise({{(#^(-1 + n/2)*m^(m/2)*n^(n/2)*(m + #*n)^((1/2)*(-m - n)))/Beta(n/2, m/2), # > // 0}}, 0) & $] F.Function( F.Piecewise(F.List(F.List( F.Times(F.Power(m, F.Times(F.C1D2, m)), F.Power(n, F.Times(F.C1D2, n)), F.Power(F.Plus(m, F.Times(F.Slot1, n)), F.Times(F.C1D2, F.Plus(F.Negate(m), F.Negate(n)))), F.Power(F.Beta(F.Times(F.C1D2, n), F.Times(F.C1D2, m)), -1), F.Power(F.Slot1, F.Plus(F.CN1, F.Times(F.C1D2, n)))), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }