According to the NIST about 80% of the time of software developers is spent on finding and fixing bugs. Not that all bugs are found. Think about it. This means that you could write the program five times over if you didn't mind that it had errors. That got me thinking.
What if we would design the program, decide which subroutines we want and then write the program three times. We can then run the three programs and compare the results. If the results of a subroutine are the same, everything is ok. If they are different, probably two of the routines give one answer, then the one with the different answer probably is faulty. We don't have to find the error, we could just take one of the other two. No need to write test sets, or scanning the code for what goes wrong.