Precisely quantifying software information flow