src/Marando/AstroDate/AstroDate.php
public function sidereal($mode = 'a', Angle $lon = null)
    {
        // Get UT1 time
        $ut  = $this->copy()->toUT1();
        $uta = $ut->jd;
        $utb = $ut->dayFrac;
        $ut  = null;

        // Get TT time
        $tt  = $this->copy()->toTT();
        $tta = $tt->jd;
        $ttb = $tt->dayFrac;
        $tt  = null;

        // Compute either GMST or GAST
        $st;
        if ($mode == 'a') {
            $strad = IAU::Gst06a($uta, $utb, $tta, $ttb);
        } else {
            $strad = IAU::Gmst06($uta, $utb, $tta, $ttb);
        }

        // Add longitude if relevant
        if ($lon) {
            $st = Angle::rad($strad)->add($lon)->norm()->toTime();
        } else {
            $st = Angle::rad($strad)->toTime();
        }

        // Return as hours
        return $st;
    }
public function sidereal($mode = 'a', Angle $lon = null)
    {
        // Get UT1 time
        $ut  = $this->copy()->toUT1();
        $uta = $ut->jd;
        $utb = $ut->dayFrac;
        $ut  = null;

        // Get TT time
        $tt  = $this->copy()->toTT();
        $tta = $tt->jd;
        $ttb = $tt->dayFrac;
        $tt  = null;

        // Compute either GMST or GAST
        $st;
        if ($mode == 'a') {
            $strad = IAU::Gst06a($uta, $utb, $tta, $ttb);
        } else {
            $strad = IAU::Gmst06($uta, $utb, $tta, $ttb);
        }

        // Add longitude if relevant
        if ($lon) {
            $st = Angle::rad($strad)->add($lon)->norm()->toTime();
        } else {
            $st = Angle::rad($strad)->toTime();
        }

        // Return as hours
        return $st;
    }
Finds the sidereal time of this intsance

@param type  $mode Type of sidereal time... (a = apparent, m = mean)
@param Angle $lon  If a longitude is supplied, finds local sidereal time,
otherwise returns sidereal time at Greenwich