Exact and Approximate Squarers for Error-Tolerant Applications