@Override public IExpr evaluateArg1(final IExpr arg1) { if (arg1.isSignedNumber()) { final ISignedNumber in = (ISignedNumber) arg1; if (in.isNegative()) { return F.Pi; } else if (!in.equals(F.C0)) { return F.C0; } } else if (arg1.isComplex()) { final IComplex ic = (IComplex) arg1; if (ic.getRealPart().equals(BigFraction.ZERO)) { final BigFraction imaginaryPart = ic.getImaginaryPart(); if (NumberUtil.isNegative(imaginaryPart)) { return Times(F.CN1D2, F.Pi); } else if (NumberUtil.isPositive(imaginaryPart)) { return Times(F.C1D2, F.Pi); } } } return null; }