Source: https://www.uvm.edu/~tdupuy/complexspring2017/hw03-sol.pdf