triangularCdf function

double triangularCdf(
  1. num x,
  2. num xMin,
  3. num xMax
)

Triangular cumulative probability density function with non-zero support over the interval (xMin, xMax).

The maximum of the probability density occurs at (xMax - xMin) / 2.

Throws an error of type ErrorOfType<InvalidFunctionParameter> if xMin >= xMax.

Implementation

double triangularCdf(num x, num xMin, num xMax) {
  if (xMin >= xMax) {
    throw ErrorOfType<InvalidFunctionParameter>(
      message: 'Error in triangularCdf($x, $xMin, $xMax)',
      invalidState: 'min: $xMin >= max: $xMax',
      expectedState: 'min < max',
    );
  }
  if (x <= xMin) return 0.0;
  if (x >= xMax) return 1.0;
  final range = xMax - xMin;
  final factor = 2.0 / (range * range);
  if (x > xMin && x < xMin + 0.5 * range) {
    return factor * (x - xMin) * (x - xMin);
  } else {
    return 1.0 - factor * (x - xMax) * (x - xMax);
  }
}