The following is the program 3.2.6. from the book *Computer Science An Interdisciplinary Approach* by Sedgewick & Wayne: // This data type is the basis for writing Java programs that manipulate complex numbers. public class Complex { private final double re; private final double im; public Complex(double real, double imag) { re = real; im = imag; } public double re() { return re; } public double im() { return im; } public double abs() { return Math.sqrt(re*re + im*im); } public Complex plus(Complex b) { double real = re + b.re; double imag = im + b.im; return new Complex(real, imag); } public Complex times(Complex b) { double real = re*b.re - im*b.im; double imag = re*b.im + im*b.re; return new Complex(real, imag); } public String toString() { return re + " + " + im + "i"; } public static void main(String[] args) { Complex z0 = new Complex(1.0, 1.0); Complex z = z0; z = z.times(z).plus(z0); z = z.times(z).plus(z0); System.out.println(z); } } The next section in the book discusses the creation of [Mandelbrot set][1] in black-and-white. But before studying the program written by the authors of the book I tried to implement my own program to draw the Mandelbrot set in color. Here is my program: import java.awt.Color; public class MandelbrotSet { public static int checkDegreeOfDivergence(Complex c, int degree) { Complex nextRecurrence = c; for (int i = 0; i < degree; i++) { if (nextRecurrence.abs() >= 2) return i; nextRecurrence = nextRecurrence.times(nextRecurrence).plus(c); } return degree; } public static double randomize(double left, double right) { return left + Math.random()*(right-left); } public static Color[] createRandomColors(int degree) { Color[] colors = new Color[degree+1]; colors[degree] = new Color(0,0,0); double r = Math.random(); int red = 0, green = 0, blue = 0; if (r < 1.0/3.0) { for (int i = 0; i < degree; i++) { red = 255; green = (int) randomize(0,255); blue = (int) randomize(0,255); colors[i] = new Color(red,green,blue); } } else if (r < 2.0/3.0) { for (int i = 0; i < degree; i++) { red = (int) randomize(0,255); green = 255; blue = (int) randomize(0,255); colors[i] = new Color(red,green,blue); } } else if (r < 3.0/3.0) { for (int i = 0; i < degree; i++) { red = (int) randomize(0,255); green = (int) randomize(0,255); blue = 255; colors[i] = new Color(red,green,blue); } } return colors; } public static void main(String[] args) { int width = Integer.parseInt(args[0]); int height = Integer.parseInt(args[1]); int contrast = Integer.parseInt(args[2]); double x = Double.parseDouble(args[3]); double y = Double.parseDouble(args[4]); double zoom = Double.parseDouble(args[5]); Picture mandelbrotSet = new Picture(width,height); Color[] colors = createRandomColors(contrast); for (int j = 0; j < width; j++) { for (int i = 0; i < height; i++) { double realPart = x + zoom*j/width; double imaginaryPart = y + zoom*i/height; Complex c = new Complex(realPart,imaginaryPart); int degreeOfDivergence = checkDegreeOfDivergence(c, contrast); Color color = colors[degreeOfDivergence]; mandelbrotSet.set(j,i,color); } } mandelbrotSet.show(); } } [Picture][2] is a simple API written by the authors of the book. I checked my program and it works. Here are a few instances of it: Input: 3840 2160 255 -0.1015 0.833 0.01 Output: [![enter image description here][3]][3] Input 3840 2160 255 -0.2404 0.8354 0.001 Output: [![enter image description here][4]][4] Input: 3840 2160 255 0.1015 -0.633 0.01 Output: [![enter image description here][5]][5] One thing to note: The above pictures are not in the original resolution. Due to size restriction of uploads I took screenshots of the original images. I did not decrease the resolution of the above pictures directly from the command-line because I wanted them to look prettier. One other thing to note: Since blue is my favorite color, they are intentionally in the blue spectrum. Is there any way that I can improve my program? Thanks for your attention. [1]: https://mathworld.wolfram.com/MandelbrotSet.html [2]: https://introcs.cs.princeton.edu/java/stdlib/javadoc/Picture.html [3]: https://i.sstatic.net/dKk5w.jpg [4]: https://i.sstatic.net/oMaNB.jpg [5]: https://i.sstatic.net/XjJYa.png