fmodl: Fix last commit.
remainder, remainderf, remainderl: Fix computation for large quotients.

* lib/remainder.c: Completely rewritten.
* lib/remainderf.c (remainderf): Use implementation of remainder.c with
USE_FLOAT.
* lib/remainderl.c (remainderl): Use implementation of remainder.c with
USE_LONG_DOUBLE.
* modules/remainder (Depends-on): Add isfinite, signbit, fabs, fmod,
isnand, isinf. Remove round, fma.
* modules/remainderf (Files): Add lib/remainder.c.
(Depends-on): Add isfinite, signbit, fabsf, fmodf, isnanf, isinf.
Remove roundf, fmaf.
* modules/remainderl (Files): Add lib/remainder.c.
(Depends-on): Add float, isfinite, signbit, fabsl, fmodl, isnanl,
isinf. Remove roundl, fmal.
* m4/remainder.m4 (gl_FUNC_REMAINDER): Update computation of
REMAINDER_LIBM.
* m4/remainderf.m4 (gl_FUNC_REMAINDERF): Update computation of
REMAINDERF_LIBM.
* m4/remainderl.m4 (gl_FUNC_REMAINDERL): Update computation of
REMAINDERL_LIBM.
remainder* tests: More tests.

* tests/test-remainder.h: New file, based on tests/test-fmod.h.
* tests/test-remainder.c: Include <float.h> and test-remainder.h.
(main): Invoke test_function.
* tests/test-remainderf.c: Include <float.h> and test-remainder.h.
(main): Invoke test_function.
* tests/test-remainderl.c: Include <float.h> and test-remainder.h.
(main): Invoke test_function.
* modules/remainder-tests (Files): Add tests/test-remainder.h,
tests/randomd.c.
(Makefile.am): Add randomd.c to test_remainder_SOURCES.
* modules/remainderf-tests (Files): Add tests/test-remainder.h,
tests/randomf.c.
(Makefile.am): Add randomf.c to test_remainderf_SOURCES.
* modules/remainderl-tests (Files): Add tests/test-remainder.h,
tests/randoml.c.
(Depends-on): Add 'float'.
(Makefile.am): Add randoml.c to test_remainderl_SOURCES.
sqrt* tests: More tests.

* tests/test-sqrt.h: New file.
* tests/test-sqrt.c: Include <float.h> and test-sqrt.h.
(main): Invoke test_function.
* tests/test-sqrtf.c: Include <float.h> and test-sqrt.h.
(main): Invoke test_function.
* tests/test-sqrtl.c: Include <float.h> and test-sqrt.h.
(main): Invoke test_function.
* modules/sqrt-tests (Files): Add tests/test-sqrt.h, tests/randomd.c.
(Makefile.am): Add randomd.c to test_sqrt_SOURCES.
* modules/sqrtf-tests (Files): Add tests/test-sqrt.h, tests/randomf.c.
(Makefile.am): Add randomf.c to test_sqrtf_SOURCES.
* modules/sqrtl-tests (Files): Add tests/test-sqrt.h, tests/randoml.c.
(Depends-on): Add 'float'.
(Makefile.am): Add randoml.c to test_sqrtl_SOURCES.
sqrt* tests: More tests.
sqrt* tests: Rename local variable.
fpucw: Doc about FreeBSD.

* lib/fpucw.h: Mention FreeBSD in comments.
hypot* tests: More tests.

* tests/test-hypot.h: New file, partially extracted from
tests/test-hypotl.c.
* tests/test-hypot.c: Include test-hypot.h.
(main): Invoke test_function.
* tests/test-hypotf.c: Include test-hypot.h.
(main): Invoke test_function.
* tests/test-hypotl.c: Include fpucw.h and test-hypot.h.
(main): Invoke BEGIN_LONG_DOUBLE_ROUNDING and test_function.
* modules/hypot-tests (Files): Add tests/test-hypot.h, tests/randomd.c.
(Makefile.am): Add randomd.c to test_hypot_SOURCES.
* modules/hypotf-tests (Files): Add tests/test-hypot.h,
tests/randomf.c.
(Makefile.am): Add randomf.c to test_hypotf_SOURCES.
* modules/hypotl-tests (Files): Add tests/test-hypot.h,
tests/randoml.c.
(Depends-on): Add 'fpucw', 'float'.
(Makefile.am): Add randoml.c to test_hypotl_SOURCES.
cbrt* tests: More tests.

* tests/test-cbrt.h: New file.
* tests/test-cbrt.c: Include <float.h> and test-cbrt.h.
(main): Invoke test_function.
* tests/test-cbrtf.c: Include <float.h> and test-cbrt.h.
(main): Invoke test_function.
* tests/test-cbrtl.c: Include <float.h> and test-cbrt.h.
(main): Invoke test_function.
* modules/cbrt-tests (Files): Add tests/test-cbrt.h, tests/randomd.c.
(Makefile.am): Add randomd.c to test_cbrt_SOURCES.
* modules/cbrtf-tests (Files): Add tests/test-cbrt.h, tests/randomf.c.
(Makefile.am): Add randomf.c to test_cbrtf_SOURCES.
* modules/cbrtl-tests (Files): Add tests/test-cbrt.h, tests/randoml.c.
(Depends-on): Add 'float'.
(Makefile.am): Add randoml.c to test_cbrtl_SOURCES.
expl: Fix precision of computed result.

* lib/expl.c: Completely rewritten.
* modules/expl (Depends-on): Add isnanl, roundl, ldexpl. Remove floorl.
(Maintainer): Add me.
* m4/expl.m4 (gl_FUNC_EXPL): Update computation of EXPL_LIBM.
exp* tests: More tests.

* tests/test-exp.h: New file.
* tests/test-exp.c: Include <float.h> and test-exp.h.
(main): Invoke test_function.
* tests/test-expf.c: Include <float.h> and test-exp.h.
(main): Invoke test_function.
* tests/test-expl.c: Include <float.h> and test-exp.h.
(main): Invoke test_function.
* modules/exp-tests (Files): Add tests/test-exp.h, tests/randomd.c.
(Makefile.am): Add randomd.c to test_exp_SOURCES.
* modules/expf-tests (Files): Add tests/test-exp.h, tests/randomf.c.
(Makefile.am): Add randomf.c to test_expf_SOURCES.
* modules/expl-tests (Files): Add tests/test-exp.h, tests/randoml.c.
(Depends-on): Add 'float'.
(Makefile.am): Add randoml.c to test_expl_SOURCES.
expl: Simplify computation.

* lib/expl.c (expl): Simplify computation of exp_y. Fix comment.
math: Update module names in warnings.

* lib/math.in.h (acosl, asinl, atanl, cosl, expl, logl, sinl, sqrtl,
tanl): Use specific module name in warn-on-use warning.
math: Ensure declarations of math functions.

* modules/acosf (Depends-on): Add 'extensions'.
* modules/asinf (Depends-on): Likewise.
* modules/atan2f (Depends-on): Likewise.
* modules/atanf (Depends-on): Likewise.
* modules/cbrt (Depends-on): Likewise.
* modules/cbrtf (Depends-on): Likewise.
* modules/cbrtl (Depends-on): Likewise.
* modules/copysignf (Depends-on): Likewise.
* modules/copysignl (Depends-on): Likewise.
* modules/cosf (Depends-on): Likewise.
* modules/coshf (Depends-on): Likewise.
* modules/expf (Depends-on): Likewise.
* modules/fabsf (Depends-on): Likewise.
* modules/fabsl (Depends-on): Likewise.
* modules/fmaf (Depends-on): Likewise.
* modules/fmal (Depends-on): Likewise.
* modules/fmodf (Depends-on): Likewise.
* modules/fmodl (Depends-on): Likewise.
* modules/frexpf (Depends-on): Likewise.
* modules/frexpl (Depends-on): Likewise.
* modules/hypot (Depends-on): Likewise.
* modules/hypotf (Depends-on): Likewise.
* modules/hypotl (Depends-on): Likewise.
* modules/ldexpf (Depends-on): Likewise.
* modules/ldexpl (Depends-on): Likewise.
* modules/log10f (Depends-on): Likewise.
* modules/log10l (Depends-on): Likewise.
* modules/log1p (Depends-on): Likewise.
* modules/logb (Depends-on): Likewise.
* modules/logf (Depends-on): Likewise.
* modules/modff (Depends-on): Likewise.
* modules/modfl (Depends-on): Likewise.
* modules/powf (Depends-on): Likewise.
* modules/remainderf (Depends-on): Likewise.
* modules/remainderl (Depends-on): Likewise.
* modules/rintf (Depends-on): Likewise.
* modules/rintl (Depends-on): Likewise.
* modules/sinf (Depends-on): Likewise.
* modules/sinhf (Depends-on): Likewise.
* modules/sqrtf (Depends-on): Likewise.
* modules/tanf (Depends-on): Likewise.
* modules/tanhf (Depends-on): Likewise.
* m4/acosf.m4 (gl_FUNC_ACOSF): Require gl_USE_SYSTEM_EXTENSIONS.
* m4/asinf.m4 (gl_FUNC_ASINF): Likewise.
* m4/atan2f.m4 (gl_FUNC_ATAN2F): Likewise.
* m4/atanf.m4 (gl_FUNC_ATANF): Likewise.
* m4/cbrt.m4 (gl_FUNC_CBRT): Likewise.
* m4/cbrtf.m4 (gl_FUNC_CBRTF): Likewise.
* m4/cbrtl.m4 (gl_FUNC_CBRTL): Likewise.
* m4/copysignf.m4 (gl_FUNC_COPYSIGNF): Likewise.
* m4/copysignl.m4 (gl_FUNC_COPYSIGNL): Likewise.
* m4/cosf.m4 (gl_FUNC_COSF): Likewise.
* m4/coshf.m4 (gl_FUNC_COSHF): Likewise.
* m4/expf.m4 (gl_FUNC_EXPF): Likewise.
* m4/fabsf.m4 (gl_FUNC_FABSF): Likewise.
* m4/fabsl.m4 (gl_FUNC_FABSL): Likewise.
* m4/fmaf.m4 (gl_FUNC_FMAF): Likewise.
* m4/fmal.m4 (gl_FUNC_FMAL): Likewise.
* m4/fmodf.m4 (gl_FUNC_FMODF): Likewise.
* m4/fmodl.m4 (gl_FUNC_FMODL): Likewise.
* m4/frexpf.m4 (gl_FUNC_FREXPF): Likewise.
* m4/frexpl.m4 (gl_FUNC_FREXPL): Likewise.
* m4/hypot.m4 (gl_FUNC_HYPOT): Likewise.
* m4/hypotf.m4 (gl_FUNC_HYPOTF): Likewise.
* m4/hypotl.m4 (gl_FUNC_HYPOTL): Likewise.
* m4/ldexpf.m4 (gl_FUNC_LDEXPF): Likewise.
* m4/ldexpl.m4 (gl_FUNC_LDEXPL): Likewise.
* m4/log10f.m4 (gl_FUNC_LOG10F): Likewise.
* m4/log10l.m4 (gl_FUNC_LOF10L): Likewise.
* m4/logb.m4 (gl_FUNC_LOGB): Likewise.
* m4/logf.m4 (gl_FUNC_LOGF): Likewise.
* m4/modff.m4 (gl_FUNC_MODFF): Likewise.
* m4/modfl.m4 (gl_FUNC_MODFL): Likewise.
* m4/powf.m4 (gl_FUNC_POWF): Likewise.
* m4/remainderf.m4 (gl_FUNC_REMAINDERF): Likewise.
* m4/remainderl.m4 (gl_FUNC_REMAINDERL): Likewise.
* m4/rintf.m4 (gl_FUNC_RINTF): Likewise.
* m4/rintl.m4 (gl_FUNC_RINTL): Likewise.
* m4/sinf.m4 (gl_FUNC_SINF): Likewise.
* m4/sinhf.m4 (gl_FUNC_SINHF): Likewise.
* m4/sqrtf.m4 (gl_FUNC_SQRTF): Likewise.
* m4/tanf.m4 (gl_FUNC_TANF): Likewise.
* m4/tanhf.m4 (gl_FUNC_TANHF): Likewise.
New module 'expm1'.

* lib/math.in.h (expm1): New declaration.
* lib/expm1.c: New file.
* m4/expm1.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether expm1 is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_EXPM1, HAVE_EXPM1.
* modules/math (Makefile.am): Substitute GNULIB_EXPM1, HAVE_EXPM1.
* modules/expm1: New file.
* tests/test-math-c++.cc: Check the declaration of expm1.
* doc/posix-functions/expm1.texi: Mention the new module.
Tests for module 'expm1'.

* modules/expm1-tests: New file.
* tests/test-expm1.c: New file.
* tests/test-expm1.h: New file.
New module 'expm1f'.

* lib/math.in.h (expm1f): New declaration.
* lib/expm1f.c: New file.
* m4/expm1f.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether expm1f is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_EXPM1F, HAVE_EXPM1F.
* modules/math (Makefile.am): Substitute GNULIB_EXPM1F, HAVE_EXPM1F.
* modules/expm1f: New file.
* tests/test-math-c++.cc: Check the declaration of expm1f.
* doc/posix-functions/expm1f.texi: Mention the new module.
Tests for module 'expm1f'.

* modules/expm1f-tests: New file.
* tests/test-expm1f.c: New file.
New module 'expm1l'.

* lib/math.in.h (expm1l): New declaration.
* lib/expm1l.c: New file.
* m4/expm1l.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether expm1l is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_EXPM1L, HAVE_EXPM1L.
* modules/math (Makefile.am): Substitute GNULIB_EXPM1L, HAVE_EXPM1L.
* modules/expm1l: New file.
* tests/test-math-c++.cc: Check the declaration of expm1l.
* doc/posix-functions/expm1l.texi: Mention the new module.
Tests for module 'expm1l'.

* modules/expm1l-tests: New file.
* tests/test-expm1l.c: New file.