dlarmm function

double dlarmm(
  1. double ANORM,
  2. double BNORM,
  3. double CNORM
)

Implementation

double dlarmm(
  final double ANORM,
  final double BNORM,
  final double CNORM,
) {
  const ONE = 1.0, HALF = 0.5, FOUR = 4.0;
  double BIGNUM, SMLNUM;

  // Determine machine dependent parameters to control overflow.

  SMLNUM = dlamch('Safe minimum') / dlamch('Precision');
  BIGNUM = (ONE / SMLNUM) / FOUR;

  // Compute a scale factor.

  if (BNORM <= ONE) {
    if (ANORM * BNORM > BIGNUM - CNORM) {
      return HALF;
    }
  } else {
    if (ANORM > (BIGNUM - CNORM) / BNORM) {
      return HALF / BNORM;
    }
  }
  return ONE;
}