Implementing adaptive voltage over-scaling: Algorithmic noise tolerance vs. approximate error detection