Hi Paul,

On 10/30/2017 9:33 PM, Paul Sandoz wrote:
Hi,

On 30 Oct 2017, at 17:19, Joseph D. Darcy <joe.da...@oracle.com> wrote:

Hello,

Is it intentional that "DoubleSummaryStatistics" is used in a sentence like

   91      * @apiNote
   92      * The enforcement of argument correctness means that the retrieved 
set of
   93      * recorded values obtained from a {@code DoubleSummaryStatistics} 
source

in all three types being updated?

No, copy’n’paste error. Fixed.


For the code in the constructor, if you don't want to have something like an 
explicit switch on Long.signum(count), I'd prefer to see at least a comment like

// Use default field values if count == 0

Done.


For the double case, I'd recommend future work change the new constructor to

     DoubleSummaryStatistics(long count, double min, double max, double sum, 
double... additionalSum)

where the final argument could be used to convey additional state.

Ok.


For the double case, if a NaN is used than max and min will be NaN. Therefore, 
I'd recommend change the correctness constraint for that type to

     <li>{@code min} &le; {@code max} || (isNaN(min) && isNaN(max)) </li>

with an analogous update to the code.

In that case we need to double (sorry) down on the NaNs and include sum as well:

*   <li>{@code (min <= max && !isNaN(sum)) || (isNaN(min) && isNaN(max) && 
isNaN(sum))}

A more complete test for the numerical consistency conditions would be something like

    min <= sum/count  <= max

However, that would require a bit of thought due to potential round-off so this might not be worth the complexity trade-off. (If any of min, sum, and max were NaN, the comparisons would be false.)

Cheers,

-Joe


Reply via email to