Changeset 1026 for cpp/frams


Ignore:
Timestamp:
11/26/20 01:10:49 (3 years ago)
Author:
Maciej Komosinski
Message:

Workarounds for Embarcadero 10.3u3 compiler bug and incompatibility

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/model/geometry/geometryutils.cpp

    r810 r1026  
    340340                y = b * sqrt(sqrt_arg);
    341341        else
     342#ifdef __BORLANDC__ //compiler bug: embarcadero 10.3u3 raises "invalid fp operation exception" even when the execution does not enter the "signaling_NaN()" branch of "if" (i.e. when sqrt_arg >= 0) so we avoid using signaling_NaN().
     343                y = std::numeric_limits<double>::max();
     344#else
    342345                y = std::numeric_limits<double>::signaling_NaN();
    343         //This function is called from MeshBuilder::EllipsoidSurface::findNextAreaEdgeAndPhase().
     346#endif
     347        //This function is called from MeshBuilder::EllipsoidSurface::findNextAreaEdgeAndPhase().
    344348        //y=NaN set above co-occurs with the value of x that doesn't meet the condition tested in findNextAreaEdgeAndPhase().
    345349        //If the condition is true (i.e., x exceeds the allowed range), entirely new values of x and y are set in the next step anyway.
Note: See TracChangeset for help on using the changeset viewer.