[Avida-cvs] [avida-svn] r681 - development/source/main

brysonda@myxo.css.msu.edu brysonda at myxo.css.msu.edu
Mon May 15 20:58:17 PDT 2006


Author: brysonda
Date: 2006-05-15 23:58:17 -0400 (Mon, 15 May 2006)
New Revision: 681

Modified:
   development/source/main/cStats.cc
Log:
Adjust cStats::PrintAverageData to set births and breed true to 0.0 in the event that num_creatures is 0.  This will prevent division by 0.

Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc	2006-05-16 03:37:20 UTC (rev 680)
+++ development/source/main/cStats.cc	2006-05-16 03:58:17 UTC (rev 681)
@@ -423,23 +423,31 @@
   df.WriteComment( "Avida average data" );
   df.WriteTimeStamp();
 
-  df.Write(GetUpdate(),                    "update");
-  df.Write(sum_merit.Average(),            "average merit");
-  df.Write(sum_gestation.Average(),        "average gestation time");
-  df.Write(sum_fitness.Average(),          "average fitness");
-  df.Write(sum_repro_rate.Average(),       "repro rate?");
-  df.Write(sum_size.Average(),             "average size");
-  df.Write(sum_copy_size.Average(),        "average copied size");
-  df.Write(sum_exe_size.Average(),         "average executed size");
-  df.Write(sum_abundance.Average(),        "average abundance?");
-  df.Write(static_cast<double>(num_births / num_creatures),
-           "proportion of organisms that gave birth in this update");
-  df.Write(static_cast<double>(num_breed_true / num_creatures),
-	   "proportion of breed true organisms");
-  df.Write(sum_genotype_depth.Average(),   "average genotype depth");
-  df.Write(sum_generation.Average(),       "average generation");
-  df.Write(sum_neutral_metric.Average(),   "average neutral metric");
-  df.Write(sum_lineage_label.Average(),    "average lineage label");
+  df.Write(GetUpdate(),                   "update");
+  df.Write(sum_merit.Average(),           "average merit");
+  df.Write(sum_gestation.Average(),       "average gestation time");
+  df.Write(sum_fitness.Average(),         "average fitness");
+  df.Write(sum_repro_rate.Average(),      "repro rate?");
+  df.Write(sum_size.Average(),            "average size");
+  df.Write(sum_copy_size.Average(),       "average copied size");
+  df.Write(sum_exe_size.Average(),        "average executed size");
+  df.Write(sum_abundance.Average(),       "average abundance?");
+  
+  // The following causes births and breed true to default to 0.0 when num_creatures is 0
+  double ave_births = 0.0;
+  double ave_breed_true = 0.0;
+  if (num_creatures > 0) {
+    const double d_num_creatures = static_cast<double>(num_creatures);
+    ave_births = static_cast<double>(num_births) / d_num_creatures;
+    ave_breed_true = static_cast<double>(num_breed_true) / d_num_creatures;
+  }
+  df.Write(ave_births,                    "proportion of organisms that gave birth in this update");
+  df.Write(ave_breed_true,                "proportion of breed true organisms");
+  
+  df.Write(sum_genotype_depth.Average(),  "average genotype depth");
+  df.Write(sum_generation.Average(),      "average generation");
+  df.Write(sum_neutral_metric.Average(),  "average neutral metric");
+  df.Write(sum_lineage_label.Average(),   "average lineage label");
   df.Write(rave_true_replication_rate.Average(),
 	   "true replication rate (based on births/update, time-averaged)");
   df.Endl();




More information about the Avida-cvs mailing list