[Coin-discuss] MaxCut build

Lou Hafer lou at cs.sfu.ca
Thu Aug 3 13:12:34 EDT 2006


Michele,

	This makes things more difficult, since I can't reproduce this error.
But I can give you some suggestions on where to look next.

	In CoinFloatEqual.hpp, line 52, you'll see

 if (CoinIsnan(f1) || CoinIsnan(f2)) return false ;

Superficially, it seems isnan isn't even mentioned, so why the complaint that
isnan is undeclared?

	Coin tries to isolate system dependencies in a few .hpp files. One of
the troublesome areas is IEEE floating point support, including the functions
finite and isnan. The relevant include file is Coin/include/CoinFinite.hpp.
When you look, you'll see individual sections for each system. The name
CoinIsnan will be defined to the appropriate name for the system. The section
for cygwin is down around line 90. The name CoinIsnan is defined to the name
isnan. To confirm that this is the relevant definition, try changing

# define CoinIsnan  isnan

to

# define CoinIsnan  some_nonsense_name

and recompiling. The error should be `some_nonsense_name undeclared'. If you do 
not see this error, then the symbol __CYGWIN32__ is undefined, and the trouble
lies in a different direction.

	The likely cause of the error message `isnan undeclared' is that the
proper system include file is not being pulled in. CoinFinite expects to find a
declaration for isnan in one of the system include files mentioned at the top of
the file --- algorithm, cmath, or cfloat.  Apparently it's someplace else in
your system.  The first thing to try is `man isnan', to see if the man page for
isnan has any useful advice.  Often it will specify the include file that
declares the function.  If the man page specifies an include file, try adding a
#include line inside the cygwin section, as

#if defined(__CYGWIN32__)
# include <the_include_file_from_the_man_page>
# define CoinFinite finite
# define CoinIsnan  isnan
#endif

	Let me know what you find, and we'll go from there.
	
							Lou




More information about the Coin-discuss mailing list