checkedint call removal

via Digitalmars-d digitalmars-d at puremagic.com
Sun Aug 3 12:27:54 PDT 2014


On Saturday, 2 August 2014 at 21:36:11 UTC, Tobias Pankrath wrote:
> Don't you agree, that a program that throws AssertError in non 
> -release* build is broken?
>
> * this is not the opposite of debug

Let's go to the definitions:

Total correctness:
The program can be proved to always terminate normally and return 
the correct result.

Total correctness is extremely difficult to achieve on a regular 
computer.

Partial correctness:
The program can be proved to always return the correct result if 
it terminates normally.

Partial correctness is what you should aim for. What goes on if 
it does not terminate depends on many factors. E.g. the FDIV bug 
in the Intel CPU:

http://en.wikipedia.org/wiki/Pentium_FDIV_bug

The FDIV bug is a good example that extensive testing is not 
enough and that you need either exhaustive testing or formal 
proofs to assert correctness.

Equally clearly, the FDIV bug is not the result of an incorrect 
program. It is the result of an incorrect "axiom" in the CPU (the 
execution environment).


More information about the Digitalmars-d mailing list