org-plot.el: avoid arithmetic overflow error

* lisp/org-plot.el (org--plot/values-stats): A set of numbers with the
same value (i.e. 0 range) should not produce an arithmetic overflow
error.

This error was caused by taking the log of 0 (when the range is
0).  This is mitigated by explicit checking against this case.
This commit is contained in:
TEC 2020-09-05 21:05:36 +08:00 committed by Bastien
parent 1ac45d76e8
commit c2fdf424a6
1 changed files with 6 additions and 3 deletions

View File

@ -193,10 +193,13 @@ values, namely regarding the range."
(let* ((minimum (or hard-min (apply #'min nums)))
(maximum (or hard-max (apply #'max nums)))
(range (- maximum minimum))
(rangeOrder (ceiling (- 1 (log10 range))))
(rangeOrder (if (= range 0) 0
(ceiling (- 1 (log10 range)))))
(range-factor (expt 10 rangeOrder))
(nice-min (/ (float (floor (* minimum range-factor))) range-factor))
(nice-max (/ (float (ceiling (* maximum range-factor))) range-factor)))
(nice-min (if (= range 0) (car nums)
(/ (float (floor (* minimum range-factor))) range-factor)))
(nice-max (if (= range 0) (car nums)
(/ (float (ceiling (* maximum range-factor))) range-factor))))
`(:min ,minimum :max ,maximum :range ,range
:range-factor ,range-factor
:nice-min ,nice-min :nice-max ,nice-max :nice-range ,(- nice-max nice-min))))