Skip to content

FSolveBump

Description

FSolveBump is the entry point the random-error functions use to get Fleishman coefficients for a requested skewness and kurtosis. It calls FSolveLadder, and if no valid solution exists at the exact kurtosis (which happens just above the minimum possible kurtosis) it retries with a slightly larger kurtosis, up to 15 times.

Used by: MCM(_V), MCM_CI(_V), MCM_error(_V), rerror, rerrorV

Calls: FSolveLadder

Source Code

FSolveBump = LAMBDA(
    skew,       // requested skewness
    kurt,       // starting kurtosis guess, already >= the empirical minimum
    [bump], [attempt],     // for recursion
  LET(
    attempt0, IF(ISOMITTED(attempt), 0, attempt),
    bump0, IF(ISOMITTED(bump), MAX(0.02, 0.05 * kurt), bump),
    coeffs, FSolveLadder(skew, kurt),
    valid, INDEX(coeffs, 1, 6),
    IF(
      OR(valid = 1, attempt0 >= 15),
      coeffs,
      FSolveBump(skew, kurt + bump0, bump0 * 2, attempt0 + 1)
    )
  )
);