[Coin-discuss] MaxCut build

Matthew Saltzman mjs at ces.clemson.edu
Thu Aug 3 15:16:27 EDT 2006


On Thu, 3 Aug 2006, Marco Tacconi wrote:

> Hi, in the past I had a problem with `_isnan' and `_finite' undeclared, but 
> in the MinGW environment.
> See http://list.coin-or.org/pipermail/coin-discuss/2006-May/002043.html
>
> The problem was a "-ansi" flag.

In gcc-4.1, it may be that the -c99 flag is required to get isnan() 
defined in math.h or cmath headers.

>
> Bye.
>
> Marco Tacconi
>
> Lou Hafer wrote:
>> 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
>> 
>> _______________________________________________
>> Coin-discuss mailing list
>> Coin-discuss at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/coin-discuss
>> 
>
> _______________________________________________
> Coin-discuss mailing list
> Coin-discuss at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-discuss
>

-- 
 		Matthew Saltzman

Clemson University Math Sciences
mjs AT clemson DOT edu
http://www.math.clemson.edu/~mjs



More information about the Coin-discuss mailing list