A bounded-variable least-squares solver based on stable QR updates