code: public static BigComplex sqrt(BigComplex x, MathContext mathContext) {
  		// https://math.stackexchange.com/questions/44406/how-do-i-get-the-square-root-of-a-complex-number
  		MathContext mc = new MathContext(mathContext.getPrecision() + 4, mathContext.getRoundingMode());
  
  		BigDecimal magnitude = x.abs(mc);
  
  		BigComplex a = x.add(magnitude, mc);
  		return a.divide(a.abs(mc), mc).multiply(BigDecimalMath.sqrt(magnitude, mc), mc).round(mathContext);
  	}
docs: Calculates the square root of {@link BigComplex} x in the complex domain (√x).
  
  <p>See <a href="https://en.wikipedia.org/wiki/Square_root#Square_root_of_an_imaginary_number">Wikipedia: Square root (Square root of an imaginary number)</a></p>
  
  @param x the {@link BigComplex} to calculate the square root for
  @param mathContext the {@link MathContext} used for the result
  @return the calculated square root {@link BigComplex} with the precision specified in the <code>mathContext</code>