docs: public static BigRational valueOf(BigDecimal value) {
  		if (value.compareTo(BigDecimal.ZERO) == 0) {
  			return ZERO;
  		}
  		if (value.compareTo(BigDecimal.ONE) == 0) {
  			return ONE;
  		}
  		
  		int scale = value.scale();
  		if (scale == 0) {
  			return new BigRational(value, BigDecimal.ONE);
  		} else if (scale < 0) {
  			BigDecimal n = new BigDecimal(value.unscaledValue()).multiply(BigDecimal.ONE.movePointLeft(value.scale()));
  			return new BigRational(n, BigDecimal.ONE);
  		}
  		else {
  			BigDecimal n = new BigDecimal(value.unscaledValue());
  			BigDecimal d = BigDecimal.ONE.movePointRight(value.scale());
  			return new BigRational(n, d);
  		}
  	}