Added dup methods to complex numbers, and pulled caching into the dedicated module for reuse