* @param x
     * @param twoPI
     * @param decimalPlacePrecision
     * @param aPIBy2
     * @param aRoundingMode
     * @param a_Generic_BigDecimal
     * @return
     */
    protected static BigDecimal sinNoCaseCheck(
            BigDecimal x,
            BigDecimal aPI,
            BigDecimal twoPI,
            BigDecimal aPIBy2,
            Generic_BigDecimal a_Generic_BigDecimal,
            int decimalPlacePrecision,
            RoundingMode aRoundingMode) {
        // sinx = 1-(x^3)/(3!)+(x^5)/(5!)-(x^7)/(7!)+... (1)
        if (x.compareTo(BigDecimal.ZERO) != -1 && x.compareTo(aPIBy2) != 1) {
            return sinAngleBetweenZeroAndPI(
                    x,
                    aPI,
                    twoPI,
                    a_Generic_BigDecimal,
                    decimalPlacePrecision,
                    aRoundingMode);
        } else {
            if (x.compareTo(aPI) == -1) {
                return sinAngleBetweenZeroAndPI(
                        aPI.subtract(x),
                        aPI,
                        twoPI,
                        a_Generic_BigDecimal,
                        decimalPlacePrecision,
                        aRoundingMode);
            }
            BigDecimal uncorrectedResult = sinNoCaseCheck(
                    twoPI.subtract(x),
                    aPI,
                    twoPI,
                    aPIBy2,
                    a_Generic_BigDecimal,
                    decimalPlacePrecision,
                    aRoundingMode);
            return uncorrectedResult.negate();
        }
    }