User written Box-Cox type transformation function

Thanks for sending a working solution. A simpler version with less nesting and fewer assignments is:

   real h(real a, real b) {
     return (pow(a, b) - 1) / b;
   }

   real g(real y, real p) {
    real eps = 0.005;
    if (y >= 0) {
      if (abs(p) <= eps)
        return log1p(y);
     return h(1 + y, p);
    }
    if (p >= 2 - eps && p <= 2 + eps)
      return -log1m(y);
    return -h(1 - y, 2 - p);
  }

It avoids recomputation of 2 - p into the bargain.

2 Likes