Document: WG14 N1321


Split FLT_EVAL_METHOD into operations and constants


Submitter: Fred Tydeman (USA)
Submission Date: 2008-07-13
Subject: Split FLT_EVAL_METHOD into operations and constants

Currently, FLT_EVAL_METHOD covers two cases: (translation time) floating constant conversion and (runtime) operations. Some existing implementations do different things for those two cases. For example, evaluate constants to their type (as if FLT_EVAL_METHOD is 0) and evaluate operations to long double (as if FLT_EVAL_METHOD is 2). In that case, the implementation has to define FLT_EVAL_METHOD as -1 (meaning indeterminable) or some other negative value. This provides no useful information to the user.

I believe it would help mathematical users the most if this two uses were split into two macro symbols. I believe that most programs care most about runtime operations, so the existing FLT_EVAL_METHOD should cover just the operations case, and a new symbol should be used for floating constants.

I propose FLT_CONST_METHOD to cover the floating constants.

This would impact paragraph 8 of 5.2.4.2.2 Characteristics of floating types <float.h>. Basiclly, duplicate paragraph 8 with new one being 9, remove mentions of "floating constants" from the the existing paragraph 8, and remove "operations" from the new paragraph 9.

An alternative is to remove FLT_EVAL_METHOD and create two new macro symbols.