// @(#)$Id: answer3.h,v 1.2 1997/06/03 23:06:50 leavens Exp $

extern int isqrt(int i) throw();
//@ behavior {
//@   requires i >= 0;
//@   ensures result >= 0
//@ 	  /\ (result * result) <= i  /\  i < ((result + 1) * (result + 1));
//@ }

/*
 This answer is just like answer1, but we've included the C++ keyword
 "extern" in the line the declares the interface.
 This C++ keyword means that the function isqrt has external linkage.
 This convention is followed by most traits in the manual,
 because we think it's good practice to use extern in C++ header files.
 However, it's not a big deal, and so we omit it in (at least the first few)
 exercises.

 In C++, it is almost equivalent to
 leave off the "extern" in such a declaration.
 The only time it would not be equivalent is if the function isqrt
 had already been declared "static", then this redeclaration would
 also be static.
*/

