commit d78a5cd18286522b998bf287c4af7f31cade60f6
parent c676a22ba8243998edaa9e323962f717f87f4d00
Author: NunoSempere <nuno.sempere@protonmail.com>
Date: Wed, 31 Jan 2024 15:17:55 +0100
tweak: add decimal points tweak to original histogram function
Diffstat:
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git 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