Browse Source

Fixed a bug in 'calcPiTau'. It would fail for nmax = 1.

Ovidio Peña Rodríguez 10 years ago
parent
commit
e9c815618d
1 changed files with 7 additions and 5 deletions
  1. 7 5
      nmie.cc

+ 7 - 5
nmie.cc

@@ -464,11 +464,13 @@ void calcPiTau(int nmax, double Theta, std::vector<double>& Pi, std::vector<doub
   Pi[0] = 1.0;
   Tau[0] = cos(Theta);
   // Calculate the actual values
-  Pi[1] = 3*Tau[0]*Pi[0];
-  Tau[1] = 2*Tau[0]*Pi[1] - 3*Pi[0];
-  for (n = 2; n < nmax; n++) {
-    Pi[n] = ((n + n + 1)*Tau[0]*Pi[n - 1] - (n + 1)*Pi[n - 2])/n;
-    Tau[n] = (n + 1)*Tau[0]*Pi[n] - (n + 2)*Pi[n - 1];
+  if (nmax > 1) {
+    Pi[1] = 3*Tau[0]*Pi[0];
+    Tau[1] = 2*Tau[0]*Pi[1] - 3*Pi[0];
+    for (n = 2; n < nmax; n++) {
+      Pi[n] = ((n + n + 1)*Tau[0]*Pi[n - 1] - (n + 1)*Pi[n - 2])/n;
+      Tau[n] = (n + 1)*Tau[0]*Pi[n] - (n + 2)*Pi[n - 1];
+    }
   }
 }