Hypercomplex analysis