public static function Pn(array $p, &$r, array &$u) {
    $w;

    /* Obtain the modulus and test for zero. */
    $w = static::Pm($p);
    if ($w == 0.0) {

      /* Null vector. */
      static::Zp($u);
    }
    else {

      /* Unit vector. */
      static::Sxp(1.0 / $w, $p, $u);
    }

    /* Return the modulus. */
    $r = $w;

    return;
  }