|  | @@ -543,14 +543,15 @@ namespace nmie {
 | 
	
		
			
				|  |  |  			       std::vector<std::complex<double> >& D3) {
 | 
	
		
			
				|  |  |      // Downward recurrence for D1 - equations (16a) and (16b)
 | 
	
		
			
				|  |  |      D1[nmax_] = std::complex<double>(0.0, 0.0);
 | 
	
		
			
				|  |  | +    const std::complex<double> zinv = 1.0/z;
 | 
	
		
			
				|  |  |      for (int n = nmax_; n > 0; n--) {
 | 
	
		
			
				|  |  | -      D1[n - 1] = double(n)/z - 1.0/(D1[n] + double(n)/z);
 | 
	
		
			
				|  |  | +      D1[n - 1] = double(n)*zinv - 1.0/(D1[n] + double(n)*zinv);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      // Upward recurrence for PsiZeta and D3 - equations (18a) - (18d)
 | 
	
		
			
				|  |  |      PsiZeta_[0] = 0.5*(1.0 - std::complex<double>(cos(2.0*z.real()), sin(2.0*z.real()))*exp(-2.0*z.imag()));
 | 
	
		
			
				|  |  |      D3[0] = std::complex<double>(0.0, 1.0);
 | 
	
		
			
				|  |  |      for (int n = 1; n <= nmax_; n++) {
 | 
	
		
			
				|  |  | -      PsiZeta_[n] = PsiZeta_[n - 1]*(static_cast<double>(n)/z - D1[n - 1])*(static_cast<double>(n)/z- D3[n - 1]);
 | 
	
		
			
				|  |  | +      PsiZeta_[n] = PsiZeta_[n - 1]*(static_cast<double>(n)*zinv - D1[n - 1])*(static_cast<double>(n)*zinv- D3[n - 1]);
 | 
	
		
			
				|  |  |        D3[n] = D1[n] + std::complex<double>(0.0, 1.0)/PsiZeta_[n];
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 |