https://courses.grainger.illinois.edu/ece447/sp2025/secure/lab1/lab03.pdf