More consistent excess precision handling

The current code aims to support FLT_EVAL_METHOD!=0 targets (such as
i386 with x87 fpu or m68k) assuming appropriate narrowing eval functions
are defined for them.  But the narrowing eval functions were not used
consistently: the return statement may not guarantee narrowing (e.g.
that was the C99 behaviour which got changed in C11 annex F) so we
should use the narrowing eval_as_ functions at return statements too.

Results should be correct if narrowing only happens at eval_as_ calls.
On most targets this change has no effect because eval_as_ is a noop.
Most math implementations that care about excess precision already
compile in a mode that narrows at returns so this change is not
necessary for them, just better documents the assumptions.
12 files changed
tree: 33c966ee96c845a40dc64ecf3bac969e76c69bc1
  1. auxiliary/
  2. math/
  3. test/
  4. .gitignore
  5. config.mk.dist
  6. LICENSE
  7. Makefile
  8. README