code: public static BigComplex valueOf(BigDecimal real, BigDecimal imaginary) {
  		if (real.signum() == 0) {
  			if (imaginary.signum() == 0) {
  				return ZERO;
  			}
  			if (imaginary.compareTo(BigDecimal.ONE) == 0) {
  				return I;
  			}
  		}
  		if (imaginary.signum() == 0 && real.compareTo(BigDecimal.ONE) == 0) {
  			return ONE;
  		}
  
  		return new BigComplex(real, imaginary);
  	}
docs: Returns a complex number with the specified real and imaginary {@link BigDecimal} parts.
  
  @param real the real {@link BigDecimal} part
  @param imaginary the imaginary {@link BigDecimal} part
  @return the complex number