public static function Bp00($date1, $date2, array &$rb, array &$rp,
          array &$rbp) {

    /* J2000.0 obliquity (Lieske et al. 1977) */
    $EPS0 = 84381.448 * DAS2R;

    $t;
    $dpsibi;
    $depsbi;
    $dra0;
    $psia77;
    $oma77;
    $chia;
    $dpsipr;
    $depspr;
    $psia;
    $oma;
    $rbw = [];

    /* Interval between fundamental epoch J2000.0 and current date (JC). */
    $t = (($date1 - DJ00) + $date2) / DJC;

    /* Frame bias. */
    IAU::Bi00($dpsibi, $depsbi, $dra0);

    /* Precession angles (Lieske et al. 1977) */
    $psia77 = (5038.7784 + (-1.07259 + (-0.001147) * $t) * $t) * $t * DAS2R;
    $oma77  = $EPS0 + ((0.05127 + (-0.007726) * $t) * $t) * $t * DAS2R;
    $chia   = ( 10.5526 + (-2.38064 + (-0.001125) * $t) * $t) * $t * DAS2R;

    /* Apply IAU 2000 precession corrections. */
    IAU::Pr00($date1, $date2, $dpsipr, $depspr);
    $psia = $psia77 + $dpsipr;
    $oma  = $oma77 + $depspr;

    /* Frame bias matrix: GCRS to J2000.0. */
    IAU::Ir($rbw);
    IAU::Rz($dra0, $rbw);
    IAU::Ry($dpsibi * sin($EPS0), $rbw);
    IAU::Rx(-$depsbi, $rbw);
    IAU::Cr($rbw, $rb);

    /* Precession matrix: J2000.0 to mean of date. */
    IAU::Ir($rp);
    IAU::Rx($EPS0, $rp);
    IAU::Rz(-$psia, $rp);
    IAU::Rx(-$oma, $rp);
    IAU::Rz($chia, $rp);

    /* Bias-precession matrix: GCRS to mean of date. */
    IAU::Rxr($rp, $rbw, $rbp);

    return;
  }