diff --git a/squiggle_more.c b/squiggle_more.c index a67054a..c167daa 100644 --- a/squiggle_more.c +++ b/squiggle_more.c @@ -276,18 +276,13 @@ void array_print_histogram(double* xs, int n_samples, int n_bins) { double bin_start = min_value + i * bin_width; double bin_end = bin_start + bin_width; - if(bin_width < 0.01){ - printf(" [%4.4f, %4.4f", bin_start, bin_end); - } else if(bin_width < 0.1){ - printf(" [%4.3f, %4.3f", bin_start, bin_end); - } else if(bin_width < 1){ - printf(" [%4.2f, %4.2f", bin_start, bin_end); - } else if(bin_width < 10){ - printf(" [%4.1f, %4.1f", bin_start, bin_end); - } else { - printf(" [%4.0f, %4.0f", bin_start, bin_end); + int decimalPlaces = 1; + if((0 < bin_width) && (bin_width < 1)){ + int magnitude = (int) floor(log10(bin_width)); + decimalPlaces = -magnitude; + decimalPlaces = decimalPlaces > 10 ? 10 : decimalPlaces; } - + printf(" [%*.*f, %*.*f", 4+decimalPlaces, decimalPlaces, bin_start, 4+decimalPlaces, decimalPlaces, bin_end); char interval_delimiter = ')'; if(i == (n_bins-1)){ interval_delimiter = ']'; // last bucket is inclusive