@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) { if (isNegativeExpression(arg1)) { return Times(CN1, ArcCot(Times(CN1, arg1))); } return null; }
@Override public IExpr evaluateArg1(final IExpr arg1) { IExpr negExpr = AbstractFunctionEvaluator.getNormalizedNegativeExpression(arg1); if (negExpr.isPresent()) { return Plus(Negate(ArcCot(negExpr))); } IExpr imPart = AbstractFunctionEvaluator.getPureImaginaryPart(arg1); if (imPart.isPresent()) { return F.Times(F.CNI, F.ArcCoth(imPart)); } if (arg1.isAST(F.Cot, 2) && arg1.first().isPositive()) { // ArcCot(Cot(z)) return arcTanArcCotInverse(arg1); } return F.NIL; }
ORDERLESS_MATCHER.defineHashRule(ArcTan(x_), ArcCot(x_), F.CPiHalf);