private IAST createComparator(IAST matrix, int i, int j, int size) { if (i == 1) { // # < matrix[i+2, 1] return F.Less(F.Slot1, matrix.getPart(i + 2, 1)); } else { if (j < size) { // matrix[i+1, 1] <= # < matrix[i+2, 1] return F.And(F.LessEqual(matrix.getPart(i + 1, 1), F.Slot1), F.Less(F.Slot1, matrix.getPart(i + 2, 1))); } else { // # >= matrix[i+1, 1] return F.GreaterEqual(F.Slot1, matrix.getPart(i + 1, 1)); } } }
public boolean setUp() { if (!(step instanceof ISignedNumber)) { return false; } if (((ISignedNumber) step).isNegative()) { if (evalEngine.evaluate(Less(start, maxCount)) == F.True) { return false; } } else { if (evalEngine.evaluate(Less(maxCount, start)) == F.True) { return false; } } count = start; if (variable != null) { variable.pushLocalVariable(count); } return true; }
public static IExpr bartlettWindow(IExpr x) { return // [$ Piecewise({{1 - 2*x, 0 <= x <= 1/2}, {1 + 2*x, Inequality(-(1/2), LessEqual, x, Less, 0)}}, 0) // $] F.Piecewise(F.List(F.List(F.Plus(F.C1, F.Times(F.CN2, x)), F.LessEqual(F.C0, x, F.C1D2)), F.List(F.Plus(F.C1, F.Times(F.C2, x)), F.And(F.LessEqual(F.CN1D2, x), F.Less(x, F.C0)))), F.C0); // $$; }
/** * Evaluate Less, if both arguments are real numbers * * @param a1 * @return */ default IExpr less(final IExpr a1) { if (isReal() && a1.isReal()) { return ((ISignedNumber) this).isLessThan(((ISignedNumber) a1)) ? F.True : F.False; } EvalEngine engine = EvalEngine.get(); return engine.evaluate(F.Less(this, a1)); }
@Override public IExpr cdf(IAST dist, IExpr k) { if (dist.isAST1()) { IExpr p = dist.arg1(); IExpr function = // [$ (Piecewise({{0, # < 0}, {1 - p, 0<=#<1 }}, 1)) & $] F.Function( F.Piecewise( F.List(F.List(F.C0, F.Less(F.Slot1, F.C0)), F.List(F.Plus(F.C1, F.Negate(p)), F.And(F.LessEqual(F.C0, F.Slot1), F.Less(F.Slot1, F.C1)))), F.C1)); // $$; return callFunction(function, k); } return F.NIL; }
@Override public IExpr mean(IAST dist) { if (dist.isAST2()) { IExpr n = dist.arg1(); IExpr m = dist.arg2(); // Piecewise({{m*Gamma(1 - 1/n), 1 < n}}, Infinity) return F.Piecewise( F.List(F.List(F.Times(m, F.Gamma(F.Subtract(F.C1, F.Power(n, F.CN1)))), F.Less(F.C1, n))), F.CInfinity); } 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 cdf(IAST dist, IExpr k) { IExpr[] minMax = minmax(dist); if (minMax != null) { IExpr a = minMax[0]; IExpr b = minMax[1]; IExpr function = // [$ (Piecewise({{(1 - a + Floor(#))/(1 - a + b), a<=#<b}, {1, # >= b}}, 0)) & $] F.Function(F.Piecewise(F.List( F.List(F.Times(F.Power(F.Plus(F.C1, F.Negate(a), b), -1), F.Plus(F.C1, F.Negate(a), F.Floor(F.Slot1))), F.And(F.LessEqual(a, F.Slot1), F.Less(F.Slot1, b))), F.List(F.C1, F.GreaterEqual(F.Slot1, b))), 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(1 - m, n - Floor(#), 1 + Floor(#)), 0<=#<n}, {1, # >= n}}, // 0)) & $] F.Function(F.Piecewise(F.List( F.List(F.BetaRegularized(F.Plus(F.C1, F.Negate(m)), F.Plus(n, F.Negate(F.Floor(F.Slot1))), F.Plus(F.C1, F.Floor(F.Slot1))), F.And(F.LessEqual(F.C0, F.Slot1), F.Less(F.Slot1, n))), F.List(F.C1, F.GreaterEqual(F.Slot1, n))), F.C0)); // $$; return callFunction(function, k); } return F.NIL; }
if (argX.isPresent() && F.evalTrue(F.And(F.Less(F.CNPiHalf, argX), F.LessEqual(argX, F.CPiHalf)))) { return F.ArcTan(F.Divide(y, x));