math.pc (plain text)




/* Math */

pi()
{  return 3.14592653589793238463; }

e()
{  return 2.71828182845904523536; }

abs(float x)
{ if (x < 0) return -x;
          else return  x;
}

sinh(float x)
{ float u;
  u = exp(x);
  return 0.5 * (u - 1/u);
}

cosh(float x)
{ float u;
  u = exp(x);
  return 0.5 * (u + 1/u);
}

tanh(float x)
{ float u;
  u = exp(2 * x);
  return  (u - 1)/(u + 1);
}

asinh(float x)
{  return log(x + sqrt(x * x + 1)); }

acosh(float x)
{  if (x < 1) return;
  return log(x + sqrt(x * x - 1)); 
}

atanh(float x)
{ if ((x <= -1) || (x >= 1)) return;
  return 0.5 * log((1 + x)/(1 - x));
}

fac(float x)
{ float u;
  if (x >= 1) u = x * fac(x - 1);
  else {
    u = (((((((0.035867343 *x - 0.193527818) * x +
           0.482199394) * x - 0.756704078) * x +
           0.918206857) * x - 0.897056937) * x +
           0.988205891) * x - 0.577191652) * x + 1;
  }
  return u;
}