Computing non-Markovian queues using hyperexponential distributions