Specification

  • r == sqrt(x) & x >= 0 <=> r^2 == x

Implementation

  float sqrt( float x ) {
  require( x >= 0 );
  const float eps = 0.0001;
  float guess = 1;
  while( abs(x - guess * guess ) ) > eps ) 
  	guess = ( guess + x / guess ) / 2;
  promise( guess * guess - x <= eps );
  return guess;
  }
  

slide: Specification and implementation