code: public static BigDecimal pi(MathContext mathContext) {
  		checkMathContext(mathContext);
  		BigDecimal result = null;
  		
  		synchronized (piCacheLock) {
  			if (piCache != null && mathContext.getPrecision() <= piCache.precision()) {
  				result = piCache;
  			} else {
  				piCache = piChudnovski(mathContext);
  				return piCache;
  			}
  		}
  
  		return round(result, mathContext);
  	}
docs: Returns the number pi.
  
  <p>See <a href="https://en.wikipedia.org/wiki/Pi">Wikipedia: Pi</a></p>
  
  @param mathContext the {@link MathContext} used for the result
  @return the number pi with the precision specified in the <code>mathContext</code>
  @throws UnsupportedOperationException if the {@link MathContext} has unlimited precision