  In order to solve the time-independent three-dimensional Schr\"odinger
equation, one can transform the time-dependent Schr\"odinger equation to
imaginary time and use a parallelized iterative method to obtain the full
three-dimensional eigenstates and eigenvalues on very large lattices. In the
case of the non-relativistic Schr\"odinger equation, there exists a publicly
available code called quantumfdtd which implements this algorithm. In this
paper, we (a) extend the quantumfdtd code to include the case of the
relativistic Schr\"odinger equation and (b) add two optimized FFT-based kinetic
energy terms for non-relativistic cases. The new kinetic energy terms (two
non-relativistic and one relativistic) are computed using the parallelized Fast
Fourier Transform (FFT) algorithm provided by the FFTW library. The resulting
quantumfdtd v3 code, which is publicly released with this paper, is backwards
compatible with version 2, supporting explicit finite differences schemes in
addition to the new FFT-based schemes. Finally, the original code has been
extended so that it supports arbitrary external file-based potentials and the
option to project out distinct parity eigenstates from the solutions. Herein,
we provide details of the quantumfdtd v3 implementation, comparisons and tests
of the three new kinetic energy terms, and code documentation.
