public static function Ab(array $pnat, array $v, $s, $bm1, array &$ppr) {
    $i;
    $pdv;
    $w1;
    $w2;
    $r2;
    $w;
    $p = [];
    $r;

    $pdv = static::Pdp($pnat, $v);
    $w1  = 1.0 + $pdv / (1.0 + $bm1);
    $w2  = SRS / $s;
    $r2  = 0.0;
    for ($i = 0; $i < 3; $i++) {
      $w     = $pnat[$i] * $bm1 + $w1 * $v[$i] + $w2 * ($v[$i] -
              $pdv * $pnat[$i]);
      $p[$i] = $w;
      $r2    = $r2 + $w * $w;
    }
    $r = sqrt($r2);
    for ($i = 0; $i < 3; $i++) {
      $ppr[$i] = $p[$i] / $r;
    }
  }