docs: @Nullable
    public com.simiacryptus.util.data.ScalarStatistics add(@javax.annotation.Nonnull final double... values) {
      double v1 = 0;
      double v2 = 0;
      double vmax = max;
      double vmin = max;
      int z = 0;
      double vlog = 0;
      int n = 0;
      int p = 0;
      for (final double v : values) {
        v1 += v;
        v2 += v * v;
        vmin = Math.min(min, v);
        vmax = Math.max(max, v);
        if (Math.abs(v) < com.simiacryptus.util.data.ScalarStatistics.zeroTol) {
          z++;
        }
        else {
          if (v < 0) {
            n++;
          }
          else {
            p++;
          }
          vlog += Math.log10(Math.abs(v));
        }
      }
      synchronized (this) {
        sum0 += values.length;
        sum1 += v1;
        sum2 += v2;
        min = Math.min(min, vmin);
        max = Math.max(max, vmax);
        negatives += n;
        positives += p;
        sumLog += vlog;
        zeros += z;
      }
      return this;
    }