[GRASS-dev] output precision of r.info and r.univar

Markus Neteler neteler at osgeo.org
Wed Oct 8 03:48:05 EDT 2008


Hi,

to gain more precision when using r.info -r and r.univar -g output in
scripts, I want to suggest this change:



Index: r.info/main.c
===================================================================
--- r.info/main.c       (revision 33591)
+++ r.info/main.c       (working copy)
@@ -330,8 +330,8 @@
                }
            }
            else {
-               fprintf(out, "min=%f\n", zmin);
-               fprintf(out, "max=%f\n", zmax);
+               fprintf(out, "min=%.10f\n", zmin);
+               fprintf(out, "max=%.10f\n", zmax);
            }
        }

Index: r.univar2/stats.c
===================================================================
--- r.univar2/stats.c   (revision 33591)
+++ r.univar2/stats.c   (working copy)
@@ -110,14 +110,14 @@
     if (param.shell_style->answer) {
        fprintf(stdout, "n=%d\n", stats->n);
        fprintf(stdout, "null_cells=%d\n", stats->size - stats->n);
-       fprintf(stdout, "min=%g\n", stats->min);
-       fprintf(stdout, "max=%g\n", stats->max);
-       fprintf(stdout, "range=%g\n", stats->max - stats->min);
-       fprintf(stdout, "mean=%g\n", mean);
-       fprintf(stdout, "mean_of_abs=%g\n", stats->sum_abs / stats->n);
-       fprintf(stdout, "stddev=%g\n", stdev);
-       fprintf(stdout, "variance=%g\n", variance);
-       fprintf(stdout, "coeff_var=%g\n", var_coef);
+       fprintf(stdout, "min=%.10f\n", stats->min);
+       fprintf(stdout, "max=%.10f\n", stats->max);
+       fprintf(stdout, "range=%.10f\n", stats->max - stats->min);
+       fprintf(stdout, "mean=%.10f\n", mean);
+       fprintf(stdout, "mean_of_abs=%.10f\n", stats->sum_abs / stats->n);
+       fprintf(stdout, "stddev=%.10f\n", stdev);
+       fprintf(stdout, "variance=%.10f\n", variance);
+       fprintf(stdout, "coeff_var=%.10f\n", var_coef);
        fprintf(stdout, "sum=%s\n", sum_str);
     }
     else {

--------------
Before:
r.info -r tmp1
min=0.000002
max=75.527772

r.univar -g mymap | grep min | cut -d'=' -f2
2.72222


After:
r.info -r tmp1
min=0.0000020898
max=75.5277723706

r.univar -g mymap | grep min | cut -d'=' -f2
2.7222220898

Any objections?

Markus


More information about the grass-dev mailing list