nd4j-common/src/main/java/org/nd4j/linalg/util/BigDecimalMath.java
static public BigDecimal pi(final MathContext mc) {
        /* look it up if possible */
        if (mc.getPrecision() < PI.precision()) {
            return PI.round(mc);
        } else {
            /* Broadhurst \protect\vrule width0pt\protect\href{http://arxiv.org/abs/math/9803067}{arXiv:math/9803067}
             */
            int[] a = {1, 0, 0, -1, -1, -1, 0, 0};
            BigDecimal S = broadhurstBBP(1, 1, a, mc);
            return multiplyRound(S, 8);
        }
    }
static public BigDecimal pi(final MathContext mc) {
        /* look it up if possible */
        if (mc.getPrecision() < PI.precision()) {
            return PI.round(mc);
        } else {
            /* Broadhurst \protect\vrule width0pt\protect\href{http://arxiv.org/abs/math/9803067}{arXiv:math/9803067}
             */
            int[] a = {1, 0, 0, -1, -1, -1, 0, 0};
            BigDecimal S = broadhurstBBP(1, 1, a, mc);
            return multiplyRound(S, 8);
        }
    }
static public BigDecimal pi ( final MathContext mc ) { /* look it up if possible */ if ( mc . getPrecision ( ) < PI . precision ( ) ) { return PI . round ( mc ) ; } else { /* Broadhurst \protect\vrule width0pt\protect\href{http://arxiv.org/abs/math/9803067}{arXiv:math/9803067}
             */ int [ ] a = { 1 , 0 , 0 , - 1 , - 1 , - 1 , 0 , 0 } ; BigDecimal S = broadhurstBBP ( 1 , 1 , a , mc ) ; return multiplyRound ( S , 8 ) ; } }
Euler’s constant.

@param mc The required precision of the result.
@return 3.14159...
Euler’s constant .