docs: public static BigRational bernoulli(int n) {
  		if (n < 0) {
  			throw new ArithmeticException("Illegal bernoulli(n) for n < 0: n = " + n);
  		}
      	if (n == 1) {
      		return valueOf(-1, 2);
      	} else if (n % 2 == 1) {
      		return ZERO;
      	}
      	
      	synchronized (bernoulliCache) {
      		int index = n / 2;
      		
      		if (bernoulliCache.size() <= index) {
      			for (int i = bernoulliCache.size(); i <= index; i++) {
      				BigRational b = calculateBernoulli(i * 2);
  					bernoulliCache.add(b);
  				}
      		}
      		
      		return bernoulliCache.get(index);
  		}
      }