[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