public IExpr evaluate(final IAST ast) { Validate.checkRange(ast, 2, 3); IExpr arg = ast.get(1); if (arg.isNumber()) { // absolute Value of a number return ((INumber) arg).eabs(); } int dim = arg.isVector(); if (dim > (-1)) { return F.Sqrt(((IAST) arg).map(F.Plus, Functors.replaceAll(F.Sqr(F.Abs(F.Null)), F.Null))); } return null; }
@Override public IExpr variance(IAST dist) { if (dist.isAST0()) { return F.C1; } if (dist.isAST2()) { return F.Sqr(dist.arg2()); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST0()) { IExpr function = // [$ ( 1/(E^(#^2/2)*Sqrt(2*Pi)) & ) $] F.Function(F.Power(F.Times(F.Exp(F.Times(F.C1D2, F.Sqr(F.Slot1))), F.Sqrt(F.Times(F.C2, F.Pi))), -1)); // $$; return callFunction(function, k); } else if (dist.isAST2()) { // IExpr n = dist.arg1(); IExpr m = dist.arg2(); IExpr function = // [$ ( 1/(E^((# - n)^2/(2*m^2))*(m*Sqrt(2*Pi))) & ) $] F.Function(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.Slot1)))), m, F.Sqrt(F.Times(F.C2, F.Pi))), -1)); // $$; 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*n return F.Times(F.Sqr(m), n); } return F.NIL; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST1()) { IExpr n = dist.arg1(); // IExpr function = // [$ (n/(#^2 + n))^((1 + n)/2)/(Sqrt(n)*Beta(n/2, 1/2)) & $] F.Function(F.Times( F.Power(F.Times(n, F.Power(F.Plus(F.Sqr(F.Slot1), n), -1)), F.Times(F.C1D2, F.Plus(F.C1, n))), F.Power(F.Times(F.Sqrt(n), F.Beta(F.Times(F.C1D2, n), F.C1D2)), -1))); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr variance(IAST dist) { if (dist.isAST2()) { // n/(m^2) return F.Divide(dist.arg1(), F.Sqr(dist.arg2())); } 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 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 mean(IAST dist) { if (dist.isAST2()) { IExpr m = dist.arg1(); IExpr s = dist.arg2(); // (m,s) -> E^(m+s^2/2) return F.Power(F.E, F.Plus(m, F.Times(F.C1D2, F.Sqr(s)))); } 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; }
@Override public IExpr variance(IAST dist) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // m - (m*Pochhammer(n, 1/2)^2)/n return F.Subtract(m, F.Divide(F.Times(m, F.Sqr(F.Pochhammer(n, F.C1D2))), n)); } 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; } }
public static IExpr gaussianWindow(IExpr x) { return // [$ Piecewise({{E^(-((50*x^2)/9)), -(1/2) <= x <= 1/2}}, 0) $] F.Piecewise(F.List( F.List(F.Exp(F.Times(F.CN1, F.QQ(1L, 9L), F.ZZ(50L), F.Sqr(x))), F.LessEqual(F.CN1D2, x, F.C1D2))), F.C0); // $$; }
@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 e2ComArg(final IComplex base, final IComplex exponent) { if (base.getImaginaryPart().isZero()) { IRational a = base.getRealPart(); IRational b = exponent.getRealPart(); IRational c = exponent.getImaginaryPart(); IExpr temp = // [$ b*Arg(a)+1/2*c*Log(a^2) $] F.Plus(F.Times(b, F.Arg(a)), F.Times(F.C1D2, c, F.Log(F.Sqr(a)))); // $$; return // [$ (a^2)^(b/2)*E^(-c*Arg(a)) * (Cos(temp)+I* Sin(temp)) $] F.Times(F.Power(F.Sqr(a), F.Times(F.C1D2, b)), F.Exp(F.Times(F.CN1, c, F.Arg(a))), F.Plus(F.Cos(temp), F.Times(F.CI, F.Sin(temp)))); // $$; } 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; }
public static IExpr parzenWindow(IExpr x) { return // [$ Piecewise({{-2*(-1 + 2*x)^3, Inequality(1/4, Less, x, LessEqual, 1/2)},{2*(1 + 2*x)^3, Inequality(-(1/2), // LessEqual, x, Less, -(1/4))},{1 - 24*x^2 - 48*x^3, Inequality(-(1/4), LessEqual, x, Less, 0)}, {1 - 24*x^2 + // 48*x^3, 0 <= x <= 1/4}}, 0) $] F.Piecewise(F.List( F.List(F.Times(F.CN2, F.Power(F.Plus(F.CN1, F.Times(F.C2, x)), 3)), F.And(F.Less(F.C1D4, x), F.LessEqual(x, F.C1D2))), F.List(F.Times(F.C2, F.Power(F.Plus(F.C1, F.Times(F.C2, x)), 3)), F.And(F.LessEqual(F.CN1D2, x), F.Less(x, F.CN1D4))), F.List(F.Plus(F.C1, F.Times(F.ZZ(-24L), F.Sqr(x)), F.Times(F.ZZ(-48L), F.Power(x, 3))), F.And(F.LessEqual(F.CN1D4, x), F.Less(x, F.C0))), F.List(F.Plus(F.C1, F.Times(F.ZZ(-24L), F.Sqr(x)), F.Times(F.ZZ(48L), F.Power(x, 3))), F.LessEqual(F.C0, x, F.C1D4))), F.C0); // $$; }
@Override public IExpr pdf(IAST dist, IExpr k) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // IExpr function = // [$ (Piecewise({{(2*#^(-1 + 2*n)*(n/m)^n)/(E^((#^2*n)/m)*Gamma(n)), # > 0}}, 0)) & $] F.Function( F.Piecewise(F.List(F.List( F.Times(F.C2, F.Power(F.Times(F.Power(m, -1), n), n), F.Power(F.Times(F.Exp(F.Times(F.Power(m, -1), n, F.Sqr(F.Slot1))), F.Gamma(n)), -1), F.Power(F.Slot1, F.Plus(F.CN1, F.Times(F.C2, n)))), F.Greater(F.Slot1, F.C0))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }