triangularInvCdf function

double triangularInvCdf(
  1. num p,
  2. num xMin,
  3. num xMax
)

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

The mean of the probability density occurs at (xMax - xMin) / 2 and the probability density function is symmetric w.r.t its mean.

  • p: A probability with 0 <= p < 1.
  • xMin: The left margin of the domain of the density function.
  • xMax: The right margin of the domain of the density function.

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

Implementation

double triangularInvCdf(num p, num xMin, num xMax) {
  if (p < 0 || p > 1) {
    throw ErrorOfType<InvalidFunctionParameter>(
      message: 'Error in function triangularInvCdf($p, $xMin, $xMax)',
      invalidState: 'Probability p = $p.',
      expectedState: '0 <= p < 1',
    );
  }
  if (xMin >= xMax) {
    throw ErrorOfType<InvalidFunctionParameter>(
      message: 'Error in triangularInvCdf($p, $xMin, $xMax)',
      invalidState: 'xMin: $xMin >= xMax: $xMax',
      expectedState: 'xMin < xMax',
    );
  }
  final range = xMax - xMin;
  if (p < 0.5) {
    return xMin + range * sqrt(p / 2);
  } else {
    return xMax - range * sqrt((1.0 - p) / 2);
  }
}