head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC4:1.1.1.14
	netbsd-11-0-RC3:1.1.1.14
	netbsd-11-0-RC2:1.1.1.14
	netbsd-11-0-RC1:1.1.1.14
	gcc-14-3-0:1.1.1.15
	perseant-exfatfs-base-20250801:1.1.1.14
	netbsd-11:1.1.1.14.0.4
	netbsd-11-base:1.1.1.14
	gcc-12-5-0:1.1.1.14
	netbsd-10-1-RELEASE:1.1.1.13
	perseant-exfatfs-base-20240630:1.1.1.14
	gcc-12-4-0:1.1.1.14
	perseant-exfatfs:1.1.1.14.0.2
	perseant-exfatfs-base:1.1.1.14
	netbsd-8-3-RELEASE:1.1.1.4.8.1
	netbsd-9-4-RELEASE:1.1.1.7
	netbsd-10-0-RELEASE:1.1.1.13
	netbsd-10-0-RC6:1.1.1.13
	netbsd-10-0-RC5:1.1.1.13
	netbsd-10-0-RC4:1.1.1.13
	netbsd-10-0-RC3:1.1.1.13
	netbsd-10-0-RC2:1.1.1.13
	netbsd-10-0-RC1:1.1.1.13
	gcc-12-3-0:1.1.1.14
	gcc-10-5-0:1.1.1.13
	netbsd-10:1.1.1.13.0.2
	netbsd-10-base:1.1.1.13
	netbsd-9-3-RELEASE:1.1.1.7
	gcc-10-4-0:1.1.1.13
	cjep_sun2x-base1:1.1.1.12
	cjep_sun2x:1.1.1.12.0.4
	cjep_sun2x-base:1.1.1.12
	cjep_staticlib_x-base1:1.1.1.12
	netbsd-9-2-RELEASE:1.1.1.7
	cjep_staticlib_x:1.1.1.12.0.2
	cjep_staticlib_x-base:1.1.1.12
	gcc-10-3-0:1.1.1.12
	netbsd-9-1-RELEASE:1.1.1.7
	gcc-9-3-0:1.1.1.11
	gcc-7-5-0:1.1.1.9
	phil-wifi-20200421:1.1.1.8
	phil-wifi-20200411:1.1.1.8
	is-mlppp:1.1.1.8.0.2
	is-mlppp-base:1.1.1.8
	phil-wifi-20200406:1.1.1.8
	netbsd-8-2-RELEASE:1.1.1.4.8.1
	gcc-8-4-0:1.1.1.10
	netbsd-9-0-RELEASE:1.1.1.7
	netbsd-9-0-RC2:1.1.1.7
	netbsd-9-0-RC1:1.1.1.7
	phil-wifi-20191119:1.1.1.8
	gcc-8-3-0:1.1.1.8
	netbsd-9:1.1.1.7.0.2
	netbsd-9-base:1.1.1.7
	phil-wifi-20190609:1.1.1.7
	netbsd-8-1-RELEASE:1.1.1.4.8.1
	netbsd-8-1-RC1:1.1.1.4.8.1
	pgoyette-compat-merge-20190127:1.1.1.6.2.1
	pgoyette-compat-20190127:1.1.1.7
	gcc-7-4-0:1.1.1.7
	pgoyette-compat-20190118:1.1.1.6
	pgoyette-compat-1226:1.1.1.6
	pgoyette-compat-1126:1.1.1.6
	gcc-6-5-0:1.1.1.6
	pgoyette-compat-1020:1.1.1.6
	pgoyette-compat-0930:1.1.1.6
	pgoyette-compat-0906:1.1.1.6
	netbsd-7-2-RELEASE:1.1.1.2
	pgoyette-compat-0728:1.1.1.6
	netbsd-8-0-RELEASE:1.1.1.4.8.1
	phil-wifi:1.1.1.6.0.4
	phil-wifi-base:1.1.1.6
	pgoyette-compat-0625:1.1.1.6
	netbsd-8-0-RC2:1.1.1.4.8.1
	pgoyette-compat-0521:1.1.1.6
	pgoyette-compat-0502:1.1.1.6
	pgoyette-compat-0422:1.1.1.6
	netbsd-8-0-RC1:1.1.1.4.8.1
	pgoyette-compat-0415:1.1.1.6
	pgoyette-compat-0407:1.1.1.6
	pgoyette-compat-0330:1.1.1.6
	pgoyette-compat-0322:1.1.1.6
	pgoyette-compat-0315:1.1.1.6
	netbsd-7-1-2-RELEASE:1.1.1.2
	pgoyette-compat:1.1.1.6.0.2
	pgoyette-compat-base:1.1.1.6
	gcc-6-4-0:1.1.1.6
	netbsd-7-1-1-RELEASE:1.1.1.2
	gcc-5-5-0:1.1.1.5
	matt-nb8-mediatek:1.1.1.4.0.12
	matt-nb8-mediatek-base:1.1.1.4
	perseant-stdc-iso10646:1.1.1.4.0.10
	perseant-stdc-iso10646-base:1.1.1.4
	netbsd-8:1.1.1.4.0.8
	netbsd-8-base:1.1.1.4
	prg-localcount2-base3:1.1.1.4
	prg-localcount2-base2:1.1.1.4
	prg-localcount2-base1:1.1.1.4
	prg-localcount2:1.1.1.4.0.6
	prg-localcount2-base:1.1.1.4
	pgoyette-localcount-20170426:1.1.1.4
	bouyer-socketcan-base1:1.1.1.4
	pgoyette-localcount-20170320:1.1.1.4
	netbsd-7-1:1.1.1.2.0.10
	netbsd-7-1-RELEASE:1.1.1.2
	netbsd-7-1-RC2:1.1.1.2
	netbsd-7-nhusb-base-20170116:1.1.1.2
	bouyer-socketcan:1.1.1.4.0.4
	bouyer-socketcan-base:1.1.1.4
	pgoyette-localcount-20170107:1.1.1.4
	netbsd-7-1-RC1:1.1.1.2
	pgoyette-localcount-20161104:1.1.1.4
	netbsd-7-0-2-RELEASE:1.1.1.2
	localcount-20160914:1.1.1.4
	netbsd-7-nhusb:1.1.1.2.0.8
	netbsd-7-nhusb-base:1.1.1.2
	pgoyette-localcount-20160806:1.1.1.4
	pgoyette-localcount-20160726:1.1.1.4
	pgoyette-localcount:1.1.1.4.0.2
	pgoyette-localcount-base:1.1.1.4
	gcc-5-4-0:1.1.1.4
	netbsd-7-0-1-RELEASE:1.1.1.2
	gcc-5-3-0:1.1.1.3
	netbsd-7-0:1.1.1.2.0.6
	netbsd-7-0-RELEASE:1.1.1.2
	gcc-4-8-5-pre-gcc-old-import:1.1.1.2
	netbsd-7-0-RC3:1.1.1.2
	netbsd-7-0-RC2:1.1.1.2
	post-gcc-4-8-5-merge:1.1.1.2
	gcc-4-8-5:1.1.1.2
	netbsd-7-0-RC1:1.1.1.2
	gcc-4-8-4:1.1.1.2
	gcc-4-8-20141009:1.1.1.2
	netbsd-6-0-6-RELEASE:1.1.1.1
	netbsd-6-1-5-RELEASE:1.1.1.1
	netbsd-7:1.1.1.2.0.4
	netbsd-7-base:1.1.1.2
	gcc-4-8-3:1.1.1.2
	yamt-pagecache-base9:1.1.1.2
	yamt-pagecache-tag8:1.1.1.1
	netbsd-6-1-4-RELEASE:1.1.1.1
	netbsd-6-0-5-RELEASE:1.1.1.1
	tls-earlyentropy:1.1.1.2.0.2
	tls-earlyentropy-base:1.1.1.2
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.2
	riastradh-drm2-base3:1.1.1.2
	gcc-4-8-3-pre-r208254:1.1.1.2
	gcc-4-8-3-pre-r206687:1.1.1.2
	imported-to-gcc-old-20140227-0107:1.1.1.1
	netbsd-6-1-3-RELEASE:1.1.1.1
	netbsd-6-0-4-RELEASE:1.1.1.1
	netbsd-6-1-2-RELEASE:1.1.1.1
	netbsd-6-0-3-RELEASE:1.1.1.1
	netbsd-6-1-1-RELEASE:1.1.1.1
	riastradh-drm2-base2:1.1.1.1
	riastradh-drm2-base1:1.1.1.1
	riastradh-drm2:1.1.1.1.0.12
	riastradh-drm2-base:1.1.1.1
	netbsd-6-1:1.1.1.1.0.16
	netbsd-6-0-2-RELEASE:1.1.1.1
	netbsd-6-1-RELEASE:1.1.1.1
	netbsd-6-1-RC4:1.1.1.1
	netbsd-6-1-RC3:1.1.1.1
	agc-symver:1.1.1.1.0.14
	agc-symver-base:1.1.1.1
	netbsd-6-1-RC2:1.1.1.1
	netbsd-6-1-RC1:1.1.1.1
	yamt-pagecache-base8:1.1.1.1
	netbsd-6-0-1-RELEASE:1.1.1.1
	yamt-pagecache-base7:1.1.1.1
	matt-nb6-plus-nbase:1.1.1.1
	yamt-pagecache-base6:1.1.1.1
	netbsd-6-0:1.1.1.1.0.10
	netbsd-6-0-RELEASE:1.1.1.1
	gcc-4-5-4:1.1.1.1
	netbsd-6-0-RC2:1.1.1.1
	tls-maxphys:1.1.1.1.0.8
	tls-maxphys-base:1.1.1.2
	matt-nb6-plus:1.1.1.1.0.6
	matt-nb6-plus-base:1.1.1.1
	netbsd-6-0-RC1:1.1.1.1
	yamt-pagecache-base5:1.1.1.1
	yamt-pagecache-base4:1.1.1.1
	netbsd-6:1.1.1.1.0.4
	netbsd-6-base:1.1.1.1
	yamt-pagecache-base3:1.1.1.1
	yamt-pagecache-base2:1.1.1.1
	yamt-pagecache:1.1.1.1.0.2
	yamt-pagecache-base:1.1.1.1
	gcc-4-5-3:1.1.1.1
	FSF:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2011.06.21.01.24.45;	author mrg;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2011.06.21.01.24.45;	author mrg;	state Exp;
branches
	1.1.1.1.2.1
	1.1.1.1.8.1;
next	1.1.1.2;

1.1.1.2
date	2014.03.01.08.41.35;	author mrg;	state Exp;
branches;
next	1.1.1.3;
commitid	TtaB91QNTknAoYqx;

1.1.1.3
date	2016.01.24.06.05.53;	author mrg;	state Exp;
branches;
next	1.1.1.4;
commitid	uWWfbLp08zOK79Sy;

1.1.1.4
date	2016.06.07.05.57.53;	author mrg;	state Exp;
branches
	1.1.1.4.8.1;
next	1.1.1.5;
commitid	KKgo7HPiSHWAPu9z;

1.1.1.5
date	2017.11.11.23.49.29;	author mrg;	state Exp;
branches;
next	1.1.1.6;
commitid	KefS4gJN8ajyYFeA;

1.1.1.6
date	2018.02.02.01.59.04;	author mrg;	state Exp;
branches
	1.1.1.6.2.1
	1.1.1.6.4.1;
next	1.1.1.7;
commitid	XNKaycqpfhzd5epA;

1.1.1.7
date	2019.01.19.10.14.12;	author mrg;	state Exp;
branches;
next	1.1.1.8;
commitid	VQ8OwWIg5RS9kn8B;

1.1.1.8
date	2019.10.01.09.36.07;	author mrg;	state Exp;
branches;
next	1.1.1.9;
commitid	smvgr2IPAQDr89FB;

1.1.1.9
date	2020.08.11.05.10.40;	author mrg;	state Exp;
branches;
next	1.1.1.10;
commitid	5dBRDT7i6e65xBjC;

1.1.1.10
date	2020.08.11.05.30.09;	author mrg;	state Exp;
branches;
next	1.1.1.11;
commitid	7AI4OfpLi4eqEBjC;

1.1.1.11
date	2020.09.05.07.52.10;	author mrg;	state Exp;
branches;
next	1.1.1.12;
commitid	ZRYA7IOuwfMjAPmC;

1.1.1.12
date	2021.04.10.22.10.03;	author mrg;	state Exp;
branches;
next	1.1.1.13;
commitid	eC4g0MRpqTvEkNOC;

1.1.1.13
date	2022.07.22.19.52.37;	author mrg;	state Exp;
branches;
next	1.1.1.14;
commitid	fUYPgdKzIHqhwVMD;

1.1.1.14
date	2023.07.30.05.21.20;	author mrg;	state Exp;
branches;
next	1.1.1.15;
commitid	tk6nV4mbc9nVEMyE;

1.1.1.15
date	2025.09.13.23.45.48;	author mrg;	state Exp;
branches;
next	;
commitid	KwhwN4krNWa6XBaG;

1.1.1.1.2.1
date	2014.05.22.16.37.48;	author yamt;	state Exp;
branches;
next	;
commitid	DX8bafDLmqEbpyBx;

1.1.1.1.8.1
date	2014.08.19.23.54.50;	author tls;	state Exp;
branches;
next	;
commitid	jTnpym9Qu0o4R1Nx;

1.1.1.4.8.1
date	2017.11.23.11.02.02;	author martin;	state Exp;
branches;
next	;
commitid	lA6hq5q2Y1dXl9gA;

1.1.1.6.2.1
date	2019.01.26.21.59.34;	author pgoyette;	state Exp;
branches;
next	;
commitid	JKpcmvSjdT25dl9B;

1.1.1.6.4.1
date	2019.06.10.21.54.51;	author christos;	state Exp;
branches;
next	1.1.1.6.4.2;
commitid	jtc8rnCzWiEEHGqB;

1.1.1.6.4.2
date	2020.04.13.07.58.36;	author martin;	state Exp;
branches;
next	;
commitid	X01YhRUPVUDaec4C;


desc
@@


1.1
log
@Initial revision
@
text
@// -*- C++ -*- C forwarding header.

// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
// 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @@file include/cmath
 *  This is a Standard C++ Library file.  You should @@c \#include this file
 *  in your programs, rather than any of the @@a *.h implementation files.
 *
 *  This is the C++ version of the Standard C Library header @@c math.h,
 *  and its contents are (mostly) the same as that header, but are all
 *  contained in the namespace @@c std (except for names which are defined
 *  as macros in C).
 */

//
// ISO C++ 14882: 26.5  C library
//

#pragma GCC system_header

#include <bits/c++config.h>
#include <bits/cpp_type_traits.h>
#include <ext/type_traits.h>
#include <math.h>

#ifndef _GLIBCXX_CMATH
#define _GLIBCXX_CMATH 1

// Get rid of those macros defined in <math.h> in lieu of real functions.
#undef abs
#undef div
#undef acos
#undef asin
#undef atan
#undef atan2
#undef ceil
#undef cos
#undef cosh
#undef exp
#undef fabs
#undef floor
#undef fmod
#undef frexp
#undef ldexp
#undef log
#undef log10
#undef modf
#undef pow
#undef sin
#undef sinh
#undef sqrt
#undef tan
#undef tanh

_GLIBCXX_BEGIN_NAMESPACE(std)

  // Forward declaration of a helper function.  This really should be
  // an `exported' forward declaration.
  template<typename _Tp>
    _Tp __cmath_power(_Tp, unsigned int);

  template<typename _Tp>
    inline _Tp
    __pow_helper(_Tp __x, int __n)
    {
      return __n < 0
        ? _Tp(1)/__cmath_power(__x, -__n)
        : __cmath_power(__x, __n);
    }

  inline double
  abs(double __x)
  { return __builtin_fabs(__x); }

  inline float
  abs(float __x)
  { return __builtin_fabsf(__x); }

  inline long double
  abs(long double __x)
  { return __builtin_fabsl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    abs(_Tp __x)
    { return __builtin_fabs(__x); }

  using ::acos;

  inline float
  acos(float __x)
  { return __builtin_acosf(__x); }

  inline long double
  acos(long double __x)
  { return __builtin_acosl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    acos(_Tp __x)
    { return __builtin_acos(__x); }

  using ::asin;

  inline float
  asin(float __x)
  { return __builtin_asinf(__x); }

  inline long double
  asin(long double __x)
  { return __builtin_asinl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
					   double>::__type
    asin(_Tp __x)
    { return __builtin_asin(__x); }

  using ::atan;

  inline float
  atan(float __x)
  { return __builtin_atanf(__x); }

  inline long double
  atan(long double __x)
  { return __builtin_atanl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    atan(_Tp __x)
    { return __builtin_atan(__x); }

  using ::atan2;

  inline float
  atan2(float __y, float __x)
  { return __builtin_atan2f(__y, __x); }

  inline long double
  atan2(long double __y, long double __x)
  { return __builtin_atan2l(__y, __x); }

  template<typename _Tp, typename _Up>
    inline
    typename __gnu_cxx::__promote_2<
    typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
				    && __is_arithmetic<_Up>::__value,
				    _Tp>::__type, _Up>::__type
    atan2(_Tp __y, _Up __x)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return atan2(__type(__y), __type(__x));
    }

  using ::ceil;

  inline float
  ceil(float __x)
  { return __builtin_ceilf(__x); }

  inline long double
  ceil(long double __x)
  { return __builtin_ceill(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    ceil(_Tp __x)
    { return __builtin_ceil(__x); }

  using ::cos;

  inline float
  cos(float __x)
  { return __builtin_cosf(__x); }

  inline long double
  cos(long double __x)
  { return __builtin_cosl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    cos(_Tp __x)
    { return __builtin_cos(__x); }

  using ::cosh;

  inline float
  cosh(float __x)
  { return __builtin_coshf(__x); }

  inline long double
  cosh(long double __x)
  { return __builtin_coshl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    cosh(_Tp __x)
    { return __builtin_cosh(__x); }

  using ::exp;

  inline float
  exp(float __x)
  { return __builtin_expf(__x); }

  inline long double
  exp(long double __x)
  { return __builtin_expl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    exp(_Tp __x)
    { return __builtin_exp(__x); }

  using ::fabs;

  inline float
  fabs(float __x)
  { return __builtin_fabsf(__x); }

  inline long double
  fabs(long double __x)
  { return __builtin_fabsl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    fabs(_Tp __x)
    { return __builtin_fabs(__x); }

  using ::floor;

  inline float
  floor(float __x)
  { return __builtin_floorf(__x); }

  inline long double
  floor(long double __x)
  { return __builtin_floorl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    floor(_Tp __x)
    { return __builtin_floor(__x); }

  using ::fmod;

  inline float
  fmod(float __x, float __y)
  { return __builtin_fmodf(__x, __y); }

  inline long double
  fmod(long double __x, long double __y)
  { return __builtin_fmodl(__x, __y); }

  using ::frexp;

  inline float
  frexp(float __x, int* __exp)
  { return __builtin_frexpf(__x, __exp); }

  inline long double
  frexp(long double __x, int* __exp)
  { return __builtin_frexpl(__x, __exp); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    frexp(_Tp __x, int* __exp)
    { return __builtin_frexp(__x, __exp); }

  using ::ldexp;

  inline float
  ldexp(float __x, int __exp)
  { return __builtin_ldexpf(__x, __exp); }

  inline long double
  ldexp(long double __x, int __exp)
  { return __builtin_ldexpl(__x, __exp); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
  ldexp(_Tp __x, int __exp)
  { return __builtin_ldexp(__x, __exp); }

  using ::log;

  inline float
  log(float __x)
  { return __builtin_logf(__x); }

  inline long double
  log(long double __x)
  { return __builtin_logl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    log(_Tp __x)
    { return __builtin_log(__x); }

  using ::log10;

  inline float
  log10(float __x)
  { return __builtin_log10f(__x); }

  inline long double
  log10(long double __x)
  { return __builtin_log10l(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    log10(_Tp __x)
    { return __builtin_log10(__x); }

  using ::modf;

  inline float
  modf(float __x, float* __iptr)
  { return __builtin_modff(__x, __iptr); }

  inline long double
  modf(long double __x, long double* __iptr)
  { return __builtin_modfl(__x, __iptr); }

  using ::pow;

  inline float
  pow(float __x, float __y)
  { return __builtin_powf(__x, __y); }

  inline long double
  pow(long double __x, long double __y)
  { return __builtin_powl(__x, __y); }

#ifndef __GXX_EXPERIMENTAL_CXX0X__
  // _GLIBCXX_RESOLVE_LIB_DEFECTS
  // DR 550. What should the return type of pow(float,int) be?
  inline double
  pow(double __x, int __i)
  { return __builtin_powi(__x, __i); }

  inline float
  pow(float __x, int __n)
  { return __builtin_powif(__x, __n); }

  inline long double
  pow(long double __x, int __n)
  { return __builtin_powil(__x, __n); }
#endif

  template<typename _Tp, typename _Up>
    inline
    typename __gnu_cxx::__promote_2<
    typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
				    && __is_arithmetic<_Up>::__value,
				    _Tp>::__type, _Up>::__type
    pow(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return pow(__type(__x), __type(__y));
    }

  using ::sin;

  inline float
  sin(float __x)
  { return __builtin_sinf(__x); }

  inline long double
  sin(long double __x)
  { return __builtin_sinl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    sin(_Tp __x)
    { return __builtin_sin(__x); }

  using ::sinh;

  inline float
  sinh(float __x)
  { return __builtin_sinhf(__x); }

  inline long double
  sinh(long double __x)
  { return __builtin_sinhl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    sinh(_Tp __x)
    { return __builtin_sinh(__x); }

  using ::sqrt;

  inline float
  sqrt(float __x)
  { return __builtin_sqrtf(__x); }

  inline long double
  sqrt(long double __x)
  { return __builtin_sqrtl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    sqrt(_Tp __x)
    { return __builtin_sqrt(__x); }

  using ::tan;

  inline float
  tan(float __x)
  { return __builtin_tanf(__x); }

  inline long double
  tan(long double __x)
  { return __builtin_tanl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    tan(_Tp __x)
    { return __builtin_tan(__x); }

  using ::tanh;

  inline float
  tanh(float __x)
  { return __builtin_tanhf(__x); }

  inline long double
  tanh(long double __x)
  { return __builtin_tanhl(__x); }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
					   double>::__type
    tanh(_Tp __x)
    { return __builtin_tanh(__x); }

_GLIBCXX_END_NAMESPACE

#if _GLIBCXX_USE_C99_MATH
#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC

// These are possible macros imported from C99-land.
#undef fpclassify
#undef isfinite
#undef isinf
#undef isnan
#undef isnormal
#undef signbit
#undef isgreater
#undef isgreaterequal
#undef isless
#undef islessequal
#undef islessgreater
#undef isunordered

_GLIBCXX_BEGIN_NAMESPACE(std)

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    fpclassify(_Tp __f)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				  FP_SUBNORMAL, FP_ZERO, __type(__f));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    isfinite(_Tp __f)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_isfinite(__type(__f));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    isinf(_Tp __f)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_isinf(__type(__f));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    isnan(_Tp __f)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_isnan(__type(__f));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    isnormal(_Tp __f)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_isnormal(__type(__f));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    signbit(_Tp __f)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_signbit(__type(__f));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    isgreater(_Tp __f1, _Tp __f2)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_isgreater(__type(__f1), __type(__f2));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    isgreaterequal(_Tp __f1, _Tp __f2)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_isgreaterequal(__type(__f1), __type(__f2));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    isless(_Tp __f1, _Tp __f2)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_isless(__type(__f1), __type(__f2));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    islessequal(_Tp __f1, _Tp __f2)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_islessequal(__type(__f1), __type(__f2));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    islessgreater(_Tp __f1, _Tp __f2)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_islessgreater(__type(__f1), __type(__f2));
    }

  template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
					   int>::__type
    isunordered(_Tp __f1, _Tp __f2)
    {
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
      return __builtin_isunordered(__type(__f1), __type(__f2));
    }

_GLIBCXX_END_NAMESPACE

#endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */
#endif

#ifndef _GLIBCXX_EXPORT_TEMPLATE
# include <bits/cmath.tcc>
#endif

#ifdef __GXX_EXPERIMENTAL_CXX0X__
#  if defined(_GLIBCXX_INCLUDE_AS_TR1)
#    error C++0x header cannot be included from TR1 header
#  endif
#  if defined(_GLIBCXX_INCLUDE_AS_CXX0X)
#    include <tr1_impl/cmath>
#  else
#    define _GLIBCXX_INCLUDE_AS_CXX0X
#    define _GLIBCXX_BEGIN_NAMESPACE_TR1
#    define _GLIBCXX_END_NAMESPACE_TR1
#    define _GLIBCXX_TR1
#    include <tr1_impl/cmath>
#    undef _GLIBCXX_TR1
#    undef _GLIBCXX_END_NAMESPACE_TR1
#    undef _GLIBCXX_BEGIN_NAMESPACE_TR1
#    undef _GLIBCXX_INCLUDE_AS_CXX0X
#  endif
#endif

#endif
@


1.1.1.1
log
@initial import of GCC 4.5.3 sources.  changes since 4.1 are way too numerous
to review, please see http://gcc.gnu.org/gcc-4.5/changes.html (and the 4.2,
4.3 and 4.4 versions, too.)

this includes the core, c++, objc and the non java/ada/fortran parts of the
testsuite.
@
text
@@


1.1.1.1.8.1
log
@Rebase to HEAD as of a few days ago.
@
text
@d3 3
a5 1
// Copyright (C) 1997-2013 Free Software Foundation, Inc.
d77 1
a77 3
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
d79 15
a93 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR double
a95 1
#endif
d97 1
a97 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d101 1
a101 1
  inline _GLIBCXX_CONSTEXPR long double
a103 1
#endif
d106 2
a107 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d113 1
a113 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d117 1
a117 1
  inline _GLIBCXX_CONSTEXPR long double
a119 1
#endif
d122 2
a123 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d129 1
a129 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d133 1
a133 1
  inline _GLIBCXX_CONSTEXPR long double
a135 1
#endif
d138 2
a139 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d145 1
a145 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d149 1
a149 1
  inline _GLIBCXX_CONSTEXPR long double
a151 1
#endif
d154 2
a155 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d161 1
a161 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d165 1
a165 1
  inline _GLIBCXX_CONSTEXPR long double
a167 1
#endif
d170 5
a174 2
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
d183 1
a183 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d187 1
a187 1
  inline _GLIBCXX_CONSTEXPR long double
a189 1
#endif
d192 2
a193 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d199 1
a199 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d203 1
a203 1
  inline _GLIBCXX_CONSTEXPR long double
a205 1
#endif
d208 2
a209 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d215 1
a215 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d219 1
a219 1
  inline _GLIBCXX_CONSTEXPR long double
a221 1
#endif
d224 2
a225 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d231 1
a231 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d235 1
a235 1
  inline _GLIBCXX_CONSTEXPR long double
a237 1
#endif
d240 2
a241 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d247 1
a247 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d251 1
a251 1
  inline _GLIBCXX_CONSTEXPR long double
a253 1
#endif
d256 2
a257 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d263 1
a263 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d267 1
a267 1
  inline _GLIBCXX_CONSTEXPR long double
a269 1
#endif
d272 2
a273 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d279 1
a279 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d283 1
a283 1
  inline _GLIBCXX_CONSTEXPR long double
a285 10
#endif

  template<typename _Tp, typename _Up>
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmod(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmod(__type(__x), __type(__y));
    }
a288 1
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
a295 1
#endif
d298 2
a299 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d305 1
a305 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d309 1
a309 1
  inline _GLIBCXX_CONSTEXPR long double
a311 1
#endif
d314 4
a317 5
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
    ldexp(_Tp __x, int __exp)
    { return __builtin_ldexp(__x, __exp); }
d321 1
a321 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d325 1
a325 1
  inline _GLIBCXX_CONSTEXPR long double
a327 1
#endif
d330 2
a331 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d337 1
a337 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d341 1
a341 1
  inline _GLIBCXX_CONSTEXPR long double
a343 1
#endif
d346 2
a347 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
a352 1
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
a359 1
#endif
d363 1
a363 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d367 1
a367 1
  inline _GLIBCXX_CONSTEXPR long double
d371 1
a371 1
#if __cplusplus < 201103L
a385 1
#endif
d388 5
a392 2
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
d401 1
a401 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d405 1
a405 1
  inline _GLIBCXX_CONSTEXPR long double
a407 1
#endif
d410 2
a411 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d417 1
a417 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d421 1
a421 1
  inline _GLIBCXX_CONSTEXPR long double
a423 1
#endif
d426 2
a427 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d433 1
a433 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d437 1
a437 1
  inline _GLIBCXX_CONSTEXPR long double
a439 1
#endif
d442 2
a443 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d449 1
a449 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d453 1
a453 1
  inline _GLIBCXX_CONSTEXPR long double
a455 1
#endif
d458 2
a459 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d465 1
a465 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d469 1
a469 1
  inline _GLIBCXX_CONSTEXPR long double
a471 1
#endif
d474 2
a475 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d479 1
a479 2
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
d498 1
a498 249
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

#if __cplusplus >= 201103L
  constexpr int
  fpclassify(float __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  constexpr int
  fpclassify(double __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  constexpr int
  fpclassify(long double __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              int>::__type
    fpclassify(_Tp __x)
    { return __x != 0 ? FP_NORMAL : FP_ZERO; }

  constexpr bool
  isfinite(float __x)
  { return __builtin_isfinite(__x); }

  constexpr bool
  isfinite(double __x)
  { return __builtin_isfinite(__x); }

  constexpr bool
  isfinite(long double __x)
  { return __builtin_isfinite(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isfinite(_Tp __x)
    { return true; }

  constexpr bool
  isinf(float __x)
  { return __builtin_isinf(__x); }

  constexpr bool
  isinf(double __x)
  { return __builtin_isinf(__x); }

  constexpr bool
  isinf(long double __x)
  { return __builtin_isinf(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isinf(_Tp __x)
    { return false; }

  constexpr bool
  isnan(float __x)
  { return __builtin_isnan(__x); }

  constexpr bool
  isnan(double __x)
  { return __builtin_isnan(__x); }

  constexpr bool
  isnan(long double __x)
  { return __builtin_isnan(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isnan(_Tp __x)
    { return false; }

  constexpr bool
  isnormal(float __x)
  { return __builtin_isnormal(__x); }

  constexpr bool
  isnormal(double __x)
  { return __builtin_isnormal(__x); }

  constexpr bool
  isnormal(long double __x)
  { return __builtin_isnormal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isnormal(_Tp __x)
    { return __x != 0 ? true : false; }

  constexpr bool
  signbit(float __x)
  { return __builtin_signbit(__x); }

  constexpr bool
  signbit(double __x)
  { return __builtin_signbit(__x); }

  constexpr bool
  signbit(long double __x)
  { return __builtin_signbit(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    signbit(_Tp __x)
    { return __x < 0 ? true : false; }

  constexpr bool
  isgreater(float __x, float __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreater(double __x, double __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreater(long double __x, long double __y)
  { return __builtin_isgreater(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isgreater(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isgreater(__type(__x), __type(__y));
    }

  constexpr bool
  isgreaterequal(float __x, float __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isgreaterequal(double __x, double __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isgreaterequal(long double __x, long double __y)
  { return __builtin_isgreaterequal(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isgreaterequal(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isgreaterequal(__type(__x), __type(__y));
    }

  constexpr bool
  isless(float __x, float __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  isless(double __x, double __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  isless(long double __x, long double __y)
  { return __builtin_isless(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isless(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isless(__type(__x), __type(__y));
    }

  constexpr bool
  islessequal(float __x, float __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessequal(double __x, double __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessequal(long double __x, long double __y)
  { return __builtin_islessequal(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    islessequal(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_islessequal(__type(__x), __type(__y));
    }

  constexpr bool
  islessgreater(float __x, float __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  islessgreater(double __x, double __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  islessgreater(long double __x, long double __y)
  { return __builtin_islessgreater(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    islessgreater(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_islessgreater(__type(__x), __type(__y));
    }

  constexpr bool
  isunordered(float __x, float __y)
  { return __builtin_isunordered(__x, __y); }

  constexpr bool
  isunordered(double __x, double __y)
  { return __builtin_isunordered(__x, __y); }

  constexpr bool
  isunordered(long double __x, long double __y)
  { return __builtin_isunordered(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isunordered(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isunordered(__type(__x), __type(__y));
    }

#else
d609 1
a609 4
#endif

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
d614 3
a616 1
#if __cplusplus >= 201103L
d618 18
a635 760
#ifdef _GLIBCXX_USE_C99_MATH_TR1

#undef acosh
#undef acoshf
#undef acoshl
#undef asinh
#undef asinhf
#undef asinhl
#undef atanh
#undef atanhf
#undef atanhl
#undef cbrt
#undef cbrtf
#undef cbrtl
#undef copysign
#undef copysignf
#undef copysignl
#undef erf
#undef erff
#undef erfl
#undef erfc
#undef erfcf
#undef erfcl
#undef exp2
#undef exp2f
#undef exp2l
#undef expm1
#undef expm1f
#undef expm1l
#undef fdim
#undef fdimf
#undef fdiml
#undef fma
#undef fmaf
#undef fmal
#undef fmax
#undef fmaxf
#undef fmaxl
#undef fmin
#undef fminf
#undef fminl
#undef hypot
#undef hypotf
#undef hypotl
#undef ilogb
#undef ilogbf
#undef ilogbl
#undef lgamma
#undef lgammaf
#undef lgammal
#undef llrint
#undef llrintf
#undef llrintl
#undef llround
#undef llroundf
#undef llroundl
#undef log1p
#undef log1pf
#undef log1pl
#undef log2
#undef log2f
#undef log2l
#undef logb
#undef logbf
#undef logbl
#undef lrint
#undef lrintf
#undef lrintl
#undef lround
#undef lroundf
#undef lroundl
#undef nan
#undef nanf
#undef nanl
#undef nearbyint
#undef nearbyintf
#undef nearbyintl
#undef nextafter
#undef nextafterf
#undef nextafterl
#undef nexttoward
#undef nexttowardf
#undef nexttowardl
#undef remainder
#undef remainderf
#undef remainderl
#undef remquo
#undef remquof
#undef remquol
#undef rint
#undef rintf
#undef rintl
#undef round
#undef roundf
#undef roundl
#undef scalbln
#undef scalblnf
#undef scalblnl
#undef scalbn
#undef scalbnf
#undef scalbnl
#undef tgamma
#undef tgammaf
#undef tgammal
#undef trunc
#undef truncf
#undef truncl

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  // types
  using ::double_t;
  using ::float_t;

  // functions
  using ::acosh;
  using ::acoshf;
  using ::acoshl;

  using ::asinh;
  using ::asinhf;
  using ::asinhl;

  using ::atanh;
  using ::atanhf;
  using ::atanhl;

  using ::cbrt;
  using ::cbrtf;
  using ::cbrtl;

  using ::copysign;
  using ::copysignf;
  using ::copysignl;

  using ::erf;
  using ::erff;
  using ::erfl;

  using ::erfc;
  using ::erfcf;
  using ::erfcl;

  using ::exp2;
  using ::exp2f;
  using ::exp2l;

  using ::expm1;
  using ::expm1f;
  using ::expm1l;

  using ::fdim;
  using ::fdimf;
  using ::fdiml;

  using ::fma;
  using ::fmaf;
  using ::fmal;

  using ::fmax;
  using ::fmaxf;
  using ::fmaxl;

  using ::fmin;
  using ::fminf;
  using ::fminl;

  using ::hypot;
  using ::hypotf;
  using ::hypotl;

  using ::ilogb;
  using ::ilogbf;
  using ::ilogbl;

  using ::lgamma;
  using ::lgammaf;
  using ::lgammal;

  using ::llrint;
  using ::llrintf;
  using ::llrintl;

  using ::llround;
  using ::llroundf;
  using ::llroundl;

  using ::log1p;
  using ::log1pf;
  using ::log1pl;

  using ::log2;
  using ::log2f;
  using ::log2l;

  using ::logb;
  using ::logbf;
  using ::logbl;

  using ::lrint;
  using ::lrintf;
  using ::lrintl;

  using ::lround;
  using ::lroundf;
  using ::lroundl;

  using ::nan;
  using ::nanf;
  using ::nanl;

  using ::nearbyint;
  using ::nearbyintf;
  using ::nearbyintl;

  using ::nextafter;
  using ::nextafterf;
  using ::nextafterl;

  using ::nexttoward;
  using ::nexttowardf;
  using ::nexttowardl;

  using ::remainder;
  using ::remainderf;
  using ::remainderl;

  using ::remquo;
  using ::remquof;
  using ::remquol;

  using ::rint;
  using ::rintf;
  using ::rintl;

  using ::round;
  using ::roundf;
  using ::roundl;

  using ::scalbln;
  using ::scalblnf;
  using ::scalblnl;

  using ::scalbn;
  using ::scalbnf;
  using ::scalbnl;

  using ::tgamma;
  using ::tgammaf;
  using ::tgammal;

  using ::trunc;
  using ::truncf;
  using ::truncl;

  /// Additional overloads.
  constexpr float
  acosh(float __x)
  { return __builtin_acoshf(__x); }

  constexpr long double
  acosh(long double __x)
  { return __builtin_acoshl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    acosh(_Tp __x)
    { return __builtin_acosh(__x); }

  constexpr float
  asinh(float __x)
  { return __builtin_asinhf(__x); }

  constexpr long double
  asinh(long double __x)
  { return __builtin_asinhl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    asinh(_Tp __x)
    { return __builtin_asinh(__x); }

  constexpr float
  atanh(float __x)
  { return __builtin_atanhf(__x); }

  constexpr long double
  atanh(long double __x)
  { return __builtin_atanhl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    atanh(_Tp __x)
    { return __builtin_atanh(__x); }

  constexpr float
  cbrt(float __x)
  { return __builtin_cbrtf(__x); }

  constexpr long double
  cbrt(long double __x)
  { return __builtin_cbrtl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    cbrt(_Tp __x)
    { return __builtin_cbrt(__x); }

  constexpr float
  copysign(float __x, float __y)
  { return __builtin_copysignf(__x, __y); }

  constexpr long double
  copysign(long double __x, long double __y)
  { return __builtin_copysignl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    copysign(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return copysign(__type(__x), __type(__y));
    }

  constexpr float
  erf(float __x)
  { return __builtin_erff(__x); }

  constexpr long double
  erf(long double __x)
  { return __builtin_erfl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    erf(_Tp __x)
    { return __builtin_erf(__x); }

  constexpr float
  erfc(float __x)
  { return __builtin_erfcf(__x); }

  constexpr long double
  erfc(long double __x)
  { return __builtin_erfcl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    erfc(_Tp __x)
    { return __builtin_erfc(__x); }

  constexpr float
  exp2(float __x)
  { return __builtin_exp2f(__x); }

  constexpr long double
  exp2(long double __x)
  { return __builtin_exp2l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    exp2(_Tp __x)
    { return __builtin_exp2(__x); }

  constexpr float
  expm1(float __x)
  { return __builtin_expm1f(__x); }

  constexpr long double
  expm1(long double __x)
  { return __builtin_expm1l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    expm1(_Tp __x)
    { return __builtin_expm1(__x); }

  constexpr float
  fdim(float __x, float __y)
  { return __builtin_fdimf(__x, __y); }

  constexpr long double
  fdim(long double __x, long double __y)
  { return __builtin_fdiml(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fdim(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fdim(__type(__x), __type(__y));
    }

  constexpr float
  fma(float __x, float __y, float __z)
  { return __builtin_fmaf(__x, __y, __z); }

  constexpr long double
  fma(long double __x, long double __y, long double __z)
  { return __builtin_fmal(__x, __y, __z); }

  template<typename _Tp, typename _Up, typename _Vp>
    constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
    fma(_Tp __x, _Up __y, _Vp __z)
    {
      typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
      return fma(__type(__x), __type(__y), __type(__z));
    }

  constexpr float
  fmax(float __x, float __y)
  { return __builtin_fmaxf(__x, __y); }

  constexpr long double
  fmax(long double __x, long double __y)
  { return __builtin_fmaxl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmax(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmax(__type(__x), __type(__y));
    }

  constexpr float
  fmin(float __x, float __y)
  { return __builtin_fminf(__x, __y); }

  constexpr long double
  fmin(long double __x, long double __y)
  { return __builtin_fminl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmin(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmin(__type(__x), __type(__y));
    }

  constexpr float
  hypot(float __x, float __y)
  { return __builtin_hypotf(__x, __y); }

  constexpr long double
  hypot(long double __x, long double __y)
  { return __builtin_hypotl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    hypot(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return hypot(__type(__x), __type(__y));
    }

  constexpr int
  ilogb(float __x)
  { return __builtin_ilogbf(__x); }

  constexpr int
  ilogb(long double __x)
  { return __builtin_ilogbl(__x); }

  template<typename _Tp>
    constexpr
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    int>::__type
    ilogb(_Tp __x)
    { return __builtin_ilogb(__x); }

  constexpr float
  lgamma(float __x)
  { return __builtin_lgammaf(__x); }

  constexpr long double
  lgamma(long double __x)
  { return __builtin_lgammal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    lgamma(_Tp __x)
    { return __builtin_lgamma(__x); }

  constexpr long long
  llrint(float __x)
  { return __builtin_llrintf(__x); }

  constexpr long long
  llrint(long double __x)
  { return __builtin_llrintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long long>::__type
    llrint(_Tp __x)
    { return __builtin_llrint(__x); }

  constexpr long long
  llround(float __x)
  { return __builtin_llroundf(__x); }

  constexpr long long
  llround(long double __x)
  { return __builtin_llroundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long long>::__type
    llround(_Tp __x)
    { return __builtin_llround(__x); }

  constexpr float
  log1p(float __x)
  { return __builtin_log1pf(__x); }

  constexpr long double
  log1p(long double __x)
  { return __builtin_log1pl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    log1p(_Tp __x)
    { return __builtin_log1p(__x); }

  // DR 568.
  constexpr float
  log2(float __x)
  { return __builtin_log2f(__x); }

  constexpr long double
  log2(long double __x)
  { return __builtin_log2l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    log2(_Tp __x)
    { return __builtin_log2(__x); }

  constexpr float
  logb(float __x)
  { return __builtin_logbf(__x); }

  constexpr long double
  logb(long double __x)
  { return __builtin_logbl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    logb(_Tp __x)
    { return __builtin_logb(__x); }

  constexpr long
  lrint(float __x)
  { return __builtin_lrintf(__x); }

  constexpr long
  lrint(long double __x)
  { return __builtin_lrintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long>::__type
    lrint(_Tp __x)
    { return __builtin_lrint(__x); }

  constexpr long
  lround(float __x)
  { return __builtin_lroundf(__x); }

  constexpr long
  lround(long double __x)
  { return __builtin_lroundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long>::__type
    lround(_Tp __x)
    { return __builtin_lround(__x); }

  constexpr float
  nearbyint(float __x)
  { return __builtin_nearbyintf(__x); }

  constexpr long double
  nearbyint(long double __x)
  { return __builtin_nearbyintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    nearbyint(_Tp __x)
    { return __builtin_nearbyint(__x); }

  constexpr float
  nextafter(float __x, float __y)
  { return __builtin_nextafterf(__x, __y); }

  constexpr long double
  nextafter(long double __x, long double __y)
  { return __builtin_nextafterl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    nextafter(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return nextafter(__type(__x), __type(__y));
    }

  constexpr float
  nexttoward(float __x, long double __y)
  { return __builtin_nexttowardf(__x, __y); }

  constexpr long double
  nexttoward(long double __x, long double __y)
  { return __builtin_nexttowardl(__x, __y); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    nexttoward(_Tp __x, long double __y)
    { return __builtin_nexttoward(__x, __y); }

  constexpr float
  remainder(float __x, float __y)
  { return __builtin_remainderf(__x, __y); }

  constexpr long double
  remainder(long double __x, long double __y)
  { return __builtin_remainderl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    remainder(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return remainder(__type(__x), __type(__y));
    }

  inline float
  remquo(float __x, float __y, int* __pquo)
  { return __builtin_remquof(__x, __y, __pquo); }

  inline long double
  remquo(long double __x, long double __y, int* __pquo)
  { return __builtin_remquol(__x, __y, __pquo); }

  template<typename _Tp, typename _Up>
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    remquo(_Tp __x, _Up __y, int* __pquo)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return remquo(__type(__x), __type(__y), __pquo);
    }

  constexpr float
  rint(float __x)
  { return __builtin_rintf(__x); }

  constexpr long double
  rint(long double __x)
  { return __builtin_rintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    rint(_Tp __x)
    { return __builtin_rint(__x); }

  constexpr float
  round(float __x)
  { return __builtin_roundf(__x); }

  constexpr long double
  round(long double __x)
  { return __builtin_roundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    round(_Tp __x)
    { return __builtin_round(__x); }

  constexpr float
  scalbln(float __x, long __ex)
  { return __builtin_scalblnf(__x, __ex); }

  constexpr long double
  scalbln(long double __x, long __ex)
  { return __builtin_scalblnl(__x, __ex); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    scalbln(_Tp __x, long __ex)
    { return __builtin_scalbln(__x, __ex); }
 
  constexpr float
  scalbn(float __x, int __ex)
  { return __builtin_scalbnf(__x, __ex); }

  constexpr long double
  scalbn(long double __x, int __ex)
  { return __builtin_scalbnl(__x, __ex); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    scalbn(_Tp __x, int __ex)
    { return __builtin_scalbn(__x, __ex); }

  constexpr float
  tgamma(float __x)
  { return __builtin_tgammaf(__x); }

  constexpr long double
  tgamma(long double __x)
  { return __builtin_tgammal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    tgamma(_Tp __x)
    { return __builtin_tgamma(__x); }
 
  constexpr float
  trunc(float __x)
  { return __builtin_truncf(__x); }

  constexpr long double
  trunc(long double __x)
  { return __builtin_truncl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    trunc(_Tp __x)
    { return __builtin_trunc(__x); }

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

#endif // _GLIBCXX_USE_C99_MATH_TR1

#endif // C++11
@


1.1.1.1.2.1
log
@sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")
@
text
@d3 3
a5 1
// Copyright (C) 1997-2013 Free Software Foundation, Inc.
d77 1
a77 3
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
d79 15
a93 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR double
a95 1
#endif
d97 1
a97 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d101 1
a101 1
  inline _GLIBCXX_CONSTEXPR long double
a103 1
#endif
d106 2
a107 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d113 1
a113 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d117 1
a117 1
  inline _GLIBCXX_CONSTEXPR long double
a119 1
#endif
d122 2
a123 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d129 1
a129 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d133 1
a133 1
  inline _GLIBCXX_CONSTEXPR long double
a135 1
#endif
d138 2
a139 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d145 1
a145 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d149 1
a149 1
  inline _GLIBCXX_CONSTEXPR long double
a151 1
#endif
d154 2
a155 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d161 1
a161 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d165 1
a165 1
  inline _GLIBCXX_CONSTEXPR long double
a167 1
#endif
d170 5
a174 2
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
d183 1
a183 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d187 1
a187 1
  inline _GLIBCXX_CONSTEXPR long double
a189 1
#endif
d192 2
a193 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d199 1
a199 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d203 1
a203 1
  inline _GLIBCXX_CONSTEXPR long double
a205 1
#endif
d208 2
a209 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d215 1
a215 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d219 1
a219 1
  inline _GLIBCXX_CONSTEXPR long double
a221 1
#endif
d224 2
a225 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d231 1
a231 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d235 1
a235 1
  inline _GLIBCXX_CONSTEXPR long double
a237 1
#endif
d240 2
a241 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d247 1
a247 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d251 1
a251 1
  inline _GLIBCXX_CONSTEXPR long double
a253 1
#endif
d256 2
a257 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d263 1
a263 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d267 1
a267 1
  inline _GLIBCXX_CONSTEXPR long double
a269 1
#endif
d272 2
a273 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d279 1
a279 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d283 1
a283 1
  inline _GLIBCXX_CONSTEXPR long double
a285 10
#endif

  template<typename _Tp, typename _Up>
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmod(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmod(__type(__x), __type(__y));
    }
a288 1
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
a295 1
#endif
d298 2
a299 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d305 1
a305 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d309 1
a309 1
  inline _GLIBCXX_CONSTEXPR long double
a311 1
#endif
d314 4
a317 5
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
    ldexp(_Tp __x, int __exp)
    { return __builtin_ldexp(__x, __exp); }
d321 1
a321 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d325 1
a325 1
  inline _GLIBCXX_CONSTEXPR long double
a327 1
#endif
d330 2
a331 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d337 1
a337 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d341 1
a341 1
  inline _GLIBCXX_CONSTEXPR long double
a343 1
#endif
d346 2
a347 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
a352 1
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
a359 1
#endif
d363 1
a363 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d367 1
a367 1
  inline _GLIBCXX_CONSTEXPR long double
d371 1
a371 1
#if __cplusplus < 201103L
a385 1
#endif
d388 5
a392 2
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
d401 1
a401 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d405 1
a405 1
  inline _GLIBCXX_CONSTEXPR long double
a407 1
#endif
d410 2
a411 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d417 1
a417 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d421 1
a421 1
  inline _GLIBCXX_CONSTEXPR long double
a423 1
#endif
d426 2
a427 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d433 1
a433 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d437 1
a437 1
  inline _GLIBCXX_CONSTEXPR long double
a439 1
#endif
d442 2
a443 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d449 1
a449 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d453 1
a453 1
  inline _GLIBCXX_CONSTEXPR long double
a455 1
#endif
d458 2
a459 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d465 1
a465 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d469 1
a469 1
  inline _GLIBCXX_CONSTEXPR long double
a471 1
#endif
d474 2
a475 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d479 1
a479 2
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
d498 1
a498 249
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

#if __cplusplus >= 201103L
  constexpr int
  fpclassify(float __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  constexpr int
  fpclassify(double __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  constexpr int
  fpclassify(long double __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              int>::__type
    fpclassify(_Tp __x)
    { return __x != 0 ? FP_NORMAL : FP_ZERO; }

  constexpr bool
  isfinite(float __x)
  { return __builtin_isfinite(__x); }

  constexpr bool
  isfinite(double __x)
  { return __builtin_isfinite(__x); }

  constexpr bool
  isfinite(long double __x)
  { return __builtin_isfinite(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isfinite(_Tp __x)
    { return true; }

  constexpr bool
  isinf(float __x)
  { return __builtin_isinf(__x); }

  constexpr bool
  isinf(double __x)
  { return __builtin_isinf(__x); }

  constexpr bool
  isinf(long double __x)
  { return __builtin_isinf(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isinf(_Tp __x)
    { return false; }

  constexpr bool
  isnan(float __x)
  { return __builtin_isnan(__x); }

  constexpr bool
  isnan(double __x)
  { return __builtin_isnan(__x); }

  constexpr bool
  isnan(long double __x)
  { return __builtin_isnan(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isnan(_Tp __x)
    { return false; }

  constexpr bool
  isnormal(float __x)
  { return __builtin_isnormal(__x); }

  constexpr bool
  isnormal(double __x)
  { return __builtin_isnormal(__x); }

  constexpr bool
  isnormal(long double __x)
  { return __builtin_isnormal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isnormal(_Tp __x)
    { return __x != 0 ? true : false; }

  constexpr bool
  signbit(float __x)
  { return __builtin_signbit(__x); }

  constexpr bool
  signbit(double __x)
  { return __builtin_signbit(__x); }

  constexpr bool
  signbit(long double __x)
  { return __builtin_signbit(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    signbit(_Tp __x)
    { return __x < 0 ? true : false; }

  constexpr bool
  isgreater(float __x, float __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreater(double __x, double __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreater(long double __x, long double __y)
  { return __builtin_isgreater(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isgreater(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isgreater(__type(__x), __type(__y));
    }

  constexpr bool
  isgreaterequal(float __x, float __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isgreaterequal(double __x, double __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isgreaterequal(long double __x, long double __y)
  { return __builtin_isgreaterequal(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isgreaterequal(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isgreaterequal(__type(__x), __type(__y));
    }

  constexpr bool
  isless(float __x, float __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  isless(double __x, double __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  isless(long double __x, long double __y)
  { return __builtin_isless(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isless(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isless(__type(__x), __type(__y));
    }

  constexpr bool
  islessequal(float __x, float __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessequal(double __x, double __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessequal(long double __x, long double __y)
  { return __builtin_islessequal(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    islessequal(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_islessequal(__type(__x), __type(__y));
    }

  constexpr bool
  islessgreater(float __x, float __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  islessgreater(double __x, double __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  islessgreater(long double __x, long double __y)
  { return __builtin_islessgreater(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    islessgreater(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_islessgreater(__type(__x), __type(__y));
    }

  constexpr bool
  isunordered(float __x, float __y)
  { return __builtin_isunordered(__x, __y); }

  constexpr bool
  isunordered(double __x, double __y)
  { return __builtin_isunordered(__x, __y); }

  constexpr bool
  isunordered(long double __x, long double __y)
  { return __builtin_isunordered(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isunordered(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isunordered(__type(__x), __type(__y));
    }

#else
d609 1
a609 4
#endif

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
d614 3
a616 1
#if __cplusplus >= 201103L
d618 18
a635 760
#ifdef _GLIBCXX_USE_C99_MATH_TR1

#undef acosh
#undef acoshf
#undef acoshl
#undef asinh
#undef asinhf
#undef asinhl
#undef atanh
#undef atanhf
#undef atanhl
#undef cbrt
#undef cbrtf
#undef cbrtl
#undef copysign
#undef copysignf
#undef copysignl
#undef erf
#undef erff
#undef erfl
#undef erfc
#undef erfcf
#undef erfcl
#undef exp2
#undef exp2f
#undef exp2l
#undef expm1
#undef expm1f
#undef expm1l
#undef fdim
#undef fdimf
#undef fdiml
#undef fma
#undef fmaf
#undef fmal
#undef fmax
#undef fmaxf
#undef fmaxl
#undef fmin
#undef fminf
#undef fminl
#undef hypot
#undef hypotf
#undef hypotl
#undef ilogb
#undef ilogbf
#undef ilogbl
#undef lgamma
#undef lgammaf
#undef lgammal
#undef llrint
#undef llrintf
#undef llrintl
#undef llround
#undef llroundf
#undef llroundl
#undef log1p
#undef log1pf
#undef log1pl
#undef log2
#undef log2f
#undef log2l
#undef logb
#undef logbf
#undef logbl
#undef lrint
#undef lrintf
#undef lrintl
#undef lround
#undef lroundf
#undef lroundl
#undef nan
#undef nanf
#undef nanl
#undef nearbyint
#undef nearbyintf
#undef nearbyintl
#undef nextafter
#undef nextafterf
#undef nextafterl
#undef nexttoward
#undef nexttowardf
#undef nexttowardl
#undef remainder
#undef remainderf
#undef remainderl
#undef remquo
#undef remquof
#undef remquol
#undef rint
#undef rintf
#undef rintl
#undef round
#undef roundf
#undef roundl
#undef scalbln
#undef scalblnf
#undef scalblnl
#undef scalbn
#undef scalbnf
#undef scalbnl
#undef tgamma
#undef tgammaf
#undef tgammal
#undef trunc
#undef truncf
#undef truncl

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  // types
  using ::double_t;
  using ::float_t;

  // functions
  using ::acosh;
  using ::acoshf;
  using ::acoshl;

  using ::asinh;
  using ::asinhf;
  using ::asinhl;

  using ::atanh;
  using ::atanhf;
  using ::atanhl;

  using ::cbrt;
  using ::cbrtf;
  using ::cbrtl;

  using ::copysign;
  using ::copysignf;
  using ::copysignl;

  using ::erf;
  using ::erff;
  using ::erfl;

  using ::erfc;
  using ::erfcf;
  using ::erfcl;

  using ::exp2;
  using ::exp2f;
  using ::exp2l;

  using ::expm1;
  using ::expm1f;
  using ::expm1l;

  using ::fdim;
  using ::fdimf;
  using ::fdiml;

  using ::fma;
  using ::fmaf;
  using ::fmal;

  using ::fmax;
  using ::fmaxf;
  using ::fmaxl;

  using ::fmin;
  using ::fminf;
  using ::fminl;

  using ::hypot;
  using ::hypotf;
  using ::hypotl;

  using ::ilogb;
  using ::ilogbf;
  using ::ilogbl;

  using ::lgamma;
  using ::lgammaf;
  using ::lgammal;

  using ::llrint;
  using ::llrintf;
  using ::llrintl;

  using ::llround;
  using ::llroundf;
  using ::llroundl;

  using ::log1p;
  using ::log1pf;
  using ::log1pl;

  using ::log2;
  using ::log2f;
  using ::log2l;

  using ::logb;
  using ::logbf;
  using ::logbl;

  using ::lrint;
  using ::lrintf;
  using ::lrintl;

  using ::lround;
  using ::lroundf;
  using ::lroundl;

  using ::nan;
  using ::nanf;
  using ::nanl;

  using ::nearbyint;
  using ::nearbyintf;
  using ::nearbyintl;

  using ::nextafter;
  using ::nextafterf;
  using ::nextafterl;

  using ::nexttoward;
  using ::nexttowardf;
  using ::nexttowardl;

  using ::remainder;
  using ::remainderf;
  using ::remainderl;

  using ::remquo;
  using ::remquof;
  using ::remquol;

  using ::rint;
  using ::rintf;
  using ::rintl;

  using ::round;
  using ::roundf;
  using ::roundl;

  using ::scalbln;
  using ::scalblnf;
  using ::scalblnl;

  using ::scalbn;
  using ::scalbnf;
  using ::scalbnl;

  using ::tgamma;
  using ::tgammaf;
  using ::tgammal;

  using ::trunc;
  using ::truncf;
  using ::truncl;

  /// Additional overloads.
  constexpr float
  acosh(float __x)
  { return __builtin_acoshf(__x); }

  constexpr long double
  acosh(long double __x)
  { return __builtin_acoshl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    acosh(_Tp __x)
    { return __builtin_acosh(__x); }

  constexpr float
  asinh(float __x)
  { return __builtin_asinhf(__x); }

  constexpr long double
  asinh(long double __x)
  { return __builtin_asinhl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    asinh(_Tp __x)
    { return __builtin_asinh(__x); }

  constexpr float
  atanh(float __x)
  { return __builtin_atanhf(__x); }

  constexpr long double
  atanh(long double __x)
  { return __builtin_atanhl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    atanh(_Tp __x)
    { return __builtin_atanh(__x); }

  constexpr float
  cbrt(float __x)
  { return __builtin_cbrtf(__x); }

  constexpr long double
  cbrt(long double __x)
  { return __builtin_cbrtl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    cbrt(_Tp __x)
    { return __builtin_cbrt(__x); }

  constexpr float
  copysign(float __x, float __y)
  { return __builtin_copysignf(__x, __y); }

  constexpr long double
  copysign(long double __x, long double __y)
  { return __builtin_copysignl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    copysign(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return copysign(__type(__x), __type(__y));
    }

  constexpr float
  erf(float __x)
  { return __builtin_erff(__x); }

  constexpr long double
  erf(long double __x)
  { return __builtin_erfl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    erf(_Tp __x)
    { return __builtin_erf(__x); }

  constexpr float
  erfc(float __x)
  { return __builtin_erfcf(__x); }

  constexpr long double
  erfc(long double __x)
  { return __builtin_erfcl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    erfc(_Tp __x)
    { return __builtin_erfc(__x); }

  constexpr float
  exp2(float __x)
  { return __builtin_exp2f(__x); }

  constexpr long double
  exp2(long double __x)
  { return __builtin_exp2l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    exp2(_Tp __x)
    { return __builtin_exp2(__x); }

  constexpr float
  expm1(float __x)
  { return __builtin_expm1f(__x); }

  constexpr long double
  expm1(long double __x)
  { return __builtin_expm1l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    expm1(_Tp __x)
    { return __builtin_expm1(__x); }

  constexpr float
  fdim(float __x, float __y)
  { return __builtin_fdimf(__x, __y); }

  constexpr long double
  fdim(long double __x, long double __y)
  { return __builtin_fdiml(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fdim(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fdim(__type(__x), __type(__y));
    }

  constexpr float
  fma(float __x, float __y, float __z)
  { return __builtin_fmaf(__x, __y, __z); }

  constexpr long double
  fma(long double __x, long double __y, long double __z)
  { return __builtin_fmal(__x, __y, __z); }

  template<typename _Tp, typename _Up, typename _Vp>
    constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
    fma(_Tp __x, _Up __y, _Vp __z)
    {
      typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
      return fma(__type(__x), __type(__y), __type(__z));
    }

  constexpr float
  fmax(float __x, float __y)
  { return __builtin_fmaxf(__x, __y); }

  constexpr long double
  fmax(long double __x, long double __y)
  { return __builtin_fmaxl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmax(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmax(__type(__x), __type(__y));
    }

  constexpr float
  fmin(float __x, float __y)
  { return __builtin_fminf(__x, __y); }

  constexpr long double
  fmin(long double __x, long double __y)
  { return __builtin_fminl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmin(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmin(__type(__x), __type(__y));
    }

  constexpr float
  hypot(float __x, float __y)
  { return __builtin_hypotf(__x, __y); }

  constexpr long double
  hypot(long double __x, long double __y)
  { return __builtin_hypotl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    hypot(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return hypot(__type(__x), __type(__y));
    }

  constexpr int
  ilogb(float __x)
  { return __builtin_ilogbf(__x); }

  constexpr int
  ilogb(long double __x)
  { return __builtin_ilogbl(__x); }

  template<typename _Tp>
    constexpr
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    int>::__type
    ilogb(_Tp __x)
    { return __builtin_ilogb(__x); }

  constexpr float
  lgamma(float __x)
  { return __builtin_lgammaf(__x); }

  constexpr long double
  lgamma(long double __x)
  { return __builtin_lgammal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    lgamma(_Tp __x)
    { return __builtin_lgamma(__x); }

  constexpr long long
  llrint(float __x)
  { return __builtin_llrintf(__x); }

  constexpr long long
  llrint(long double __x)
  { return __builtin_llrintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long long>::__type
    llrint(_Tp __x)
    { return __builtin_llrint(__x); }

  constexpr long long
  llround(float __x)
  { return __builtin_llroundf(__x); }

  constexpr long long
  llround(long double __x)
  { return __builtin_llroundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long long>::__type
    llround(_Tp __x)
    { return __builtin_llround(__x); }

  constexpr float
  log1p(float __x)
  { return __builtin_log1pf(__x); }

  constexpr long double
  log1p(long double __x)
  { return __builtin_log1pl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    log1p(_Tp __x)
    { return __builtin_log1p(__x); }

  // DR 568.
  constexpr float
  log2(float __x)
  { return __builtin_log2f(__x); }

  constexpr long double
  log2(long double __x)
  { return __builtin_log2l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    log2(_Tp __x)
    { return __builtin_log2(__x); }

  constexpr float
  logb(float __x)
  { return __builtin_logbf(__x); }

  constexpr long double
  logb(long double __x)
  { return __builtin_logbl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    logb(_Tp __x)
    { return __builtin_logb(__x); }

  constexpr long
  lrint(float __x)
  { return __builtin_lrintf(__x); }

  constexpr long
  lrint(long double __x)
  { return __builtin_lrintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long>::__type
    lrint(_Tp __x)
    { return __builtin_lrint(__x); }

  constexpr long
  lround(float __x)
  { return __builtin_lroundf(__x); }

  constexpr long
  lround(long double __x)
  { return __builtin_lroundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long>::__type
    lround(_Tp __x)
    { return __builtin_lround(__x); }

  constexpr float
  nearbyint(float __x)
  { return __builtin_nearbyintf(__x); }

  constexpr long double
  nearbyint(long double __x)
  { return __builtin_nearbyintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    nearbyint(_Tp __x)
    { return __builtin_nearbyint(__x); }

  constexpr float
  nextafter(float __x, float __y)
  { return __builtin_nextafterf(__x, __y); }

  constexpr long double
  nextafter(long double __x, long double __y)
  { return __builtin_nextafterl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    nextafter(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return nextafter(__type(__x), __type(__y));
    }

  constexpr float
  nexttoward(float __x, long double __y)
  { return __builtin_nexttowardf(__x, __y); }

  constexpr long double
  nexttoward(long double __x, long double __y)
  { return __builtin_nexttowardl(__x, __y); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    nexttoward(_Tp __x, long double __y)
    { return __builtin_nexttoward(__x, __y); }

  constexpr float
  remainder(float __x, float __y)
  { return __builtin_remainderf(__x, __y); }

  constexpr long double
  remainder(long double __x, long double __y)
  { return __builtin_remainderl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    remainder(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return remainder(__type(__x), __type(__y));
    }

  inline float
  remquo(float __x, float __y, int* __pquo)
  { return __builtin_remquof(__x, __y, __pquo); }

  inline long double
  remquo(long double __x, long double __y, int* __pquo)
  { return __builtin_remquol(__x, __y, __pquo); }

  template<typename _Tp, typename _Up>
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    remquo(_Tp __x, _Up __y, int* __pquo)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return remquo(__type(__x), __type(__y), __pquo);
    }

  constexpr float
  rint(float __x)
  { return __builtin_rintf(__x); }

  constexpr long double
  rint(long double __x)
  { return __builtin_rintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    rint(_Tp __x)
    { return __builtin_rint(__x); }

  constexpr float
  round(float __x)
  { return __builtin_roundf(__x); }

  constexpr long double
  round(long double __x)
  { return __builtin_roundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    round(_Tp __x)
    { return __builtin_round(__x); }

  constexpr float
  scalbln(float __x, long __ex)
  { return __builtin_scalblnf(__x, __ex); }

  constexpr long double
  scalbln(long double __x, long __ex)
  { return __builtin_scalblnl(__x, __ex); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    scalbln(_Tp __x, long __ex)
    { return __builtin_scalbln(__x, __ex); }
 
  constexpr float
  scalbn(float __x, int __ex)
  { return __builtin_scalbnf(__x, __ex); }

  constexpr long double
  scalbn(long double __x, int __ex)
  { return __builtin_scalbnl(__x, __ex); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    scalbn(_Tp __x, int __ex)
    { return __builtin_scalbn(__x, __ex); }

  constexpr float
  tgamma(float __x)
  { return __builtin_tgammaf(__x); }

  constexpr long double
  tgamma(long double __x)
  { return __builtin_tgammal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    tgamma(_Tp __x)
    { return __builtin_tgamma(__x); }
 
  constexpr float
  trunc(float __x)
  { return __builtin_truncf(__x); }

  constexpr long double
  trunc(long double __x)
  { return __builtin_truncl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    trunc(_Tp __x)
    { return __builtin_trunc(__x); }

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

#endif // _GLIBCXX_USE_C99_MATH_TR1

#endif // C++11
@


1.1.1.2
log
@import GCC 4.8 branch at r206687.

highlights from: http://gcc.gnu.org/gcc-4.6/changes.html

   GCC now has stricter checks for invalid command-line options
   New -Wunused-but-set-variable and -Wunused-but-set-parameter
      warnings
   Many platforms have been obsoleted
   Link-time optimization improvements
   A new switch -fstack-usage has been added
   A new function attribute leaf was introduced
   A new warning, enabled by -Wdouble-promotion
   Support for selectively enabling and disabling warnings via
      #pragma GCC diagnostic has been added
   There is now experimental support for some features from the
      upcoming C1X revision of the ISO C standard
   Improved experimental support for the upcoming C++0x ISO C++
      standard
   G++ now issues clearer diagnostics in several cases
   Updates for ARM, x86, MIPS, PPC/PPC64, SPARC
   Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
      __float128 on 32-bit and 64-bit x86 targets. [*1]

highlights from: http://gcc.gnu.org/gcc-4.7/changes.html

   The -fconserve-space flag has been deprecated
   Support for a new parameter --param case-values-threshold=n
      was added
   Interprocedural and Link-time optimization improvements
   A new built-in, __builtin_assume_aligned, has been added
   A new warning option -Wunused-local-typedefs was added
   A new experimental command-line option -ftrack-macro-expansion
      was added
   Support for atomic operations specifying the C++11/C11 memory
      model has been added
   There is support for some more features from the C11 revision
      of the ISO C standard
   Improved experimental support for the new ISO C++ standard,
      C++11
   Updates for ARM, x86, MIPS, PPC/PPC64, SH, SPARC, TILE*
   A new option (-grecord-gcc-switches) was added

highlights from: http://gcc.gnu.org/gcc-4.8/changes.html

   GCC now uses C++ as its implementation language.  This means
      that to build GCC from sources, you will need a C++
      compiler that understands C++ 2003
   DWARF4 is now the default when generating DWARF debug
      information
   A new general optimization level, -Og, has been introduced
   A new option -ftree-partial-pre was added
   The option -fconserve-space has been removed
   The command-line options -fipa-struct-reorg and
      -fipa-matrix-reorg have been removed
   Interprocedural and Link-time optimization improvements
   AddressSanitizer, a fast memory error detector, has been
      added  [*2]
   A new -Wsizeof-pointer-memaccess warning has been added
   G++ now supports a -std=c++1y option for experimentation
      with features proposed for the next revision of the
      standard, expected around 2014
   Improved experimental support for the new ISO C++ standard,
      C++11
   A new port has been added to support AArch64
   Updates for ARM, x86, MIPS, PPC/PPC64, SH, SPARC, TILE*


[*1] we should support this too!
[*2] we should look into this.
     https://code.google.com/p/address-sanitizer/
@
text
@d3 3
a5 1
// Copyright (C) 1997-2013 Free Software Foundation, Inc.
d77 1
a77 3
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
d79 15
a93 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR double
a95 1
#endif
d97 1
a97 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d101 1
a101 1
  inline _GLIBCXX_CONSTEXPR long double
a103 1
#endif
d106 2
a107 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d113 1
a113 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d117 1
a117 1
  inline _GLIBCXX_CONSTEXPR long double
a119 1
#endif
d122 2
a123 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d129 1
a129 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d133 1
a133 1
  inline _GLIBCXX_CONSTEXPR long double
a135 1
#endif
d138 2
a139 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d145 1
a145 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d149 1
a149 1
  inline _GLIBCXX_CONSTEXPR long double
a151 1
#endif
d154 2
a155 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d161 1
a161 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d165 1
a165 1
  inline _GLIBCXX_CONSTEXPR long double
a167 1
#endif
d170 5
a174 2
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
d183 1
a183 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d187 1
a187 1
  inline _GLIBCXX_CONSTEXPR long double
a189 1
#endif
d192 2
a193 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d199 1
a199 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d203 1
a203 1
  inline _GLIBCXX_CONSTEXPR long double
a205 1
#endif
d208 2
a209 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d215 1
a215 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d219 1
a219 1
  inline _GLIBCXX_CONSTEXPR long double
a221 1
#endif
d224 2
a225 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d231 1
a231 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d235 1
a235 1
  inline _GLIBCXX_CONSTEXPR long double
a237 1
#endif
d240 2
a241 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d247 1
a247 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d251 1
a251 1
  inline _GLIBCXX_CONSTEXPR long double
a253 1
#endif
d256 2
a257 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d263 1
a263 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d267 1
a267 1
  inline _GLIBCXX_CONSTEXPR long double
a269 1
#endif
d272 2
a273 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
d279 1
a279 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d283 1
a283 1
  inline _GLIBCXX_CONSTEXPR long double
a285 10
#endif

  template<typename _Tp, typename _Up>
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmod(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmod(__type(__x), __type(__y));
    }
a288 1
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
a295 1
#endif
d298 2
a299 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d305 1
a305 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d309 1
a309 1
  inline _GLIBCXX_CONSTEXPR long double
a311 1
#endif
d314 4
a317 5
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
    ldexp(_Tp __x, int __exp)
    { return __builtin_ldexp(__x, __exp); }
d321 1
a321 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d325 1
a325 1
  inline _GLIBCXX_CONSTEXPR long double
a327 1
#endif
d330 2
a331 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d337 1
a337 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d341 1
a341 1
  inline _GLIBCXX_CONSTEXPR long double
a343 1
#endif
d346 2
a347 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    double>::__type
a352 1
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
a359 1
#endif
d363 1
a363 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d367 1
a367 1
  inline _GLIBCXX_CONSTEXPR long double
d371 1
a371 1
#if __cplusplus < 201103L
a385 1
#endif
d388 5
a392 2
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
d401 1
a401 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d405 1
a405 1
  inline _GLIBCXX_CONSTEXPR long double
a407 1
#endif
d410 2
a411 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d417 1
a417 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d421 1
a421 1
  inline _GLIBCXX_CONSTEXPR long double
a423 1
#endif
d426 2
a427 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d433 1
a433 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d437 1
a437 1
  inline _GLIBCXX_CONSTEXPR long double
a439 1
#endif
d442 2
a443 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d449 1
a449 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d453 1
a453 1
  inline _GLIBCXX_CONSTEXPR long double
a455 1
#endif
d458 2
a459 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d465 1
a465 2
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
  inline _GLIBCXX_CONSTEXPR float
d469 1
a469 1
  inline _GLIBCXX_CONSTEXPR long double
a471 1
#endif
d474 2
a475 3
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    double>::__type
d479 1
a479 2
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
d498 1
a498 249
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

#if __cplusplus >= 201103L
  constexpr int
  fpclassify(float __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  constexpr int
  fpclassify(double __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  constexpr int
  fpclassify(long double __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              int>::__type
    fpclassify(_Tp __x)
    { return __x != 0 ? FP_NORMAL : FP_ZERO; }

  constexpr bool
  isfinite(float __x)
  { return __builtin_isfinite(__x); }

  constexpr bool
  isfinite(double __x)
  { return __builtin_isfinite(__x); }

  constexpr bool
  isfinite(long double __x)
  { return __builtin_isfinite(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isfinite(_Tp __x)
    { return true; }

  constexpr bool
  isinf(float __x)
  { return __builtin_isinf(__x); }

  constexpr bool
  isinf(double __x)
  { return __builtin_isinf(__x); }

  constexpr bool
  isinf(long double __x)
  { return __builtin_isinf(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isinf(_Tp __x)
    { return false; }

  constexpr bool
  isnan(float __x)
  { return __builtin_isnan(__x); }

  constexpr bool
  isnan(double __x)
  { return __builtin_isnan(__x); }

  constexpr bool
  isnan(long double __x)
  { return __builtin_isnan(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isnan(_Tp __x)
    { return false; }

  constexpr bool
  isnormal(float __x)
  { return __builtin_isnormal(__x); }

  constexpr bool
  isnormal(double __x)
  { return __builtin_isnormal(__x); }

  constexpr bool
  isnormal(long double __x)
  { return __builtin_isnormal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    isnormal(_Tp __x)
    { return __x != 0 ? true : false; }

  constexpr bool
  signbit(float __x)
  { return __builtin_signbit(__x); }

  constexpr bool
  signbit(double __x)
  { return __builtin_signbit(__x); }

  constexpr bool
  signbit(long double __x)
  { return __builtin_signbit(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                              bool>::__type
    signbit(_Tp __x)
    { return __x < 0 ? true : false; }

  constexpr bool
  isgreater(float __x, float __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreater(double __x, double __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreater(long double __x, long double __y)
  { return __builtin_isgreater(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isgreater(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isgreater(__type(__x), __type(__y));
    }

  constexpr bool
  isgreaterequal(float __x, float __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isgreaterequal(double __x, double __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isgreaterequal(long double __x, long double __y)
  { return __builtin_isgreaterequal(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isgreaterequal(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isgreaterequal(__type(__x), __type(__y));
    }

  constexpr bool
  isless(float __x, float __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  isless(double __x, double __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  isless(long double __x, long double __y)
  { return __builtin_isless(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isless(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isless(__type(__x), __type(__y));
    }

  constexpr bool
  islessequal(float __x, float __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessequal(double __x, double __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessequal(long double __x, long double __y)
  { return __builtin_islessequal(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    islessequal(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_islessequal(__type(__x), __type(__y));
    }

  constexpr bool
  islessgreater(float __x, float __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  islessgreater(double __x, double __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  islessgreater(long double __x, long double __y)
  { return __builtin_islessgreater(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    islessgreater(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_islessgreater(__type(__x), __type(__y));
    }

  constexpr bool
  isunordered(float __x, float __y)
  { return __builtin_isunordered(__x, __y); }

  constexpr bool
  isunordered(double __x, double __y)
  { return __builtin_isunordered(__x, __y); }

  constexpr bool
  isunordered(long double __x, long double __y)
  { return __builtin_isunordered(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename
    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
			    && __is_arithmetic<_Up>::__value), bool>::__type
    isunordered(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return __builtin_isunordered(__type(__x), __type(__y));
    }

#else
d609 1
a609 4
#endif

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
d614 3
a616 1
#if __cplusplus >= 201103L
d618 18
a635 760
#ifdef _GLIBCXX_USE_C99_MATH_TR1

#undef acosh
#undef acoshf
#undef acoshl
#undef asinh
#undef asinhf
#undef asinhl
#undef atanh
#undef atanhf
#undef atanhl
#undef cbrt
#undef cbrtf
#undef cbrtl
#undef copysign
#undef copysignf
#undef copysignl
#undef erf
#undef erff
#undef erfl
#undef erfc
#undef erfcf
#undef erfcl
#undef exp2
#undef exp2f
#undef exp2l
#undef expm1
#undef expm1f
#undef expm1l
#undef fdim
#undef fdimf
#undef fdiml
#undef fma
#undef fmaf
#undef fmal
#undef fmax
#undef fmaxf
#undef fmaxl
#undef fmin
#undef fminf
#undef fminl
#undef hypot
#undef hypotf
#undef hypotl
#undef ilogb
#undef ilogbf
#undef ilogbl
#undef lgamma
#undef lgammaf
#undef lgammal
#undef llrint
#undef llrintf
#undef llrintl
#undef llround
#undef llroundf
#undef llroundl
#undef log1p
#undef log1pf
#undef log1pl
#undef log2
#undef log2f
#undef log2l
#undef logb
#undef logbf
#undef logbl
#undef lrint
#undef lrintf
#undef lrintl
#undef lround
#undef lroundf
#undef lroundl
#undef nan
#undef nanf
#undef nanl
#undef nearbyint
#undef nearbyintf
#undef nearbyintl
#undef nextafter
#undef nextafterf
#undef nextafterl
#undef nexttoward
#undef nexttowardf
#undef nexttowardl
#undef remainder
#undef remainderf
#undef remainderl
#undef remquo
#undef remquof
#undef remquol
#undef rint
#undef rintf
#undef rintl
#undef round
#undef roundf
#undef roundl
#undef scalbln
#undef scalblnf
#undef scalblnl
#undef scalbn
#undef scalbnf
#undef scalbnl
#undef tgamma
#undef tgammaf
#undef tgammal
#undef trunc
#undef truncf
#undef truncl

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  // types
  using ::double_t;
  using ::float_t;

  // functions
  using ::acosh;
  using ::acoshf;
  using ::acoshl;

  using ::asinh;
  using ::asinhf;
  using ::asinhl;

  using ::atanh;
  using ::atanhf;
  using ::atanhl;

  using ::cbrt;
  using ::cbrtf;
  using ::cbrtl;

  using ::copysign;
  using ::copysignf;
  using ::copysignl;

  using ::erf;
  using ::erff;
  using ::erfl;

  using ::erfc;
  using ::erfcf;
  using ::erfcl;

  using ::exp2;
  using ::exp2f;
  using ::exp2l;

  using ::expm1;
  using ::expm1f;
  using ::expm1l;

  using ::fdim;
  using ::fdimf;
  using ::fdiml;

  using ::fma;
  using ::fmaf;
  using ::fmal;

  using ::fmax;
  using ::fmaxf;
  using ::fmaxl;

  using ::fmin;
  using ::fminf;
  using ::fminl;

  using ::hypot;
  using ::hypotf;
  using ::hypotl;

  using ::ilogb;
  using ::ilogbf;
  using ::ilogbl;

  using ::lgamma;
  using ::lgammaf;
  using ::lgammal;

  using ::llrint;
  using ::llrintf;
  using ::llrintl;

  using ::llround;
  using ::llroundf;
  using ::llroundl;

  using ::log1p;
  using ::log1pf;
  using ::log1pl;

  using ::log2;
  using ::log2f;
  using ::log2l;

  using ::logb;
  using ::logbf;
  using ::logbl;

  using ::lrint;
  using ::lrintf;
  using ::lrintl;

  using ::lround;
  using ::lroundf;
  using ::lroundl;

  using ::nan;
  using ::nanf;
  using ::nanl;

  using ::nearbyint;
  using ::nearbyintf;
  using ::nearbyintl;

  using ::nextafter;
  using ::nextafterf;
  using ::nextafterl;

  using ::nexttoward;
  using ::nexttowardf;
  using ::nexttowardl;

  using ::remainder;
  using ::remainderf;
  using ::remainderl;

  using ::remquo;
  using ::remquof;
  using ::remquol;

  using ::rint;
  using ::rintf;
  using ::rintl;

  using ::round;
  using ::roundf;
  using ::roundl;

  using ::scalbln;
  using ::scalblnf;
  using ::scalblnl;

  using ::scalbn;
  using ::scalbnf;
  using ::scalbnl;

  using ::tgamma;
  using ::tgammaf;
  using ::tgammal;

  using ::trunc;
  using ::truncf;
  using ::truncl;

  /// Additional overloads.
  constexpr float
  acosh(float __x)
  { return __builtin_acoshf(__x); }

  constexpr long double
  acosh(long double __x)
  { return __builtin_acoshl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    acosh(_Tp __x)
    { return __builtin_acosh(__x); }

  constexpr float
  asinh(float __x)
  { return __builtin_asinhf(__x); }

  constexpr long double
  asinh(long double __x)
  { return __builtin_asinhl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    asinh(_Tp __x)
    { return __builtin_asinh(__x); }

  constexpr float
  atanh(float __x)
  { return __builtin_atanhf(__x); }

  constexpr long double
  atanh(long double __x)
  { return __builtin_atanhl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    atanh(_Tp __x)
    { return __builtin_atanh(__x); }

  constexpr float
  cbrt(float __x)
  { return __builtin_cbrtf(__x); }

  constexpr long double
  cbrt(long double __x)
  { return __builtin_cbrtl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    cbrt(_Tp __x)
    { return __builtin_cbrt(__x); }

  constexpr float
  copysign(float __x, float __y)
  { return __builtin_copysignf(__x, __y); }

  constexpr long double
  copysign(long double __x, long double __y)
  { return __builtin_copysignl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    copysign(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return copysign(__type(__x), __type(__y));
    }

  constexpr float
  erf(float __x)
  { return __builtin_erff(__x); }

  constexpr long double
  erf(long double __x)
  { return __builtin_erfl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    erf(_Tp __x)
    { return __builtin_erf(__x); }

  constexpr float
  erfc(float __x)
  { return __builtin_erfcf(__x); }

  constexpr long double
  erfc(long double __x)
  { return __builtin_erfcl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    erfc(_Tp __x)
    { return __builtin_erfc(__x); }

  constexpr float
  exp2(float __x)
  { return __builtin_exp2f(__x); }

  constexpr long double
  exp2(long double __x)
  { return __builtin_exp2l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    exp2(_Tp __x)
    { return __builtin_exp2(__x); }

  constexpr float
  expm1(float __x)
  { return __builtin_expm1f(__x); }

  constexpr long double
  expm1(long double __x)
  { return __builtin_expm1l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    expm1(_Tp __x)
    { return __builtin_expm1(__x); }

  constexpr float
  fdim(float __x, float __y)
  { return __builtin_fdimf(__x, __y); }

  constexpr long double
  fdim(long double __x, long double __y)
  { return __builtin_fdiml(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fdim(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fdim(__type(__x), __type(__y));
    }

  constexpr float
  fma(float __x, float __y, float __z)
  { return __builtin_fmaf(__x, __y, __z); }

  constexpr long double
  fma(long double __x, long double __y, long double __z)
  { return __builtin_fmal(__x, __y, __z); }

  template<typename _Tp, typename _Up, typename _Vp>
    constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
    fma(_Tp __x, _Up __y, _Vp __z)
    {
      typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
      return fma(__type(__x), __type(__y), __type(__z));
    }

  constexpr float
  fmax(float __x, float __y)
  { return __builtin_fmaxf(__x, __y); }

  constexpr long double
  fmax(long double __x, long double __y)
  { return __builtin_fmaxl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmax(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmax(__type(__x), __type(__y));
    }

  constexpr float
  fmin(float __x, float __y)
  { return __builtin_fminf(__x, __y); }

  constexpr long double
  fmin(long double __x, long double __y)
  { return __builtin_fminl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmin(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmin(__type(__x), __type(__y));
    }

  constexpr float
  hypot(float __x, float __y)
  { return __builtin_hypotf(__x, __y); }

  constexpr long double
  hypot(long double __x, long double __y)
  { return __builtin_hypotl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    hypot(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return hypot(__type(__x), __type(__y));
    }

  constexpr int
  ilogb(float __x)
  { return __builtin_ilogbf(__x); }

  constexpr int
  ilogb(long double __x)
  { return __builtin_ilogbl(__x); }

  template<typename _Tp>
    constexpr
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    int>::__type
    ilogb(_Tp __x)
    { return __builtin_ilogb(__x); }

  constexpr float
  lgamma(float __x)
  { return __builtin_lgammaf(__x); }

  constexpr long double
  lgamma(long double __x)
  { return __builtin_lgammal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    lgamma(_Tp __x)
    { return __builtin_lgamma(__x); }

  constexpr long long
  llrint(float __x)
  { return __builtin_llrintf(__x); }

  constexpr long long
  llrint(long double __x)
  { return __builtin_llrintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long long>::__type
    llrint(_Tp __x)
    { return __builtin_llrint(__x); }

  constexpr long long
  llround(float __x)
  { return __builtin_llroundf(__x); }

  constexpr long long
  llround(long double __x)
  { return __builtin_llroundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long long>::__type
    llround(_Tp __x)
    { return __builtin_llround(__x); }

  constexpr float
  log1p(float __x)
  { return __builtin_log1pf(__x); }

  constexpr long double
  log1p(long double __x)
  { return __builtin_log1pl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    log1p(_Tp __x)
    { return __builtin_log1p(__x); }

  // DR 568.
  constexpr float
  log2(float __x)
  { return __builtin_log2f(__x); }

  constexpr long double
  log2(long double __x)
  { return __builtin_log2l(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    log2(_Tp __x)
    { return __builtin_log2(__x); }

  constexpr float
  logb(float __x)
  { return __builtin_logbf(__x); }

  constexpr long double
  logb(long double __x)
  { return __builtin_logbl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    logb(_Tp __x)
    { return __builtin_logb(__x); }

  constexpr long
  lrint(float __x)
  { return __builtin_lrintf(__x); }

  constexpr long
  lrint(long double __x)
  { return __builtin_lrintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long>::__type
    lrint(_Tp __x)
    { return __builtin_lrint(__x); }

  constexpr long
  lround(float __x)
  { return __builtin_lroundf(__x); }

  constexpr long
  lround(long double __x)
  { return __builtin_lroundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long>::__type
    lround(_Tp __x)
    { return __builtin_lround(__x); }

  constexpr float
  nearbyint(float __x)
  { return __builtin_nearbyintf(__x); }

  constexpr long double
  nearbyint(long double __x)
  { return __builtin_nearbyintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    nearbyint(_Tp __x)
    { return __builtin_nearbyint(__x); }

  constexpr float
  nextafter(float __x, float __y)
  { return __builtin_nextafterf(__x, __y); }

  constexpr long double
  nextafter(long double __x, long double __y)
  { return __builtin_nextafterl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    nextafter(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return nextafter(__type(__x), __type(__y));
    }

  constexpr float
  nexttoward(float __x, long double __y)
  { return __builtin_nexttowardf(__x, __y); }

  constexpr long double
  nexttoward(long double __x, long double __y)
  { return __builtin_nexttowardl(__x, __y); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    nexttoward(_Tp __x, long double __y)
    { return __builtin_nexttoward(__x, __y); }

  constexpr float
  remainder(float __x, float __y)
  { return __builtin_remainderf(__x, __y); }

  constexpr long double
  remainder(long double __x, long double __y)
  { return __builtin_remainderl(__x, __y); }

  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    remainder(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return remainder(__type(__x), __type(__y));
    }

  inline float
  remquo(float __x, float __y, int* __pquo)
  { return __builtin_remquof(__x, __y, __pquo); }

  inline long double
  remquo(long double __x, long double __y, int* __pquo)
  { return __builtin_remquol(__x, __y, __pquo); }

  template<typename _Tp, typename _Up>
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    remquo(_Tp __x, _Up __y, int* __pquo)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return remquo(__type(__x), __type(__y), __pquo);
    }

  constexpr float
  rint(float __x)
  { return __builtin_rintf(__x); }

  constexpr long double
  rint(long double __x)
  { return __builtin_rintl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    rint(_Tp __x)
    { return __builtin_rint(__x); }

  constexpr float
  round(float __x)
  { return __builtin_roundf(__x); }

  constexpr long double
  round(long double __x)
  { return __builtin_roundl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    round(_Tp __x)
    { return __builtin_round(__x); }

  constexpr float
  scalbln(float __x, long __ex)
  { return __builtin_scalblnf(__x, __ex); }

  constexpr long double
  scalbln(long double __x, long __ex)
  { return __builtin_scalblnl(__x, __ex); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    scalbln(_Tp __x, long __ex)
    { return __builtin_scalbln(__x, __ex); }
 
  constexpr float
  scalbn(float __x, int __ex)
  { return __builtin_scalbnf(__x, __ex); }

  constexpr long double
  scalbn(long double __x, int __ex)
  { return __builtin_scalbnl(__x, __ex); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    scalbn(_Tp __x, int __ex)
    { return __builtin_scalbn(__x, __ex); }

  constexpr float
  tgamma(float __x)
  { return __builtin_tgammaf(__x); }

  constexpr long double
  tgamma(long double __x)
  { return __builtin_tgammal(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    tgamma(_Tp __x)
    { return __builtin_tgamma(__x); }
 
  constexpr float
  trunc(float __x)
  { return __builtin_truncf(__x); }

  constexpr long double
  trunc(long double __x)
  { return __builtin_truncl(__x); }

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    trunc(_Tp __x)
    { return __builtin_trunc(__x); }

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

#endif // _GLIBCXX_USE_C99_MATH_TR1

#endif // C++11
@


1.1.1.3
log
@import GCC 5.3.0.  see these urls for details which are too large to
include here:

	http://gcc.gnu.org/gcc-4.9/changes.html
	http://gcc.gnu.org/gcc-5/changes.html

(note that GCC 5.x is a release stream like GCC 4.9.x, 4.8.x, etc.)


the main issues we will have are:

The default mode for C is now -std=gnu11 instead of -std=gnu89.

ARM:
The deprecated option -mwords-little-endian has been removed.
The options -mapcs, -mapcs-frame, -mtpcs-frame and -mtpcs-leaf-frame
 which are only applicable to the old ABI have been deprecated.

MIPS:
The o32 ABI has been modified and extended. The o32 64-bit
 floating-point register support is now obsolete and has been removed.
 It has been replaced by three ABI extensions FPXX, FP64A, and FP64.
 The meaning of the -mfp64 command-line option has changed. It is now
 used to enable the FP64A and FP64 ABI extensions.
@
text
@d3 1
a3 1
// Copyright (C) 1997-2015 Free Software Foundation, Inc.
a559 2

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a573 1
#endif
a580 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a591 1
#endif
a598 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a609 1
#endif
a616 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a627 1
#endif
a634 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a645 1
#endif
a652 2
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
  // The front-end doesn't provide a type generic builtin (libstdc++/58625).
d655 1
a655 1
  { return __builtin_signbitf(__x); }
d663 1
a663 2
  { return __builtin_signbitl(__x); }
#endif
a670 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a681 1
#endif
a692 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a703 1
#endif
a714 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a725 1
#endif
a736 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a747 1
#endif
a758 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a769 1
#endif
a780 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a791 1
#endif
a1181 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1188 1
#endif
a1195 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1202 1
#endif
a1209 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1216 1
#endif
a1223 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1230 1
#endif
a1237 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1244 1
#endif
a1253 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1260 1
#endif
a1267 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1274 1
#endif
a1281 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1288 1
#endif
a1295 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1302 1
#endif
a1309 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1316 1
#endif
a1325 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1332 1
#endif
a1341 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1348 1
#endif
a1357 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1364 1
#endif
a1373 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1380 1
#endif
a1389 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1396 1
#endif
a1404 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1411 1
#endif
a1418 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1425 1
#endif
a1432 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1439 1
#endif
a1446 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1453 1
#endif
a1460 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1468 1
#endif
a1475 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1482 1
#endif
a1489 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1496 1
#endif
a1503 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1510 1
#endif
a1517 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1524 1
#endif
a1531 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1538 1
#endif
a1547 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1554 1
#endif
a1561 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1568 1
#endif
a1577 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1584 1
#endif
a1593 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1600 1
#endif
a1607 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1614 1
#endif
a1621 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1628 1
#endif
a1635 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1642 1
#endif
a1649 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1656 1
#endif
a1663 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
a1670 1
#endif
@


1.1.1.4
log
@import GCC 5.4.0 release.  there's not a lot of new info though at
least these 135 (!) GCC PRs have been fixed by the update:

68730 69714 67550 70209 71254 70839 69737 70067 67355 67172 69239
65779 69546 70272 70421 65985 67339 67411 68309 68585 68679 68890
68949 69009 70139 70494 68162 69135 70306 68965 70297 70635 66786
69098 70347 69719 70526 70941 69400 69577 69447 65689 65886 65932
66655 68269 68789 69614 69648 69666 69764 69794 70044 70052 65726
68910 64289 68671 68835 69669 70329 71204 69355 67364 68049 68998
69323 69743 69995 69146 68651 67755 67484 68790 68907 69099 69496
69509 69516 70393 69222 69703 69939 70609 71004 71005 71036 71037
71038 68636 69013 69606 70115 70333 70430 60290 70356 69305 70024
67781 69414 69140 70510 60164 66635 67896 68106 68298 68449 68779
68921 68986 69037 69147 69194 69366 69399 69705 69917 69969 70613
71317 69268 70269 69032 65702 69219 69484 65996 66680 68283 69603
70350 67451 61397
@
text
@d883 1
a883 5
      return sizeof(__type) == sizeof(float)
	? __builtin_signbitf(__type(__f))
	: sizeof(__type) == sizeof(double)
	? __builtin_signbit(__type(__f))
	: __builtin_signbitl(__type(__f));
@


1.1.1.4.8.1
log
@Pull up the gcc 5.5 import and assorted fixes, requested by mrg in ticket #381:

external/gpl3/gcc/dist/fixincludes/tests/base/iso/stdlib_c99.h up to 1.1.1.1
external/gpl3/gcc/dist/gcc/config/arm/t-phoenix up to 1.1.1.1
external/gpl3/gcc/dist/gcc/config/phoenix.h     up to 1.1.1.1
external/gpl3/gcc/dist/gcc/config/aarch64/aarch64-freebsd.h up to 1.1.1.1
external/gpl3/gcc/dist/gcc/config/aarch64/t-aarch64-freebsd up to 1.1.1.1
external/gpl3/gcc/dist/gcc/doc/gcov-dump.1      up to 1.1.1.1
external/gpl3/gcc/dist/gcc/doc/gcov-dump.texi   up to 1.1.1.1
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/lfts_config.h up to 1.1.1.1
external/gpl3/gcc/dist/gcc/config/i386/pcommitintrin.h delete
external/gpl3/gcc/dist/gcc/config/i386/stringop.opt delete
external/gpl3/gcc/lib/libgcc/Makefile.wrapper   delete
external/gpl3/gcc/dist/ChangeLog                up to 1.1.1.10
external/gpl3/gcc/dist/LAST_UPDATED             up to 1.9
external/gpl3/gcc/dist/MD5SUMS                  up to 1.9
external/gpl3/gcc/dist/NEWS                     up to 1.7
external/gpl3/gcc/dist/config.sub               up to 1.11
external/gpl3/gcc/dist/configure                up to 1.11
external/gpl3/gcc/dist/configure.ac             up to 1.10
external/gpl3/gcc/dist/INSTALL/binaries.html    up to 1.5
external/gpl3/gcc/dist/INSTALL/build.html       up to 1.6
external/gpl3/gcc/dist/INSTALL/configure.html   up to 1.6
external/gpl3/gcc/dist/INSTALL/download.html    up to 1.5
external/gpl3/gcc/dist/INSTALL/finalinstall.html up to 1.5
external/gpl3/gcc/dist/INSTALL/gfdl.html        up to 1.5
external/gpl3/gcc/dist/INSTALL/index.html       up to 1.5
external/gpl3/gcc/dist/INSTALL/old.html         up to 1.5
external/gpl3/gcc/dist/INSTALL/prerequisites.html up to 1.6
external/gpl3/gcc/dist/INSTALL/specific.html    up to 1.6
external/gpl3/gcc/dist/INSTALL/test.html        up to 1.5
external/gpl3/gcc/dist/config/ChangeLog         up to 1.1.1.10
external/gpl3/gcc/dist/contrib/ChangeLog        up to 1.1.1.10
external/gpl3/gcc/dist/contrib/gcc_update       up to 1.1.1.4
external/gpl3/gcc/dist/contrib/reghunt/ChangeLog up to 1.1.1.9
external/gpl3/gcc/dist/contrib/regression/ChangeLog up to 1.1.1.9
external/gpl3/gcc/dist/fixincludes/ChangeLog    up to 1.1.1.9
external/gpl3/gcc/dist/fixincludes/fixincl.x    up to 1.1.1.6
external/gpl3/gcc/dist/fixincludes/inclhack.def up to 1.1.1.6
external/gpl3/gcc/dist/fixincludes/tests/base/math.h up to 1.1.1.3
external/gpl3/gcc/dist/fixincludes/tests/base/stdio.h up to 1.1.1.5
external/gpl3/gcc/dist/fixincludes/tests/base/stdlib.h up to 1.1.1.3
external/gpl3/gcc/dist/fixincludes/tests/base/iso/stdio_iso.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/BASE-VER             up to 1.1.1.8
external/gpl3/gcc/dist/gcc/ChangeLog            up to 1.15
external/gpl3/gcc/dist/gcc/DATESTAMP            up to 1.1.1.11
external/gpl3/gcc/dist/gcc/Makefile.in          up to 1.14
external/gpl3/gcc/dist/gcc/asan.c               up to 1.1.1.3
external/gpl3/gcc/dist/gcc/auto-profile.c       up to 1.3
external/gpl3/gcc/dist/gcc/bb-reorder.c         up to 1.1.1.6
external/gpl3/gcc/dist/gcc/builtins.c           up to 1.10
external/gpl3/gcc/dist/gcc/calls.c              up to 1.1.1.6
external/gpl3/gcc/dist/gcc/cgraph.c             up to 1.1.1.5
external/gpl3/gcc/dist/gcc/cgraph.h             up to 1.1.1.5
external/gpl3/gcc/dist/gcc/cgraphclones.c       up to 1.1.1.4
external/gpl3/gcc/dist/gcc/cgraphunit.c         up to 1.1.1.6
external/gpl3/gcc/dist/gcc/combine.c            up to 1.1.1.8
external/gpl3/gcc/dist/gcc/common.opt           up to 1.6
external/gpl3/gcc/dist/gcc/config.gcc           up to 1.37
external/gpl3/gcc/dist/gcc/coverage.c           up to 1.1.1.4
external/gpl3/gcc/dist/gcc/coverage.h           up to 1.1.1.4
external/gpl3/gcc/dist/gcc/cselib.c             up to 1.1.1.5
external/gpl3/gcc/dist/gcc/data-streamer-in.c   up to 1.1.1.3
external/gpl3/gcc/dist/gcc/data-streamer-out.c  up to 1.1.1.3
external/gpl3/gcc/dist/gcc/diagnostic.c         up to 1.4
external/gpl3/gcc/dist/gcc/dwarf2out.c          up to 1.8
external/gpl3/gcc/dist/gcc/explow.c             up to 1.1.1.4
external/gpl3/gcc/dist/gcc/expmed.c             up to 1.1.1.4
external/gpl3/gcc/dist/gcc/expr.c               up to 1.10
external/gpl3/gcc/dist/gcc/fold-const.c         up to 1.1.1.11
external/gpl3/gcc/dist/gcc/function.c           up to 1.1.1.7
external/gpl3/gcc/dist/gcc/function.h           up to 1.1.1.4
external/gpl3/gcc/dist/gcc/fwprop.c             up to 1.1.1.5
external/gpl3/gcc/dist/gcc/gcc.c                up to 1.15
external/gpl3/gcc/dist/gcc/gcov-dump.c          up to 1.1.1.5
external/gpl3/gcc/dist/gcc/gcov-io.c            up to 1.1.1.4
external/gpl3/gcc/dist/gcc/gcov-tool.c          up to 1.1.1.2
external/gpl3/gcc/dist/gcc/gcov.c               up to 1.1.1.5
external/gpl3/gcc/dist/gcc/gcse.c               up to 1.1.1.5
external/gpl3/gcc/dist/gcc/gengtype-lex.c       up to 1.7
external/gpl3/gcc/dist/gcc/genmatch.c           up to 1.1.1.2
external/gpl3/gcc/dist/gcc/gimple-fold.c        up to 1.1.1.5
external/gpl3/gcc/dist/gcc/gimple-ssa-strength-reduction.c up to 1.1.1.5
external/gpl3/gcc/dist/gcc/gimplify.c           up to 1.1.1.7
external/gpl3/gcc/dist/gcc/graphite-isl-ast-to-gimple.c up to 1.3
external/gpl3/gcc/dist/gcc/incpath.c            up to 1.1.1.4
external/gpl3/gcc/dist/gcc/internal-fn.c        up to 1.1.1.3
external/gpl3/gcc/dist/gcc/ipa-comdats.c        up to 1.1.1.2
external/gpl3/gcc/dist/gcc/ipa-cp.c             up to 1.1.1.8
external/gpl3/gcc/dist/gcc/ipa-devirt.c         up to 1.1.1.3
external/gpl3/gcc/dist/gcc/ipa-icf-gimple.c     up to 1.1.1.2
external/gpl3/gcc/dist/gcc/ipa-icf-gimple.h     up to 1.1.1.2
external/gpl3/gcc/dist/gcc/ipa-icf.c            up to 1.1.1.3
external/gpl3/gcc/dist/gcc/ipa-icf.h            up to 1.1.1.2
external/gpl3/gcc/dist/gcc/ipa-inline-transform.c up to 1.1.1.3
external/gpl3/gcc/dist/gcc/ipa-polymorphic-call.c up to 1.1.1.3
external/gpl3/gcc/dist/gcc/ipa-prop.c           up to 1.1.1.7
external/gpl3/gcc/dist/gcc/ipa-pure-const.c     up to 1.1.1.5
external/gpl3/gcc/dist/gcc/ipa-split.c          up to 1.1.1.4
external/gpl3/gcc/dist/gcc/ipa-visibility.c     up to 1.1.1.2
external/gpl3/gcc/dist/gcc/ira-build.c          up to 1.1.1.4
external/gpl3/gcc/dist/gcc/ira-costs.c          up to 1.1.1.4
external/gpl3/gcc/dist/gcc/ira-int.h            up to 1.1.1.4
external/gpl3/gcc/dist/gcc/ira-lives.c          up to 1.1.1.4
external/gpl3/gcc/dist/gcc/loop-doloop.c        up to 1.1.1.5
external/gpl3/gcc/dist/gcc/loop-invariant.c     up to 1.1.1.4
external/gpl3/gcc/dist/gcc/lra-constraints.c    up to 1.1.1.5
external/gpl3/gcc/dist/gcc/lra-remat.c          up to 1.1.1.3
external/gpl3/gcc/dist/gcc/lto-cgraph.c         up to 1.1.1.4
external/gpl3/gcc/dist/gcc/lto-streamer.h       up to 1.1.1.5
external/gpl3/gcc/dist/gcc/match.pd             up to 1.1.1.3
external/gpl3/gcc/dist/gcc/omp-low.c            up to 1.1.1.8
external/gpl3/gcc/dist/gcc/params.def           up to 1.1.1.5
external/gpl3/gcc/dist/gcc/postreload.c         up to 1.1.1.5
external/gpl3/gcc/dist/gcc/pretty-print.c       up to 1.1.1.4
external/gpl3/gcc/dist/gcc/real.c               up to 1.1.1.5
external/gpl3/gcc/dist/gcc/ree.c                up to 1.1.1.4
external/gpl3/gcc/dist/gcc/rtl.h                up to 1.1.1.6
external/gpl3/gcc/dist/gcc/sel-sched.c          up to 1.1.1.6
external/gpl3/gcc/dist/gcc/simplify-rtx.c       up to 1.1.1.4
external/gpl3/gcc/dist/gcc/system.h             up to 1.6
external/gpl3/gcc/dist/gcc/toplev.c             up to 1.2
external/gpl3/gcc/dist/gcc/tree-call-cdce.c     up to 1.1.1.4
external/gpl3/gcc/dist/gcc/tree-cfg.c           up to 1.8
external/gpl3/gcc/dist/gcc/tree-chkp-opt.c      up to 1.1.1.2
external/gpl3/gcc/dist/gcc/tree-chkp.c          up to 1.1.1.2
external/gpl3/gcc/dist/gcc/tree-chrec.c         up to 1.1.1.5
external/gpl3/gcc/dist/gcc/tree-data-ref.c      up to 1.1.1.7
external/gpl3/gcc/dist/gcc/tree-eh.c            up to 1.1.1.7
external/gpl3/gcc/dist/gcc/tree-inline.c        up to 1.1.1.7
external/gpl3/gcc/dist/gcc/tree-inline.h        up to 1.1.1.4
external/gpl3/gcc/dist/gcc/tree-loop-distribution.c up to 1.1.1.4
external/gpl3/gcc/dist/gcc/tree-nested.c        up to 1.1.1.4
external/gpl3/gcc/dist/gcc/tree-predcom.c       up to 1.1.1.5
external/gpl3/gcc/dist/gcc/tree-profile.c       up to 1.1.1.4
external/gpl3/gcc/dist/gcc/tree-ssa-ccp.c       up to 1.8
external/gpl3/gcc/dist/gcc/tree-ssa-loop-im.c   up to 1.1.1.5
external/gpl3/gcc/dist/gcc/tree-ssa-loop-ivopts.c up to 1.1.1.5
external/gpl3/gcc/dist/gcc/tree-ssa-loop-prefetch.c up to 1.1.1.4
external/gpl3/gcc/dist/gcc/tree-ssa-math-opts.c up to 1.1.1.7
external/gpl3/gcc/dist/gcc/tree-ssa-pre.c       up to 1.1.1.5
external/gpl3/gcc/dist/gcc/tree-ssa-reassoc.c   up to 1.1.1.7
external/gpl3/gcc/dist/gcc/tree-ssa-sccvn.c     up to 1.1.1.7
external/gpl3/gcc/dist/gcc/tree-ssa-strlen.c    up to 1.1.1.4
external/gpl3/gcc/dist/gcc/tree-ssa-structalias.c up to 1.1.1.6
external/gpl3/gcc/dist/gcc/tree-ssa-tail-merge.c up to 1.1.1.6
external/gpl3/gcc/dist/gcc/tree-ssa-threadedge.c up to 1.1.1.4
external/gpl3/gcc/dist/gcc/tree-ssa-uninit.c    up to 1.1.1.5
external/gpl3/gcc/dist/gcc/tree-ssa.c           up to 1.1.1.5
external/gpl3/gcc/dist/gcc/tree-vect-data-refs.c up to 1.1.1.9
external/gpl3/gcc/dist/gcc/tree-vect-loop-manip.c up to 1.1.1.5
external/gpl3/gcc/dist/gcc/tree-vrp.c           up to 1.1.1.7
external/gpl3/gcc/dist/gcc/tsan.c               up to 1.1.1.4
external/gpl3/gcc/dist/gcc/ubsan.c              up to 1.1.1.3
external/gpl3/gcc/dist/gcc/value-prof.c         up to 1.1.1.4
external/gpl3/gcc/dist/gcc/c/ChangeLog          up to 1.1.1.8
external/gpl3/gcc/dist/gcc/c/c-decl.c           up to 1.1.1.5
external/gpl3/gcc/dist/gcc/c/c-objc-common.c    up to 1.1.1.3
external/gpl3/gcc/dist/gcc/c/c-parser.c         up to 1.1.1.5
external/gpl3/gcc/dist/gcc/c/c-typeck.c         up to 1.1.1.7
external/gpl3/gcc/dist/gcc/c-family/ChangeLog   up to 1.1.1.7
external/gpl3/gcc/dist/gcc/c-family/c-ada-spec.c up to 1.1.1.3
external/gpl3/gcc/dist/gcc/c-family/c-common.c  up to 1.1.1.6
external/gpl3/gcc/dist/gcc/c-family/c-cppbuiltin.c up to 1.1.1.3
external/gpl3/gcc/dist/gcc/c-family/c-gimplify.c up to 1.1.1.3
external/gpl3/gcc/dist/gcc/c-family/c-omp.c     up to 1.1.1.3
external/gpl3/gcc/dist/gcc/c-family/c-opts.c    up to 1.5
external/gpl3/gcc/dist/gcc/common/config/i386/i386-common.c up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/aarch64/aarch64-simd.md up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/aarch64/aarch64.c up to 1.1.1.8
external/gpl3/gcc/dist/gcc/config/aarch64/aarch64.md up to 1.1.1.6
external/gpl3/gcc/dist/gcc/config/arm/arm-builtins.c up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/arm/arm-protos.h up to 1.1.1.5
external/gpl3/gcc/dist/gcc/config/arm/arm.c     up to 1.4
external/gpl3/gcc/dist/gcc/config/arm/arm.h     up to 1.15
external/gpl3/gcc/dist/gcc/config/arm/arm.md    up to 1.12
external/gpl3/gcc/dist/gcc/config/arm/freebsd.h up to 1.4
external/gpl3/gcc/dist/gcc/config/arm/neon.md   up to 1.1.1.5
external/gpl3/gcc/dist/gcc/config/avr/avr.c     up to 1.1.1.7
external/gpl3/gcc/dist/gcc/config/avr/avr.md    up to 1.1.1.7
external/gpl3/gcc/dist/gcc/config/avr/avr.opt   up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/avr/gen-avr-mmcu-specs.c up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/avr/gen-avr-mmcu-texi.c up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/i386/avx2intrin.h up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/i386/avx512bwintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512dqintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512fintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512ifmaintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512ifmavlintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512pfintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512vbmiintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512vbmivlintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512vlbwintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512vldqintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/avx512vlintrin.h up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/i386/cpuid.h  up to 1.4
external/gpl3/gcc/dist/gcc/config/i386/driver-i386.c up to 1.7
external/gpl3/gcc/dist/gcc/config/i386/gmm_malloc.h up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/i386/i386-builtin-types.def up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/i386/i386-c.c up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/i386/i386.c   up to 1.14
external/gpl3/gcc/dist/gcc/config/i386/i386.h   up to 1.6
external/gpl3/gcc/dist/gcc/config/i386/i386.md  up to 1.1.1.9
external/gpl3/gcc/dist/gcc/config/i386/i386.opt up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/i386/ia32intrin.h up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/i386/lwpintrin.h up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/i386/mmx.md   up to 1.1.1.5
external/gpl3/gcc/dist/gcc/config/i386/pmm_malloc.h up to 1.4
external/gpl3/gcc/dist/gcc/config/i386/rdseedintrin.h up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/i386/rtmintrin.h up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/i386/sse.md   up to 1.1.1.8
external/gpl3/gcc/dist/gcc/config/i386/x86-64.h up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/i386/x86intrin.h up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/nds32/nds32.md up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/pa/pa-64.h    up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/pa/pa.h       up to 1.7
external/gpl3/gcc/dist/gcc/config/rl78/rl78-expand.md up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/rl78/rl78-real.md up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/rl78/rl78-virt.md up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/rs6000/altivec.md up to 1.1.1.9
external/gpl3/gcc/dist/gcc/config/rs6000/dfp.md up to 1.1.1.5
external/gpl3/gcc/dist/gcc/config/rs6000/predicates.md up to 1.1.1.7
external/gpl3/gcc/dist/gcc/config/rs6000/rs6000-c.c up to 1.1.1.8
external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.c up to 1.17
external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.md up to 1.1.1.9
external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.opt up to 1.1.1.6
external/gpl3/gcc/dist/gcc/config/rs6000/vector.md up to 1.1.1.6
external/gpl3/gcc/dist/gcc/config/rs6000/vsx.md up to 1.1.1.10
external/gpl3/gcc/dist/gcc/config/s390/s390-modes.def up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/s390/s390.c   up to 1.1.1.8
external/gpl3/gcc/dist/gcc/config/s390/s390.md  up to 1.1.1.6
external/gpl3/gcc/dist/gcc/config/s390/vx-builtins.md up to 1.1.1.3
external/gpl3/gcc/dist/gcc/config/sh/sh-mem.cc  up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/sh/sh.c       up to 1.9
external/gpl3/gcc/dist/gcc/config/sh/sh_treg_combine.cc up to 1.1.1.2
external/gpl3/gcc/dist/gcc/config/sparc/sparc.c up to 1.1.1.8
external/gpl3/gcc/dist/gcc/config/sparc/sparc.md up to 1.7
external/gpl3/gcc/dist/gcc/config/xtensa/xtensa.c up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/xtensa/xtensa.h up to 1.1.1.4
external/gpl3/gcc/dist/gcc/config/xtensa/xtensa.md up to 1.1.1.4
external/gpl3/gcc/dist/gcc/cp/ChangeLog         up to 1.1.1.11
external/gpl3/gcc/dist/gcc/cp/call.c            up to 1.1.1.8
external/gpl3/gcc/dist/gcc/cp/class.c           up to 1.1.1.6
external/gpl3/gcc/dist/gcc/cp/constexpr.c       up to 1.1.1.3
external/gpl3/gcc/dist/gcc/cp/cp-gimplify.c     up to 1.1.1.4
external/gpl3/gcc/dist/gcc/cp/decl.c            up to 1.1.1.8
external/gpl3/gcc/dist/gcc/cp/error.c           up to 1.1.1.4
external/gpl3/gcc/dist/gcc/cp/init.c            up to 1.1.1.6
external/gpl3/gcc/dist/gcc/cp/mangle.c          up to 1.1.1.7
external/gpl3/gcc/dist/gcc/cp/name-lookup.c     up to 1.1.1.6
external/gpl3/gcc/dist/gcc/cp/parser.c          up to 1.1.1.10
external/gpl3/gcc/dist/gcc/cp/pt.c              up to 1.1.1.8
external/gpl3/gcc/dist/gcc/cp/semantics.c       up to 1.1.1.9
external/gpl3/gcc/dist/gcc/cp/tree.c            up to 1.1.1.7
external/gpl3/gcc/dist/gcc/cp/typeck.c          up to 1.1.1.9
external/gpl3/gcc/dist/gcc/doc/aot-compile.1    up to 1.7
external/gpl3/gcc/dist/gcc/doc/cppinternals.info up to 1.7
external/gpl3/gcc/dist/gcc/doc/extend.texi      up to 1.1.1.8
external/gpl3/gcc/dist/gcc/doc/fsf-funding.7    up to 1.7
external/gpl3/gcc/dist/gcc/doc/gc-analyze.1     up to 1.7
external/gpl3/gcc/dist/gcc/doc/gcc.texi         up to 1.1.1.5
external/gpl3/gcc/dist/gcc/doc/gccinstall.info  up to 1.7
external/gpl3/gcc/dist/gcc/doc/gccint.info      up to 1.7
external/gpl3/gcc/dist/gcc/doc/gcj-dbtool.1     up to 1.7
external/gpl3/gcc/dist/gcc/doc/gcj.1            up to 1.7
external/gpl3/gcc/dist/gcc/doc/gcj.info         up to 1.7
external/gpl3/gcc/dist/gcc/doc/gcov-tool.1      up to 1.1.1.3
external/gpl3/gcc/dist/gcc/doc/gcov-tool.texi   up to 1.1.1.2
external/gpl3/gcc/dist/gcc/doc/gcov.texi        up to 1.6
external/gpl3/gcc/dist/gcc/doc/generic.texi     up to 1.1.1.4
external/gpl3/gcc/dist/gcc/doc/gfdl.7           up to 1.7
external/gpl3/gcc/dist/gcc/doc/gfortran.1       up to 1.7
external/gpl3/gcc/dist/gcc/doc/gij.1            up to 1.7
external/gpl3/gcc/dist/gcc/doc/gpl.7            up to 1.7
external/gpl3/gcc/dist/gcc/doc/grmic.1          up to 1.7
external/gpl3/gcc/dist/gcc/doc/install.texi     up to 1.1.1.8
external/gpl3/gcc/dist/gcc/doc/invoke.texi      up to 1.12
external/gpl3/gcc/dist/gcc/doc/jcf-dump.1       up to 1.7
external/gpl3/gcc/dist/gcc/doc/jv-convert.1     up to 1.7
external/gpl3/gcc/dist/gcc/doc/lto.texi         up to 1.1.1.3
external/gpl3/gcc/dist/gcc/doc/passes.texi      up to 1.1.1.4
external/gpl3/gcc/dist/gcc/doc/rebuild-gcj-db.1 up to 1.7
external/gpl3/gcc/dist/gcc/doc/rtl.texi         up to 1.1.1.4
external/gpl3/gcc/dist/gcc/jit/ChangeLog        up to 1.1.1.3
external/gpl3/gcc/dist/gcc/lto/ChangeLog        up to 1.1.1.9
external/gpl3/gcc/dist/gcc/lto/lto-lang.c       up to 1.1.1.4
external/gpl3/gcc/dist/gcc/objc/ChangeLog       up to 1.1.1.9
external/gpl3/gcc/dist/gcc/objcp/ChangeLog      up to 1.1.1.9
external/gpl3/gcc/dist/gnattools/ChangeLog      up to 1.1.1.7
external/gpl3/gcc/dist/gotools/ChangeLog        up to 1.1.1.3
external/gpl3/gcc/dist/include/ChangeLog        up to 1.1.1.9
external/gpl3/gcc/dist/intl/ChangeLog           up to 1.1.1.9
external/gpl3/gcc/dist/libbacktrace/ChangeLog   up to 1.1.1.8
external/gpl3/gcc/dist/libcc1/ChangeLog         up to 1.1.1.3
external/gpl3/gcc/dist/libcpp/ChangeLog         up to 1.1.1.9
external/gpl3/gcc/dist/libcpp/line-map.c        up to 1.1.1.6
external/gpl3/gcc/dist/libdecnumber/ChangeLog   up to 1.1.1.9
external/gpl3/gcc/dist/libgcc/ChangeLog         up to 1.1.1.11
external/gpl3/gcc/dist/libgcc/config.host       up to 1.16
external/gpl3/gcc/dist/libgcc/libgcc2.c         up to 1.1.1.4
external/gpl3/gcc/dist/libgcc/libgcov-driver.c  up to 1.1.1.2
external/gpl3/gcc/dist/libgcc/unwind-c.c        up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/aarch64/linux-unwind.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/alpha/linux-unwind.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/arm/unwind-arm.c up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/arm/unwind-arm.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/bfin/linux-unwind.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/i386/linux-unwind.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/libbid/ChangeLog up to 1.1.1.9
external/gpl3/gcc/dist/libgcc/config/m68k/linux-unwind.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/nios2/linux-unwind.h up to 1.1.1.2
external/gpl3/gcc/dist/libgcc/config/pa/linux-unwind.h up to 1.1.1.4
external/gpl3/gcc/dist/libgcc/config/rs6000/t-crtstuff up to 1.1.1.2
external/gpl3/gcc/dist/libgcc/config/sh/linux-unwind.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/sparc/lb1spc.S up to 1.1.1.2
external/gpl3/gcc/dist/libgcc/config/tilepro/linux-unwind.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/xtensa/ieee754-df.S up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/xtensa/ieee754-sf.S up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/xtensa/linux-unwind.h up to 1.1.1.3
external/gpl3/gcc/dist/libgcc/config/xtensa/t-elf up to 1.1.1.2
external/gpl3/gcc/dist/libgcc/config/xtensa/t-linux up to 1.1.1.2
external/gpl3/gcc/dist/libgcc/config/xtensa/t-windowed up to 1.1.1.2
external/gpl3/gcc/dist/libgcc/config/xtensa/unwind-dw2-xtensa.c up to 1.4
external/gpl3/gcc/dist/libgomp/ChangeLog        up to 1.1.1.9
external/gpl3/gcc/dist/libgomp/env.c            up to 1.1.1.4
external/gpl3/gcc/dist/libgomp/hashtab.h        up to 1.1.1.2
external/gpl3/gcc/dist/libgomp/libgomp.info     up to 1.7
external/gpl3/gcc/dist/libiberty/ChangeLog      up to 1.1.1.9
external/gpl3/gcc/dist/libiberty/cp-demangle.c  up to 1.1.1.5
external/gpl3/gcc/dist/libiberty/vprintf-support.c up to 1.2
external/gpl3/gcc/dist/libitm/ChangeLog         up to 1.1.1.7
external/gpl3/gcc/dist/libitm/libitm.info       up to 1.1.1.6
external/gpl3/gcc/dist/libobjc/ChangeLog        up to 1.1.1.10
external/gpl3/gcc/dist/libsanitizer/ChangeLog   up to 1.1.1.7
external/gpl3/gcc/dist/libsanitizer/asan/asan_globals.cc up to 1.1.1.3
external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc up to 1.5
external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc up to 1.9
external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.h up to 1.3
external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc up to 1.6
external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h up to 1.10
external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_procmaps_netbsd.cc up to 1.3
external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc up to 1.1.1.2
external/gpl3/gcc/dist/libsanitizer/tsan/tsan_platform_linux.cc up to 1.3
external/gpl3/gcc/dist/libsanitizer/tsan/tsan_rtl.cc up to 1.1.1.3
external/gpl3/gcc/dist/libssp/ChangeLog         up to 1.1.1.9
external/gpl3/gcc/dist/libstdc++-v3/ChangeLog   up to 1.1.1.11
external/gpl3/gcc/dist/libstdc++-v3/acinclude.m4 up to 1.4
external/gpl3/gcc/dist/libstdc++-v3/config.h.in up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/configure   up to 1.8
external/gpl3/gcc/dist/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/config/io/basic_file_stdio.cc up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/config/os/mingw32-w64/error_constants.h up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/doc/doxygen/mainpage.html up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/doc/html/api.html up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/doc/html/faq.html up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/doc/html/ext/lwg-active.html up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/doc/html/ext/lwg-closed.html up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/doc/html/ext/lwg-defects.html up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/abi.html up to 1.1.1.6
external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/bugs.html up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/ext_demangling.html up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/memory.html up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/mt_allocator_impl.html up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/source_code_style.html up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/source_organization.html up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/status.html up to 1.1.1.6
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/api.xml up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/faq.xml up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/abi.xml up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/allocator.xml up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/appendix_contributing.xml up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/extensions.xml up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/intro.xml up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/mt_allocator.xml up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/status_cxx2011.xml up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/status_cxx2014.xml up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/Makefile.am up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/include/Makefile.in up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/include/bits/allocator.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/basic_ios.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/basic_string.h up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/include/bits/basic_string.tcc up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/c++config up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/include/bits/hashtable.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/ios_base.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/istream.tcc up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/list.tcc up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/locale_classes.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/locale_conv.h up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/bits/mask_array.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/predefined_ops.h up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/bits/regex.h up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/bits/regex.tcc up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/bits/regex_compiler.h up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/bits/shared_ptr_base.h up to 1.1.1.6
external/gpl3/gcc/dist/libstdc++-v3/include/bits/slice_array.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/sstream.tcc up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_iterator.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_map.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_multimap.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_multiset.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_set.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_stack.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_tree.h up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/include/bits/uniform_int_dist.h up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/bits/unique_ptr.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/c_global/cmath up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/include/debug/safe_iterator.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/debug/string up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/algorithm up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/any up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/chrono up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/fs_dir.h up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/fs_fwd.h up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/fs_ops.h up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/fs_path.h up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/functional up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/optional up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/ratio up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/string_view up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/string_view.tcc up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/system_error up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/tuple up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/include/experimental/type_traits up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/include/ext/new_allocator.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/ext/pointer.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/std/atomic up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/std/chrono up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/std/complex up to 1.5
external/gpl3/gcc/dist/libstdc++-v3/include/std/functional up to 1.1.1.7
external/gpl3/gcc/dist/libstdc++-v3/include/std/istream up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/include/std/scoped_allocator up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/std/sstream up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/std/thread up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/std/tuple up to 1.1.1.6
external/gpl3/gcc/dist/libstdc++-v3/include/std/utility up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/include/tr1/cmath up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/libsupc++/cxxabi.h up to 1.1.1.4
external/gpl3/gcc/dist/libstdc++-v3/python/libstdcxx/v6/printers.py up to 1.1.1.5
external/gpl3/gcc/dist/libstdc++-v3/python/libstdcxx/v6/xmethods.py up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/src/c++11/codecvt.cc up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/src/c++11/cxx11-shim_facets.cc up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/src/c++11/shared_ptr.cc up to 1.1.1.3
external/gpl3/gcc/dist/libstdc++-v3/src/filesystem/Makefile.in up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/src/filesystem/dir.cc up to 1.1.1.2
external/gpl3/gcc/dist/libstdc++-v3/src/filesystem/ops.cc up to 1.1.1.3
external/gpl3/gcc/dist/lto-plugin/ChangeLog     up to 1.1.1.9
external/gpl3/gcc/dist/lto-plugin/lto-plugin.c  up to 1.1.1.4
external/gpl3/gcc/dist/maintainer-scripts/ChangeLog up to 1.1.1.10
external/gpl3/gcc/lib/libasan/Makefile          up to 1.18
external/gpl3/gcc/lib/libgcc/arch/i386/defs.mk  up to 1.5
external/gpl3/gcc/lib/libgcc/arch/m68000/defs.mk up to 1.7
external/gpl3/gcc/lib/libgcc/arch/x86_64/defs.mk up to 1.4
external/gpl3/gcc/lib/libgcc/libgcc/Makefile    up to 1.28
external/gpl3/gcc/lib/libgcc/libgcov/arch/alpha/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/arm/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/armeb/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/earm/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmeb/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmhf/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmhfeb/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv4/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv4eb/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6eb/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6hf/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6hfeb/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7eb/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7hf/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7hfeb/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/hppa/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/i386/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/ia64/gcov-iov.h up to 1.5
external/gpl3/gcc/lib/libgcc/libgcov/arch/m68000/gcov-iov.h up to 1.9
external/gpl3/gcc/lib/libgcc/libgcov/arch/m68k/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/mips64eb/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/mips64el/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/mipseb/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/mipsel/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/powerpc/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/powerpc64/gcov-iov.h up to 1.6
external/gpl3/gcc/lib/libgcc/libgcov/arch/sh3eb/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/sh3el/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/sparc/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/sparc64/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/vax/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libgcc/libgcov/arch/x86_64/gcov-iov.h up to 1.10
external/gpl3/gcc/lib/libiberty/defs.mk         up to 1.14
external/gpl3/gcc/lib/libiberty/arch/ia64/config.h up to 1.6
external/gpl3/gcc/lib/liblto_plugin/Makefile    up to 1.9
external/gpl3/gcc/lib/libstdc++-v3/Makefile     up to 1.28
external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/c++config.h up to 1.21
external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/arm/c++config.h up to 1.23
external/gpl3/gcc/lib/libstdc++-v3/arch/arm/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/arm/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/c++config.h up to 1.23
external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/gstdint.h up to 1.15
external/gpl3/gcc/lib/libstdc++-v3/arch/coldfire/defs.mk up to 1.6
external/gpl3/gcc/lib/libstdc++-v3/arch/earm/c++config.h up to 1.21
external/gpl3/gcc/lib/libstdc++-v3/arch/earm/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earm/gstdint.h up to 1.15
external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/c++config.h up to 1.19
external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/defs.mk up to 1.6
external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/c++config.h up to 1.19
external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/defs.mk up to 1.7
external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/c++config.h up to 1.17
external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/c++config.h up to 1.21
external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/i386/c++config.h up to 1.22
external/gpl3/gcc/lib/libstdc++-v3/arch/i386/defs.mk up to 1.7
external/gpl3/gcc/lib/libstdc++-v3/arch/i386/gstdint.h up to 1.14
external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/c++config.h up to 1.7
external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/gstdint.h up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/c++config.h up to 1.16
external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/defs.mk up to 1.7
external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/gstdint.h up to 1.9
external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/c++config.h up to 1.21
external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/defs.mk up to 1.6
external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/gstdint.h up to 1.12
external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/c++config.h up to 1.21
external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/defs.mk up to 1.6
external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/gstdint.h up to 1.12
external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/c++config.h up to 1.20
external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/defs.mk up to 1.6
external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/c++config.h up to 1.23
external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/defs.mk up to 1.6
external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/gstdint.h up to 1.12
external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/c++config.h up to 1.21
external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/gstdint.h up to 1.12
external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/c++config.h up to 1.22
external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/c++config.h up to 1.10
external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/defs.mk up to 1.6
external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/gstdint.h up to 1.7
external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/c++config.h up to 1.21
external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/defs.mk up to 1.7
external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/c++config.h up to 1.23
external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/c++config.h up to 1.22
external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/defs.mk up to 1.5
external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/c++config.h up to 1.21
external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/defs.mk up to 1.6
external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/vax/c++config.h up to 1.23
external/gpl3/gcc/lib/libstdc++-v3/arch/vax/defs.mk up to 1.7
external/gpl3/gcc/lib/libstdc++-v3/arch/vax/gstdint.h up to 1.13
external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/c++config.h up to 1.25
external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/defs.mk up to 1.7
external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/gstdint.h up to 1.15
external/gpl3/gcc/lib/libstdc++-v3/include/bits/Makefile up to 1.19
external/gpl3/gcc/lib/libubsan/Makefile         up to 1.3
external/gpl3/gcc/usr.bin/Makefile.backend      up to 1.6
external/gpl3/gcc/usr.bin/Makefile.inc          up to 1.29
external/gpl3/gcc/usr.bin/backend/Makefile      up to 1.39
external/gpl3/gcc/usr.bin/common/Makefile       up to 1.5
external/gpl3/gcc/usr.bin/frontend/Makefile     up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/alpha/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/alpha/configargs.h up to 1.23
external/gpl3/gcc/usr.bin/gcc/arch/alpha/defs.mk up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/alpha/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/arm/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/arm/configargs.h up to 1.26
external/gpl3/gcc/usr.bin/gcc/arch/arm/defs.mk  up to 1.12
external/gpl3/gcc/usr.bin/gcc/arch/arm/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/armeb/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/armeb/configargs.h up to 1.27
external/gpl3/gcc/usr.bin/gcc/arch/armeb/defs.mk up to 1.12
external/gpl3/gcc/usr.bin/gcc/arch/armeb/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/earm/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/earm/configargs.h up to 1.24
external/gpl3/gcc/usr.bin/gcc/arch/earm/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/earm/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/earmeb/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmeb/configargs.h up to 1.20
external/gpl3/gcc/usr.bin/gcc/arch/earmeb/defs.mk up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmeb/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmhf/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmhf/configargs.h up to 1.21
external/gpl3/gcc/usr.bin/gcc/arch/earmhf/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/earmhf/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/configargs.h up to 1.19
external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv4/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv4/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv4/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv4/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv6/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv6/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv6/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv6/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv7/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv7/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv7/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv7/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/bversion.h up to 1.7
external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/defs.mk up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/plugin-version.h up to 1.10
external/gpl3/gcc/usr.bin/gcc/arch/hppa/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/hppa/configargs.h up to 1.24
external/gpl3/gcc/usr.bin/gcc/arch/hppa/defs.mk up to 1.12
external/gpl3/gcc/usr.bin/gcc/arch/hppa/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/i386/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/i386/configargs.h up to 1.31
external/gpl3/gcc/usr.bin/gcc/arch/i386/defs.mk up to 1.12
external/gpl3/gcc/usr.bin/gcc/arch/i386/i386-builtin-types.inc up to 1.4
external/gpl3/gcc/usr.bin/gcc/arch/i386/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/ia64/auto-host.h up to 1.5
external/gpl3/gcc/usr.bin/gcc/arch/ia64/bversion.h up to 1.5
external/gpl3/gcc/usr.bin/gcc/arch/ia64/configargs.h up to 1.6
external/gpl3/gcc/usr.bin/gcc/arch/ia64/defs.mk up to 1.5
external/gpl3/gcc/usr.bin/gcc/arch/ia64/plugin-version.h up to 1.5
external/gpl3/gcc/usr.bin/gcc/arch/m68000/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/m68000/configargs.h up to 1.18
external/gpl3/gcc/usr.bin/gcc/arch/m68000/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/m68000/plugin-version.h up to 1.9
external/gpl3/gcc/usr.bin/gcc/arch/m68k/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/m68k/configargs.h up to 1.21
external/gpl3/gcc/usr.bin/gcc/arch/m68k/defs.mk up to 1.12
external/gpl3/gcc/usr.bin/gcc/arch/m68k/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/configargs.h up to 1.22
external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/mips64el/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/mips64el/configargs.h up to 1.23
external/gpl3/gcc/usr.bin/gcc/arch/mips64el/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/mips64el/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/mipseb/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/mipseb/configargs.h up to 1.22
external/gpl3/gcc/usr.bin/gcc/arch/mipseb/defs.mk up to 1.12
external/gpl3/gcc/usr.bin/gcc/arch/mipseb/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/mipsel/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/mipsel/configargs.h up to 1.23
external/gpl3/gcc/usr.bin/gcc/arch/mipsel/defs.mk up to 1.12
external/gpl3/gcc/usr.bin/gcc/arch/mipsel/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/powerpc/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/powerpc/configargs.h up to 1.28
external/gpl3/gcc/usr.bin/gcc/arch/powerpc/defs.mk up to 1.13
external/gpl3/gcc/usr.bin/gcc/arch/powerpc/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/bversion.h up to 1.5
external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/configargs.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/defs.mk up to 1.6
external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/plugin-version.h up to 1.5
external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/configargs.h up to 1.24
external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/sh3el/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/sh3el/configargs.h up to 1.26
external/gpl3/gcc/usr.bin/gcc/arch/sh3el/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/sh3el/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/sparc/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/sparc/configargs.h up to 1.26
external/gpl3/gcc/usr.bin/gcc/arch/sparc/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/sparc/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/sparc64/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/sparc64/configargs.h up to 1.26
external/gpl3/gcc/usr.bin/gcc/arch/sparc64/defs.mk up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/sparc64/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/vax/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/vax/configargs.h up to 1.24
external/gpl3/gcc/usr.bin/gcc/arch/vax/defs.mk  up to 1.12
external/gpl3/gcc/usr.bin/gcc/arch/vax/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/gcc/arch/x86_64/bversion.h up to 1.8
external/gpl3/gcc/usr.bin/gcc/arch/x86_64/configargs.h up to 1.33
external/gpl3/gcc/usr.bin/gcc/arch/x86_64/defs.mk up to 1.13
external/gpl3/gcc/usr.bin/gcc/arch/x86_64/i386-builtin-types.inc up to 1.4
external/gpl3/gcc/usr.bin/gcc/arch/x86_64/plugin-version.h up to 1.11
external/gpl3/gcc/usr.bin/include/arch/i386.mk  up to 1.3
external/gpl3/gcc/usr.bin/include/arch/x86_64.mk up to 1.3
external/gpl3/gcc/usr.bin/libcpp/arch/ia64/config.h up to 1.4
distrib/sets/lists/comp/md.amd64				1.252
distrib/sets/lists/comp/md.i386					1.175
distrib/sets/lists/comp/shl.mi					1.309
distrib/sets/lists/debug/shl.mi					1.187
external/gpl3/gcc/lib/liblto_plugin/Makefile			1.6
lib/libc/stdlib/jemalloc.c					1.43

Update gcc to gcc 5.5.
Bump lib minor for liblto_plugin.so link with -liberty.
The HPPA architectures (1.1 and 2.0) both define quadruple-word
(128-bit) floating point types.  Adjust alignment to match.
@
text
@d561 1
a561 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a577 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a582 1
#endif
d584 1
a584 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a597 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a602 1
#endif
d604 1
a604 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a617 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a622 1
#endif
d624 1
a624 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a637 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a642 1
#endif
d644 1
a644 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a657 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a662 1
#endif
d664 1
a664 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a678 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a683 1
#endif
d685 1
a685 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a698 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a707 1
#endif
d709 1
a709 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a722 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a731 1
#endif
d733 1
a733 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a746 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a755 1
#endif
d757 1
a757 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a770 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a779 1
#endif
d781 1
a781 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a794 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a803 1
#endif
d805 1
a805 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a818 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a827 1
#endif
d1212 1
a1212 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1221 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1226 1
#endif
d1228 1
a1228 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1237 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1242 1
#endif
d1244 1
a1244 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1253 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1258 1
#endif
d1260 1
a1260 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1269 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1274 1
#endif
d1276 1
a1276 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1285 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1292 1
#endif
d1294 1
a1294 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1303 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1308 1
#endif
d1310 1
a1310 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1319 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1324 1
#endif
d1326 1
a1326 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1335 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1340 1
#endif
d1342 1
a1342 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1351 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1356 1
#endif
d1358 1
a1358 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1367 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1374 1
#endif
d1376 1
a1376 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1385 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1392 1
#endif
d1394 1
a1394 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1403 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1410 1
#endif
d1412 1
a1412 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1421 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1428 1
#endif
d1430 1
a1430 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1439 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1446 1
#endif
d1448 1
a1448 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1457 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1463 1
#endif
d1465 1
a1465 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1474 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1479 1
#endif
d1481 1
a1481 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1490 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1495 1
#endif
d1497 1
a1497 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1506 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1511 1
#endif
d1513 1
a1513 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1522 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1527 1
#endif
d1529 1
a1529 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1539 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1544 1
#endif
d1546 1
a1546 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1555 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1560 1
#endif
d1562 1
a1562 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1571 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1576 1
#endif
d1578 1
a1578 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1587 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1592 1
#endif
d1594 1
a1594 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1603 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1608 1
#endif
d1610 1
a1610 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1619 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1626 1
#endif
d1628 1
a1628 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1637 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1642 1
#endif
d1644 1
a1644 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1653 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1660 1
#endif
d1662 1
a1662 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1671 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1678 1
#endif
d1680 1
a1680 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1689 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1694 1
#endif
d1696 1
a1696 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1705 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1710 1
#endif
d1712 1
a1712 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1721 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1726 1
#endif
d1728 1
a1728 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1737 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1742 1
#endif
d1744 1
a1744 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1753 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1758 1
#endif
d1760 1
a1760 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1769 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1774 1
#endif
@


1.1.1.5
log
@initial import of GCC 5.5.0.  this fixes a very large number of PRs.
280 are listed here:
    https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5
and this list is likely not complete, and not reproduced here.  the
only specific change in functionality is removal of x86 "pcommit"
instruction (which was apparently never implemented.)
@
text
@d561 1
a561 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a577 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a582 1
#endif
d584 1
a584 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a597 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a602 1
#endif
d604 1
a604 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a617 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a622 1
#endif
d624 1
a624 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a637 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a642 1
#endif
d644 1
a644 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a657 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a662 1
#endif
d664 1
a664 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a678 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a683 1
#endif
d685 1
a685 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a698 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a707 1
#endif
d709 1
a709 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a722 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a731 1
#endif
d733 1
a733 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a746 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a755 1
#endif
d757 1
a757 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a770 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a779 1
#endif
d781 1
a781 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a794 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a803 1
#endif
d805 1
a805 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a818 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a827 1
#endif
d1212 1
a1212 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1221 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1226 1
#endif
d1228 1
a1228 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1237 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1242 1
#endif
d1244 1
a1244 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1253 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1258 1
#endif
d1260 1
a1260 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1269 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1274 1
#endif
d1276 1
a1276 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1285 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1292 1
#endif
d1294 1
a1294 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1303 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1308 1
#endif
d1310 1
a1310 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1319 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1324 1
#endif
d1326 1
a1326 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1335 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1340 1
#endif
d1342 1
a1342 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1351 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1356 1
#endif
d1358 1
a1358 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1367 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1374 1
#endif
d1376 1
a1376 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1385 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1392 1
#endif
d1394 1
a1394 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1403 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1410 1
#endif
d1412 1
a1412 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1421 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1428 1
#endif
d1430 1
a1430 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1439 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1446 1
#endif
d1448 1
a1448 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1457 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1463 1
#endif
d1465 1
a1465 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1474 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1479 1
#endif
d1481 1
a1481 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1490 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1495 1
#endif
d1497 1
a1497 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1506 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1511 1
#endif
d1513 1
a1513 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1522 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1527 1
#endif
d1529 1
a1529 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1539 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1544 1
#endif
d1546 1
a1546 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1555 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1560 1
#endif
d1562 1
a1562 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1571 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1576 1
#endif
d1578 1
a1578 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1587 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1592 1
#endif
d1594 1
a1594 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1603 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1608 1
#endif
d1610 1
a1610 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1619 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1626 1
#endif
d1628 1
a1628 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1637 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1642 1
#endif
d1644 1
a1644 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1653 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1660 1
#endif
d1662 1
a1662 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1671 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1678 1
#endif
d1680 1
a1680 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1689 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1694 1
#endif
d1696 1
a1696 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1705 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1710 1
#endif
d1712 1
a1712 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1721 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1726 1
#endif
d1728 1
a1728 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1737 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1742 1
#endif
d1744 1
a1744 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1753 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1758 1
#endif
d1760 1
a1760 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
a1769 1
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
a1774 1
#endif
@


1.1.1.6
log
@import GCC 6.4.0.  see this url for details which are too large to
include here:

   http://gcc.gnu.org/gcc-6/changes.html

the main visible changes appear to be:

- The default mode for C++ is now -std=gnu++14 instead of -std=gnu++98.
- The C and C++ compilers now support attributes on enumerators.
- Diagnostics can now contain "fix-it hints"
- more warnings (some added to -Wall)
@
text
@d3 1
a3 1
// Copyright (C) 1997-2016 Free Software Foundation, Inc.
d44 1
a44 3
#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
#include_next <math.h>
#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
a74 2
extern "C++"
{
a612 4
#if _GLIBCXX_HAVE_OBSOLETE_ISINF \
  && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC
  using ::isinf;
#else
a615 1
#endif
a634 4
#if _GLIBCXX_HAVE_OBSOLETE_ISNAN \
  && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC
  using ::isnan;
#else
a637 1
#endif
d675 1
a675 1
  // Note: middle-end/36757 is fixed, __builtin_signbit is type-generic.
d678 1
a678 1
  { return __builtin_signbit(__x); }
d686 1
a686 1
  { return __builtin_signbit(__x); }
d907 5
a911 1
      return __builtin_signbit(__type(__f));
a1874 6
#if __STDCPP_WANT_MATH_SPEC_FUNCS__ == 1
#  include <bits/specfun.h>
#endif

} // extern "C++"

@


1.1.1.6.4.1
log
@Sync with HEAD
@
text
@d3 1
a3 1
// Copyright (C) 1997-2017 Free Software Foundation, Inc.
a46 1
#include <bits/std_abs.h>
d52 1
d83 23
a1037 1
#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS
a1043 1
#endif
a1168 1
#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS
a1175 1
#endif
d1885 1
a1885 48
#if __cplusplus > 201402L
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  // [c.math.hypot3], three-dimensional hypotenuse
#define __cpp_lib_hypot 201603

  template<typename _Tp>
    inline _Tp
    __hypot3(_Tp __x, _Tp __y, _Tp __z)
    {
      __x = std::abs(__x);
      __y = std::abs(__y);
      __z = std::abs(__z);
      if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x)
	return __a * std::sqrt((__x / __a) * (__x / __a)
			       + (__y / __a) * (__y / __a)
			       + (__z / __a) * (__z / __a));
      else
	return {};
    }

  inline float
  hypot(float __x, float __y, float __z)
  { return std::__hypot3<float>(__x, __y, __z); }

  inline double
  hypot(double __x, double __y, double __z)
  { return std::__hypot3<double>(__x, __y, __z); }

  inline long double
  hypot(long double __x, long double __y, long double __z)
  { return std::__hypot3<long double>(__x, __y, __z); }

  template<typename _Tp, typename _Up, typename _Vp>
    typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
    hypot(_Tp __x, _Up __y, _Vp __z)
    {
      using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type;
      return std::__hypot3<__type>(__x, __y, __z);
    }
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#endif // C++17


#if _GLIBCXX_USE_STD_SPEC_FUNCS
@


1.1.1.6.4.2
log
@Mostly merge changes from HEAD upto 20200411
@
text
@d3 1
a3 1
// Copyright (C) 1997-2018 Free Software Foundation, Inc.
d516 3
d536 4
d955 5
a959 1
#endif // C++11
d961 1
a961 1
#endif /* _GLIBCXX_USE_C99_MATH */
d1075 4
d1859 3
d1863 1
d1867 3
d1908 2
a1911 2
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
@


1.1.1.6.2.1
log
@Sync with HEAD
@
text
@d3 1
a3 1
// Copyright (C) 1997-2017 Free Software Foundation, Inc.
a46 1
#include <bits/std_abs.h>
d52 1
d83 23
a1037 1
#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS
a1043 1
#endif
a1168 1
#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS
a1175 1
#endif
d1885 1
a1885 48
#if __cplusplus > 201402L
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  // [c.math.hypot3], three-dimensional hypotenuse
#define __cpp_lib_hypot 201603

  template<typename _Tp>
    inline _Tp
    __hypot3(_Tp __x, _Tp __y, _Tp __z)
    {
      __x = std::abs(__x);
      __y = std::abs(__y);
      __z = std::abs(__z);
      if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x)
	return __a * std::sqrt((__x / __a) * (__x / __a)
			       + (__y / __a) * (__y / __a)
			       + (__z / __a) * (__z / __a));
      else
	return {};
    }

  inline float
  hypot(float __x, float __y, float __z)
  { return std::__hypot3<float>(__x, __y, __z); }

  inline double
  hypot(double __x, double __y, double __z)
  { return std::__hypot3<double>(__x, __y, __z); }

  inline long double
  hypot(long double __x, long double __y, long double __z)
  { return std::__hypot3<long double>(__x, __y, __z); }

  template<typename _Tp, typename _Up, typename _Vp>
    typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
    hypot(_Tp __x, _Up __y, _Vp __z)
    {
      using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type;
      return std::__hypot3<__type>(__x, __y, __z);
    }
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#endif // C++17


#if _GLIBCXX_USE_STD_SPEC_FUNCS
@


1.1.1.7
log
@import GCC 7.4.0.  main changes include:

The non-standard C++0x type traits has_trivial_default_constructor,
has_trivial_copy_constructor and has_trivial_copy_assign have been
removed.

On ARM targets (arm*-*-*), a bug introduced in GCC 5 that affects
conformance to the procedure call standard (AAPCS) has been fixed.

Many optimiser improvements

DWARF-5 support.

Many new and enhanced warnings.

Warnings about format strings now underline the pertinent part of
the string, and can offer suggested fixes.

Several new warnings related to buffer overflows and buffer
truncation.

New __builtin_add_overflow_p, __builtin_sub_overflow_p,
__builtin_mul_overflow_p built-ins added that test for overflow.

The C++ front end has experimental support for all of the current
C++17 draft.

The -fverbose-asm option has been expanded to prints comments
showing the source lines that correspond to the assembly.

The gcc and g++ driver programs will now provide suggestions for
misspelled arguments to command-line options.


AArch64 specific:

GCC has been updated to the latest revision of the procedure call
standard (AAPCS64) to provide support for parameter passing when
data types have been over-aligned.

The ARMv8.2-A and ARMv8.3-A architecture are now supported.

ARM specific:

Support for the ARMv5 and ARMv5E architectures has been
deprecated (which have no known implementations).

A new command-line option -mpure-code has been added. It does not
allow constant data to be placed in code sections.

x86 specific:

Support for the AVX-512 4FMAPS, 4VNNIW, VPOPCNTDQ and Software
Guard Extensions (SGX) ISA extensions has been added.

PPC specific:

GCC now diagnoses inline assembly that clobbers register r2.

RISC-V specific:

Support for the RISC-V instruction set has been added.

SH specific:

Support for SH5/SH64 has been removed.

Support for SH2A has been enhanced.
@
text
@d3 1
a3 1
// Copyright (C) 1997-2017 Free Software Foundation, Inc.
a46 1
#include <bits/std_abs.h>
d52 1
d83 23
a1037 1
#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS
a1043 1
#endif
a1168 1
#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS
a1175 1
#endif
d1885 1
a1885 48
#if __cplusplus > 201402L
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  // [c.math.hypot3], three-dimensional hypotenuse
#define __cpp_lib_hypot 201603

  template<typename _Tp>
    inline _Tp
    __hypot3(_Tp __x, _Tp __y, _Tp __z)
    {
      __x = std::abs(__x);
      __y = std::abs(__y);
      __z = std::abs(__z);
      if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x)
	return __a * std::sqrt((__x / __a) * (__x / __a)
			       + (__y / __a) * (__y / __a)
			       + (__z / __a) * (__z / __a));
      else
	return {};
    }

  inline float
  hypot(float __x, float __y, float __z)
  { return std::__hypot3<float>(__x, __y, __z); }

  inline double
  hypot(double __x, double __y, double __z)
  { return std::__hypot3<double>(__x, __y, __z); }

  inline long double
  hypot(long double __x, long double __y, long double __z)
  { return std::__hypot3<long double>(__x, __y, __z); }

  template<typename _Tp, typename _Up, typename _Vp>
    typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
    hypot(_Tp __x, _Up __y, _Vp __z)
    {
      using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type;
      return std::__hypot3<__type>(__x, __y, __z);
    }
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#endif // C++17


#if _GLIBCXX_USE_STD_SPEC_FUNCS
@


1.1.1.8
log
@import GCC 8.3.  it includes these new features:
- many optimisations improved: inter-procedural, profile-directed,
  LTO, loops including user-controllable unroll support, and more.
- columns numbers added to line numbers in dwarf
- gcov extended significantly
- many sanitizer updates
- many new warning messages
- many better hints and more useful error messages
- minor ABI changes on x86-64 libstdc++, and some c++17 modes
- draft c++2a features
- better c++17 experimental support
- Armv8.4-A supported, better 8.2-A and 8.3-A support, including
  32 bit arm port.  cortex a-55, a-75 and a-55.a-75 combo support.
- in the GCC bugzilla, 8.1 shows 1149 bugs fixed, 8.2 shows 100, and
  8.3 shows 158.
@
text
@d3 1
a3 1
// Copyright (C) 1997-2018 Free Software Foundation, Inc.
d516 3
d536 4
d955 5
a959 1
#endif // C++11
d961 1
a961 1
#endif /* _GLIBCXX_USE_C99_MATH */
d1075 4
d1859 3
d1863 1
d1867 3
d1908 2
a1911 2
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
@


1.1.1.9
log
@import GCC 7.5.0.  doing this here so that the vendor branch has
the code we'll merge into gcc.old and the netbsd-9 tree gcc tree.
GCC 8.4.0 will be imported immediately on top of this again,
restoring the current status.

these PRs in the GCC bugzilla are fixed with this update:

89869 80693 89795 84272 85593 86669 87148 87647 87895 88103 88107 88563
88870 88976 89002 89187 89195 89234 89303 89314 89354 89361 89403 89412
89512 89520 89590 89621 89663 89679 89704 89734 89872 89933 90090 90208
87075 85870 89009 89242 88167 80864 81933 85890 86608 87145 88857 89024
89119 89214 89511 89612 89705 89400 81740 82186 84552 86554 87609 88105
88149 88415 88739 88903 89135 89223 89296 89505 89572 89677 89698 89710
90006 90020 90071 90328 90474 91126 91162 91812 91887 90075 88998 89945
87047 87506 88074 88656 88740 91137 89008 84010 89349 91136 91347 91995
89397 87030 60702 78884 85594 87649 87725 88181 88470 88553 88568 88588
88620 88644 88906 88949 89246 89587 89726 89768 89796 89998 90108 90756
90950 91704 88825 88983 86538 51333 89446 90220 91308 92143 89392 90213
90278 91131 91200 91510 89037 91481 87673 88418 88938 88948 90547 27221
58321 61250 67183 67958 77583 83531 86215 88648 88720 88726 89091 89466
89629 90105 90329 90585 90760 90924 91087 89222 81956 71861 35031 69455
81849 82993 85798 88138 88155 88169 88205 88206 88228 88249 88269 88376
77703 80260 82077 86248 88393 90786 57048 66089 66695 67679 68009 71723
72714 84394 85544 87734 88298 90937 91557 63891 64132 65342 68649 68717
71066 71860 71935 77746 78421 78645 78865 78983 79485 79540 85953 88326
89651 90744
@
text
@d3 1
a3 1
// Copyright (C) 1997-2017 Free Software Foundation, Inc.
a515 3
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

a532 4
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

d948 1
a948 5
#endif

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

d950 1
a950 1
#endif
a1063 4
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

a1843 3
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

a1844 1

a1847 3
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
d1886 2
a1889 2
#endif // C++17

@


1.1.1.10
log
@re-import GCC 8.4.0.
@
text
@d3 1
a3 1
// Copyright (C) 1997-2018 Free Software Foundation, Inc.
d516 3
d536 4
d955 5
a959 1
#endif // C++11
d961 1
a961 1
#endif /* _GLIBCXX_USE_C99_MATH */
d1075 4
d1859 3
d1863 1
d1867 3
d1908 2
a1911 2
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
@


1.1.1.11
log
@initial import of GCC 9.3.0.  changes include:

- live patching support
- shell completion help
- generally better diagnostic output (less verbose/more useful)
- diagnostics and optimisation choices can be emitted in json
- asan memory usage reduction
- many general, and specific to switch, inter-procedure,
  profile and link-time optimisations.  from the release notes:
  "Overall compile time of Firefox 66 and LibreOffice 6.2.3 on
  an 8-core machine was reduced by about 5% compared to GCC 8.3"
- OpenMP 5.0 support
- better spell-guesser
- partial experimental support for c2x and c++2a
- c++17 is no longer experimental
- arm AAPCS GCC 6-8 structure passing bug fixed, may cause
  incompatibility (restored compat with GCC 5 and earlier.)
- openrisc support
@
text
@d3 1
a3 1
// Copyright (C) 1997-2019 Free Software Foundation, Inc.
a1887 35
#if __cplusplus > 201703L
  // linear interpolation
# define __cpp_lib_interpolate 201902L

  template<typename _Fp>
    constexpr _Fp
    __lerp(_Fp __a, _Fp __b, _Fp __t) noexcept
    {
      if (__a <= 0 && __b >= 0 || __a >= 0 && __b <= 0)
	return __t * __b + (1 - __t) * __a;

      if (__t == 1)
	return __b;                        // exact

      // Exact at __t=0, monotonic except near __t=1,
      // bounded, determinate, and consistent:
      const _Fp __x = __a + __t * (__b - __a);
      return __t > 1 == __b > __a
	? (__b < __x ? __x : __b)
	: (__b > __x ? __x : __b);  // monotonic near __t=1
    }

  constexpr float
  lerp(float __a, float __b, float __t) noexcept
  { return std::__lerp(__a, __b, __t); }

  constexpr double
  lerp(double __a, double __b, double __t) noexcept
  { return std::__lerp(__a, __b, __t); }

  constexpr long double
  lerp(long double __a, long double __b, long double __t) noexcept
  { return std::__lerp(__a, __b, __t); }
#endif // C++20

@


1.1.1.12
log
@initial import of GCC 10.3.0.  main changes include:

caveats:
- ABI issue between c++14 and c++17 fixed
- profile mode is removed from libstdc++
- -fno-common is now the default

new features:
- new flags -fallocation-dce, -fprofile-partial-training,
  -fprofile-reproducible, -fprofile-prefix-path, and -fanalyzer
- many new compile and link time optimisations
- enhanced drive optimisations
- openacc 2.6 support
- openmp 5.0 features
- new warnings: -Wstring-compare and -Wzero-length-bounds
- extended warnings: -Warray-bounds, -Wformat-overflow,
  -Wrestrict, -Wreturn-local-addr, -Wstringop-overflow,
  -Warith-conversion, -Wmismatched-tags, and -Wredundant-tags
- some likely C2X features implemented
- more C++20 implemented
- many new arm & intel CPUs known

hundreds of reported bugs are fixed.  full list of changes
can be found at:

   https://gcc.gnu.org/gcc-10/changes.html
@
text
@d3 1
a3 1
// Copyright (C) 1997-2020 Free Software Foundation, Inc.
@


1.1.1.13
log
@initial import of GCC 10.4.0 sources.

mostly a large list of PRs fixed (210 total), plus one x86-64
specific change related to MMX and 64 bit integer return.

https://gcc.gnu.org/gcc-10/changes.html links to the full list
of PRs fixed.
@
text
@d1847 1
a1847 1
#if __cplusplus >= 201703L
d1880 1
a1880 1
    __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>
d1883 1
a1883 1
      using __type = __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>;
a1920 8

  template<typename _Tp, typename _Up, typename _Vp>
    constexpr __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>
    lerp(_Tp __x, _Up __y, _Vp __z) noexcept
    {
      using __type = __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>;
      return std::__lerp<__type>(__x, __y, __z);
    }
@


1.1.1.14
log
@initial import of GCC 12.3.0.

major changes in GCC 11 included:

- The default mode for C++ is now -std=gnu++17 instead of -std=gnu++14.
- When building GCC itself, the host compiler must now support C++11,
  rather than C++98.
- Some short options of the gcov tool have been renamed: -i to -j and
  -j to -H.
- ThreadSanitizer improvements.
- Introduce Hardware-assisted AddressSanitizer support.
- For targets that produce DWARF debugging information GCC now defaults
  to DWARF version 5. This can produce up to 25% more compact debug
  information compared to earlier versions.
- Many optimisations.
- The existing malloc attribute has been extended so that it can be
  used to identify allocator/deallocator API pairs. A pair of new
  -Wmismatched-dealloc and -Wmismatched-new-delete warnings are added.
- Other new warnings:
  -Wsizeof-array-div, enabled by -Wall, warns about divisions of two
    sizeof operators when the first one is applied to an array and the
    divisor does not equal the size of the array element.
  -Wstringop-overread, enabled by default, warns about calls to string
    functions reading past the end of the arrays passed to them as
    arguments.
  -Wtsan, enabled by default, warns about unsupported features in
    ThreadSanitizer (currently std::atomic_thread_fence).
- Enchanced warnings:
  -Wfree-nonheap-object detects many more instances of calls to
    deallocation functions with pointers not returned from a dynamic
    memory allocation function.
  -Wmaybe-uninitialized diagnoses passing pointers or references to
    uninitialized memory to functions taking const-qualified arguments.
  -Wuninitialized detects reads from uninitialized dynamically
    allocated memory.
  -Warray-parameter warns about functions with inconsistent array forms.
  -Wvla-parameter warns about functions with inconsistent VLA forms.
- Several new features from the upcoming C2X revision of the ISO C
  standard are supported with -std=c2x and -std=gnu2x.
- Several C++20 features have been implemented.
- The C++ front end has experimental support for some of the upcoming
  C++23 draft.
- Several new C++ warnings.
- Enhanced Arm, AArch64, x86, and RISC-V CPU support.
- The implementation of how program state is tracked within
  -fanalyzer has been completely rewritten with many enhancements.

see https://gcc.gnu.org/gcc-11/changes.html for a full list.

major changes in GCC 12 include:

- An ABI incompatibility between C and C++ when passing or returning
  by value certain aggregates containing zero width bit-fields has
  been discovered on various targets. x86-64, ARM and AArch64
  will always ignore them (so there is a C ABI incompatibility
  between GCC 11 and earlier with GCC 12 or later), PowerPC64 ELFv2
  always take them into account (so there is a C++ ABI
  incompatibility, GCC 4.4 and earlier compatible with GCC 12 or
  later, incompatible with GCC 4.5 through GCC 11). RISC-V has
  changed the handling of these already starting with GCC 10. As
  the ABI requires, MIPS takes them into account handling function
  return values so there is a C++ ABI incompatibility with GCC 4.5
  through 11.
- STABS: Support for emitting the STABS debugging format is
  deprecated and will be removed in the next release. All ports now
  default to emit DWARF (version 2 or later) debugging info or are
  obsoleted.
- Vectorization is enabled at -O2 which is now equivalent to the
  original -O2 -ftree-vectorize -fvect-cost-model=very-cheap.
- GCC now supports the ShadowCallStack sanitizer.
- Support for __builtin_shufflevector compatible with the clang
  language extension was added.
- Support for attribute unavailable was added.
- Support for __builtin_dynamic_object_size compatible with the
  clang language extension was added.
- New warnings:
  -Wbidi-chars warns about potentially misleading UTF-8
    bidirectional control characters.
  -Warray-compare warns about comparisons between two operands of
    array type.
- Some new features from the upcoming C2X revision of the ISO C
  standard are supported with -std=c2x and -std=gnu2x.
- Several C++23 features have been implemented.
- Many C++ enhancements across warnings and -f options.

see https://gcc.gnu.org/gcc-12/changes.html for a full list.
@
text
@d3 1
a3 1
// Copyright (C) 1997-2022 Free Software Foundation, Inc.
d1850 1
a1850 1
#define __cpp_lib_hypot 201603L
d1888 1
a1888 1
#if __cplusplus >= 202002L
d1896 1
a1896 1
      if ((__a <= 0 && __b >= 0) || (__a >= 0 && __b <= 0))
d1905 1
a1905 1
      return (__t > 1) == (__b > __a)
@


1.1.1.15
log
@initial import of GCC 14.3.0.

major changes in GCC 13:
- improved sanitizer
- zstd debug info compression
- LTO improvements
- SARIF based diagnostic support
- new warnings: -Wxor-used-as-pow, -Wenum-int-mismatch, -Wself-move,
  -Wdangling-reference
- many new -Wanalyzer* specific warnings
- enhanced warnings: -Wpessimizing-move, -Wredundant-move
- new attributes to mark file descriptors, c++23 "assume"
- several C23 features added
- several C++23 features added
- many new features for Arm, x86, RISC-V

major changes in GCC 14:
- more strict C99 or newer support
- ia64* marked deprecated (but seemingly still in GCC 15.)
- several new hardening features
- support for "hardbool", which can have user supplied values of true/false
- explicit support for stack scrubbing upon function exit
- better auto-vectorisation support
- added clang-compatible __has_feature and __has_extension
- more C23, including -std=c23
- several C++26 features added
- better diagnostics in C++ templates
- new warnings: -Wnrvo, Welaborated-enum-base
- many new features for Arm, x86, RISC-V
- possible ABI breaking change for SPARC64 and small structures with arrays
  of floats.
@
text
@d3 1
a3 1
// Copyright (C) 1997-2024 Free Software Foundation, Inc.
a40 2
#include <bits/requires_hosted.h>

a51 4
#define __glibcxx_want_hypot
#define __glibcxx_want_interpolate
#include <bits/version.h>

d152 9
d287 9
d412 9
a515 585
#if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  constexpr _Float16
  acos(_Float16 __x)
  { return _Float16(__builtin_acosf(__x)); }

  constexpr _Float16
  asin(_Float16 __x)
  { return _Float16(__builtin_asinf(__x)); }

  constexpr _Float16
  atan(_Float16 __x)
  { return _Float16(__builtin_atanf(__x)); }

  constexpr _Float16
  atan2(_Float16 __y, _Float16 __x)
  { return _Float16(__builtin_atan2f(__y, __x)); }

  constexpr _Float16
  ceil(_Float16 __x)
  { return _Float16(__builtin_ceilf(__x)); }

  constexpr _Float16
  cos(_Float16 __x)
  { return _Float16(__builtin_cosf(__x)); }

  constexpr _Float16
  cosh(_Float16 __x)
  { return _Float16(__builtin_coshf(__x)); }

  constexpr _Float16
  exp(_Float16 __x)
  { return _Float16(__builtin_expf(__x)); }

  constexpr _Float16
  fabs(_Float16 __x)
  { return _Float16(__builtin_fabsf(__x)); }

  constexpr _Float16
  floor(_Float16 __x)
  { return _Float16(__builtin_floorf(__x)); }

  constexpr _Float16
  fmod(_Float16 __x, _Float16 __y)
  { return _Float16(__builtin_fmodf(__x, __y)); }

  inline _Float16
  frexp(_Float16 __x, int* __exp)
  { return _Float16(__builtin_frexpf(__x, __exp)); }

  constexpr _Float16
  ldexp(_Float16 __x, int __exp)
  { return _Float16(__builtin_ldexpf(__x, __exp)); }

  constexpr _Float16
  log(_Float16 __x)
  { return _Float16(__builtin_logf(__x)); }

  constexpr _Float16
  log10(_Float16 __x)
  { return _Float16(__builtin_log10f(__x)); }

  inline _Float16
  modf(_Float16 __x, _Float16* __iptr)
  {
    float __i, __ret = __builtin_modff(__x, &__i);
    *__iptr = _Float16(__i);
    return _Float16(__ret);
  }

  constexpr _Float16
  pow(_Float16 __x, _Float16 __y)
  { return _Float16(__builtin_powf(__x, __y)); }

  constexpr _Float16
  sin(_Float16 __x)
  { return _Float16(__builtin_sinf(__x)); }

  constexpr _Float16
  sinh(_Float16 __x)
  { return _Float16(__builtin_sinhf(__x)); }

  constexpr _Float16
  sqrt(_Float16 __x)
  { return _Float16(__builtin_sqrtf(__x)); }

  constexpr _Float16
  tan(_Float16 __x)
  { return _Float16(__builtin_tanf(__x)); }

  constexpr _Float16
  tanh(_Float16 __x)
  { return _Float16(__builtin_tanhf(__x)); }
#endif

#if defined(__STDCPP_FLOAT32_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  constexpr _Float32
  acos(_Float32 __x)
  { return __builtin_acosf(__x); }

  constexpr _Float32
  asin(_Float32 __x)
  { return __builtin_asinf(__x); }

  constexpr _Float32
  atan(_Float32 __x)
  { return __builtin_atanf(__x); }

  constexpr _Float32
  atan2(_Float32 __y, _Float32 __x)
  { return __builtin_atan2f(__y, __x); }

  constexpr _Float32
  ceil(_Float32 __x)
  { return __builtin_ceilf(__x); }

  constexpr _Float32
  cos(_Float32 __x)
  { return __builtin_cosf(__x); }

  constexpr _Float32
  cosh(_Float32 __x)
  { return __builtin_coshf(__x); }

  constexpr _Float32
  exp(_Float32 __x)
  { return __builtin_expf(__x); }

  constexpr _Float32
  fabs(_Float32 __x)
  { return __builtin_fabsf(__x); }

  constexpr _Float32
  floor(_Float32 __x)
  { return __builtin_floorf(__x); }

  constexpr _Float32
  fmod(_Float32 __x, _Float32 __y)
  { return __builtin_fmodf(__x, __y); }

  inline _Float32
  frexp(_Float32 __x, int* __exp)
  { return __builtin_frexpf(__x, __exp); }

  constexpr _Float32
  ldexp(_Float32 __x, int __exp)
  { return __builtin_ldexpf(__x, __exp); }

  constexpr _Float32
  log(_Float32 __x)
  { return __builtin_logf(__x); }

  constexpr _Float32
  log10(_Float32 __x)
  { return __builtin_log10f(__x); }

  inline _Float32
  modf(_Float32 __x, _Float32* __iptr)
  {
    float __i, __ret = __builtin_modff(__x, &__i);
    *__iptr = __i;
    return __ret;
  }

  constexpr _Float32
  pow(_Float32 __x, _Float32 __y)
  { return __builtin_powf(__x, __y); }

  constexpr _Float32
  sin(_Float32 __x)
  { return __builtin_sinf(__x); }

  constexpr _Float32
  sinh(_Float32 __x)
  { return __builtin_sinhf(__x); }

  constexpr _Float32
  sqrt(_Float32 __x)
  { return __builtin_sqrtf(__x); }

  constexpr _Float32
  tan(_Float32 __x)
  { return __builtin_tanf(__x); }

  constexpr _Float32
  tanh(_Float32 __x)
  { return __builtin_tanhf(__x); }
#endif

#if defined(__STDCPP_FLOAT64_T__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64)
  constexpr _Float64
  acos(_Float64 __x)
  { return __builtin_acos(__x); }

  constexpr _Float64
  asin(_Float64 __x)
  { return __builtin_asin(__x); }

  constexpr _Float64
  atan(_Float64 __x)
  { return __builtin_atan(__x); }

  constexpr _Float64
  atan2(_Float64 __y, _Float64 __x)
  { return __builtin_atan2(__y, __x); }

  constexpr _Float64
  ceil(_Float64 __x)
  { return __builtin_ceil(__x); }

  constexpr _Float64
  cos(_Float64 __x)
  { return __builtin_cos(__x); }

  constexpr _Float64
  cosh(_Float64 __x)
  { return __builtin_cosh(__x); }

  constexpr _Float64
  exp(_Float64 __x)
  { return __builtin_exp(__x); }

  constexpr _Float64
  fabs(_Float64 __x)
  { return __builtin_fabs(__x); }

  constexpr _Float64
  floor(_Float64 __x)
  { return __builtin_floor(__x); }

  constexpr _Float64
  fmod(_Float64 __x, _Float64 __y)
  { return __builtin_fmod(__x, __y); }

  inline _Float64
  frexp(_Float64 __x, int* __exp)
  { return __builtin_frexp(__x, __exp); }

  constexpr _Float64
  ldexp(_Float64 __x, int __exp)
  { return __builtin_ldexp(__x, __exp); }

  constexpr _Float64
  log(_Float64 __x)
  { return __builtin_log(__x); }

  constexpr _Float64
  log10(_Float64 __x)
  { return __builtin_log10(__x); }

  inline _Float64
  modf(_Float64 __x, _Float64* __iptr)
  {
    double __i, __ret = __builtin_modf(__x, &__i);
    *__iptr = __i;
    return __ret;
  }

  constexpr _Float64
  pow(_Float64 __x, _Float64 __y)
  { return __builtin_pow(__x, __y); }

  constexpr _Float64
  sin(_Float64 __x)
  { return __builtin_sin(__x); }

  constexpr _Float64
  sinh(_Float64 __x)
  { return __builtin_sinh(__x); }

  constexpr _Float64
  sqrt(_Float64 __x)
  { return __builtin_sqrt(__x); }

  constexpr _Float64
  tan(_Float64 __x)
  { return __builtin_tan(__x); }

  constexpr _Float64
  tanh(_Float64 __x)
  { return __builtin_tanh(__x); }
#endif

#if defined(__STDCPP_FLOAT128_T__) && defined(_GLIBCXX_LDOUBLE_IS_IEEE_BINARY128)
  constexpr _Float128
  acos(_Float128 __x)
  { return __builtin_acosl(__x); }

  constexpr _Float128
  asin(_Float128 __x)
  { return __builtin_asinl(__x); }

  constexpr _Float128
  atan(_Float128 __x)
  { return __builtin_atanl(__x); }

  constexpr _Float128
  atan2(_Float128 __y, _Float128 __x)
  { return __builtin_atan2l(__y, __x); }

  constexpr _Float128
  ceil(_Float128 __x)
  { return __builtin_ceill(__x); }

  constexpr _Float128
  cos(_Float128 __x)
  { return __builtin_cosl(__x); }

  constexpr _Float128
  cosh(_Float128 __x)
  { return __builtin_coshl(__x); }

  constexpr _Float128
  exp(_Float128 __x)
  { return __builtin_expl(__x); }

  constexpr _Float128
  fabs(_Float128 __x)
  { return __builtin_fabsl(__x); }

  constexpr _Float128
  floor(_Float128 __x)
  { return __builtin_floorl(__x); }

  constexpr _Float128
  fmod(_Float128 __x, _Float128 __y)
  { return __builtin_fmodl(__x, __y); }

  inline _Float128
  frexp(_Float128 __x, int* __exp)
  { return __builtin_frexpl(__x, __exp); }

  constexpr _Float128
  ldexp(_Float128 __x, int __exp)
  { return __builtin_ldexpl(__x, __exp); }

  constexpr _Float128
  log(_Float128 __x)
  { return __builtin_logl(__x); }

  constexpr _Float128
  log10(_Float128 __x)
  { return __builtin_log10l(__x); }

  inline _Float128
  modf(_Float128 __x, _Float128* __iptr)
  {
    long double __i, __ret = __builtin_modfl(__x, &__i);
    *__iptr = __i;
    return __ret;
  }

  constexpr _Float128
  pow(_Float128 __x, _Float128 __y)
  { return __builtin_powl(__x, __y); }

  constexpr _Float128
  sin(_Float128 __x)
  { return __builtin_sinl(__x); }

  constexpr _Float128
  sinh(_Float128 __x)
  { return __builtin_sinhl(__x); }

  constexpr _Float128
  sqrt(_Float128 __x)
  { return __builtin_sqrtl(__x); }

  constexpr _Float128
  tan(_Float128 __x)
  { return __builtin_tanl(__x); }

  constexpr _Float128
  tanh(_Float128 __x)
  { return __builtin_tanhl(__x); }
#elif defined(__STDCPP_FLOAT128_T__) && defined(_GLIBCXX_HAVE_FLOAT128_MATH)
  constexpr _Float128
  acos(_Float128 __x)
  { return __builtin_acosf128(__x); }

  constexpr _Float128
  asin(_Float128 __x)
  { return __builtin_asinf128(__x); }

  constexpr _Float128
  atan(_Float128 __x)
  { return __builtin_atanf128(__x); }

  constexpr _Float128
  atan2(_Float128 __y, _Float128 __x)
  { return __builtin_atan2f128(__y, __x); }

  constexpr _Float128
  ceil(_Float128 __x)
  { return __builtin_ceilf128(__x); }

  constexpr _Float128
  cos(_Float128 __x)
  { return __builtin_cosf128(__x); }

  constexpr _Float128
  cosh(_Float128 __x)
  { return __builtin_coshf128(__x); }

  constexpr _Float128
  exp(_Float128 __x)
  { return __builtin_expf128(__x); }

  constexpr _Float128
  fabs(_Float128 __x)
  { return __builtin_fabsf128(__x); }

  constexpr _Float128
  floor(_Float128 __x)
  { return __builtin_floorf128(__x); }

  constexpr _Float128
  fmod(_Float128 __x, _Float128 __y)
  { return __builtin_fmodf128(__x, __y); }

  inline _Float128
  frexp(_Float128 __x, int* __exp)
  { return __builtin_frexpf128(__x, __exp); }

  constexpr _Float128
  ldexp(_Float128 __x, int __exp)
  { return __builtin_ldexpf128(__x, __exp); }

  constexpr _Float128
  log(_Float128 __x)
  { return __builtin_logf128(__x); }

  constexpr _Float128
  log10(_Float128 __x)
  { return __builtin_log10f128(__x); }

  inline _Float128
  modf(_Float128 __x, _Float128* __iptr)
  { return __builtin_modff128(__x, __iptr); }

  constexpr _Float128
  pow(_Float128 __x, _Float128 __y)
  { return __builtin_powf128(__x, __y); }

  constexpr _Float128
  sin(_Float128 __x)
  { return __builtin_sinf128(__x); }

  constexpr _Float128
  sinh(_Float128 __x)
  { return __builtin_sinhf128(__x); }

  constexpr _Float128
  sqrt(_Float128 __x)
  { return __builtin_sqrtf128(__x); }

  constexpr _Float128
  tan(_Float128 __x)
  { return __builtin_tanf128(__x); }

  constexpr _Float128
  tanh(_Float128 __x)
  { return __builtin_tanhf128(__x); }
#endif

#if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  constexpr __gnu_cxx::__bfloat16_t
  acos(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_acosf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  asin(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_asinf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  atan(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_atanf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  atan2(__gnu_cxx::__bfloat16_t __y, __gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_atan2f(__y, __x)); }

  constexpr __gnu_cxx::__bfloat16_t
  ceil(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_ceilf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  cos(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_cosf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  cosh(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_coshf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  exp(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_expf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  fabs(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_fabsf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  floor(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_floorf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  fmod(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __gnu_cxx::__bfloat16_t(__builtin_fmodf(__x, __y)); }

  inline __gnu_cxx::__bfloat16_t
  frexp(__gnu_cxx::__bfloat16_t __x, int* __exp)
  { return __gnu_cxx::__bfloat16_t(__builtin_frexpf(__x, __exp)); }

  constexpr __gnu_cxx::__bfloat16_t
  ldexp(__gnu_cxx::__bfloat16_t __x, int __exp)
  { return __gnu_cxx::__bfloat16_t(__builtin_ldexpf(__x, __exp)); }

  constexpr __gnu_cxx::__bfloat16_t
  log(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_logf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  log10(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_log10f(__x)); }

  inline __gnu_cxx::__bfloat16_t
  modf(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t* __iptr)
  {
    float __i, __ret = __builtin_modff(__x, &__i);
    *__iptr = __gnu_cxx::__bfloat16_t(__i);
    return __gnu_cxx::__bfloat16_t(__ret);
  }

  constexpr __gnu_cxx::__bfloat16_t
  pow(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __gnu_cxx::__bfloat16_t(__builtin_powf(__x, __y)); }

  constexpr __gnu_cxx::__bfloat16_t
  sin(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_sinf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  sinh(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_sinhf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  sqrt(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_sqrtf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  tan(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_tanf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  tanh(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_tanhf(__x)); }
#endif

  template<typename _Tp, typename _Up>
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    atan2(_Tp __y, _Up __x)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return atan2(__type(__y), __type(__x));
    }

  template<typename _Tp, typename _Up>
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmod(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmod(__type(__x), __type(__y));
    }

  template<typename _Tp, typename _Up>
    inline _GLIBCXX_CONSTEXPR
    typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    pow(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return pow(__type(__x), __type(__y));
    }

d578 1
a578 1
    isfinite(_Tp)
d605 1
a605 1
    isinf(_Tp)
d632 1
a632 1
    isnan(_Tp)
d949 2
d952 1
a952 5
#ifdef __STDCPP_FLOAT16_T__
  constexpr int
  fpclassify(_Float16 __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }
d954 1
a954 3
  constexpr bool
  isfinite(_Float16 __x)
  { return __builtin_isfinite(__x); }
d956 55
a1010 39
  constexpr bool
  isinf(_Float16 __x)
  { return __builtin_isinf(__x); }

  constexpr bool
  isnan(_Float16 __x)
  { return __builtin_isnan(__x); }

  constexpr bool
  isnormal(_Float16 __x)
  { return __builtin_isnormal(__x); }

  constexpr bool
  signbit(_Float16 __x)
  { return __builtin_signbit(__x); }

  constexpr bool
  isgreater(_Float16 __x, _Float16 __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreaterequal(_Float16 __x, _Float16 __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isless(_Float16 __x, _Float16 __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  islessequal(_Float16 __x, _Float16 __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessgreater(_Float16 __x, _Float16 __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  isunordered(_Float16 __x, _Float16 __y)
  { return __builtin_isunordered(__x, __y); }
d1012 51
d1064 3
a1066 5
#ifdef __STDCPP_FLOAT32_T__
  constexpr int
  fpclassify(_Float32 __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }
d1068 4
a1071 3
  constexpr bool
  isfinite(_Float32 __x)
  { return __builtin_isfinite(__x); }
d1073 3
a1075 3
  constexpr bool
  isinf(_Float32 __x)
  { return __builtin_isinf(__x); }
d1077 3
a1079 3
  constexpr bool
  isnan(_Float32 __x)
  { return __builtin_isnan(__x); }
d1081 3
a1083 3
  constexpr bool
  isnormal(_Float32 __x)
  { return __builtin_isnormal(__x); }
d1085 3
a1087 3
  constexpr bool
  signbit(_Float32 __x)
  { return __builtin_signbit(__x); }
d1089 3
a1091 3
  constexpr bool
  isgreater(_Float32 __x, _Float32 __y)
  { return __builtin_isgreater(__x, __y); }
d1093 3
a1095 3
  constexpr bool
  isgreaterequal(_Float32 __x, _Float32 __y)
  { return __builtin_isgreaterequal(__x, __y); }
d1097 3
a1099 3
  constexpr bool
  isless(_Float32 __x, _Float32 __y)
  { return __builtin_isless(__x, __y); }
d1101 3
a1103 3
  constexpr bool
  islessequal(_Float32 __x, _Float32 __y)
  { return __builtin_islessequal(__x, __y); }
d1105 3
a1107 3
  constexpr bool
  islessgreater(_Float32 __x, _Float32 __y)
  { return __builtin_islessgreater(__x, __y); }
d1109 3
a1111 4
  constexpr bool
  isunordered(_Float32 __x, _Float32 __y)
  { return __builtin_isunordered(__x, __y); }
#endif
d1113 3
a1115 5
#ifdef __STDCPP_FLOAT64_T__
  constexpr int
  fpclassify(_Float64 __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }
d1117 3
a1119 3
  constexpr bool
  isfinite(_Float64 __x)
  { return __builtin_isfinite(__x); }
d1121 3
a1123 3
  constexpr bool
  isinf(_Float64 __x)
  { return __builtin_isinf(__x); }
d1125 3
a1127 3
  constexpr bool
  isnan(_Float64 __x)
  { return __builtin_isnan(__x); }
d1129 3
a1131 3
  constexpr bool
  isnormal(_Float64 __x)
  { return __builtin_isnormal(__x); }
d1133 4
a1136 3
  constexpr bool
  signbit(_Float64 __x)
  { return __builtin_signbit(__x); }
d1138 3
a1140 23
  constexpr bool
  isgreater(_Float64 __x, _Float64 __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreaterequal(_Float64 __x, _Float64 __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isless(_Float64 __x, _Float64 __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  islessequal(_Float64 __x, _Float64 __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessgreater(_Float64 __x, _Float64 __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  isunordered(_Float64 __x, _Float64 __y)
  { return __builtin_isunordered(__x, __y); }
d1143 3
a1145 5
#ifdef __STDCPP_FLOAT128_T__
  constexpr int
  fpclassify(_Float128 __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }
d1147 3
a1149 3
  constexpr bool
  isfinite(_Float128 __x)
  { return __builtin_isfinite(__x); }
d1151 3
a1153 3
  constexpr bool
  isinf(_Float128 __x)
  { return __builtin_isinf(__x); }
d1155 3
a1157 3
  constexpr bool
  isnan(_Float128 __x)
  { return __builtin_isnan(__x); }
d1159 3
a1161 3
  constexpr bool
  isnormal(_Float128 __x)
  { return __builtin_isnormal(__x); }
d1163 3
a1165 3
  constexpr bool
  signbit(_Float128 __x)
  { return __builtin_signbit(__x); }
d1167 3
a1169 3
  constexpr bool
  isgreater(_Float128 __x, _Float128 __y)
  { return __builtin_isgreater(__x, __y); }
d1171 3
a1173 3
  constexpr bool
  isgreaterequal(_Float128 __x, _Float128 __y)
  { return __builtin_isgreaterequal(__x, __y); }
d1175 3
a1177 3
  constexpr bool
  isless(_Float128 __x, _Float128 __y)
  { return __builtin_isless(__x, __y); }
d1179 3
a1181 3
  constexpr bool
  islessequal(_Float128 __x, _Float128 __y)
  { return __builtin_islessequal(__x, __y); }
d1183 3
a1185 3
  constexpr bool
  islessgreater(_Float128 __x, _Float128 __y)
  { return __builtin_islessgreater(__x, __y); }
d1187 3
a1189 4
  constexpr bool
  isunordered(_Float128 __x, _Float128 __y)
  { return __builtin_isunordered(__x, __y); }
#endif
d1191 3
a1193 5
#ifdef __STDCPP_BFLOAT16_T__
  constexpr int
  fpclassify(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
				FP_SUBNORMAL, FP_ZERO, __x); }
d1195 3
a1197 3
  constexpr bool
  isfinite(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_isfinite(__x); }
d1199 3
a1201 3
  constexpr bool
  isinf(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_isinf(__x); }
d1203 3
a1205 3
  constexpr bool
  isnan(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_isnan(__x); }
d1207 3
a1209 3
  constexpr bool
  isnormal(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_isnormal(__x); }
d1211 5
a1215 865
  constexpr bool
  signbit(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_signbit(__x); }

  constexpr bool
  isgreater(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __builtin_isgreater(__x, __y); }

  constexpr bool
  isgreaterequal(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __builtin_isgreaterequal(__x, __y); }

  constexpr bool
  isless(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __builtin_isless(__x, __y); }

  constexpr bool
  islessequal(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __builtin_islessequal(__x, __y); }

  constexpr bool
  islessgreater(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __builtin_islessgreater(__x, __y); }

  constexpr bool
  isunordered(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __builtin_isunordered(__x, __y); }
#endif

#endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */
#endif /* _GLIBCXX_USE_C99_MATH */

#if __cplusplus >= 201103L

#undef acosf
#undef acosl
#undef asinf
#undef asinl
#undef atanf
#undef atanl
#undef atan2f
#undef atan2l
#undef ceilf
#undef ceill
#undef cosf
#undef cosl
#undef coshf
#undef coshl
#undef expf
#undef expl
#undef fabsf
#undef fabsl
#undef floorf
#undef floorl
#undef fmodf
#undef fmodl
#undef frexpf
#undef frexpl
#undef ldexpf
#undef ldexpl
#undef logf
#undef logl
#undef log10f
#undef log10l
#undef modff
#undef modfl
#undef powf
#undef powl
#undef sinf
#undef sinl
#undef sinhf
#undef sinhl
#undef sqrtf
#undef sqrtl
#undef tanf
#undef tanl
#undef tanhf
#undef tanhl

#ifdef _GLIBCXX_HAVE_ACOSF
  using ::acosf;
#endif
#ifdef _GLIBCXX_HAVE_ACOSL
  using ::acosl;
#endif

#ifdef _GLIBCXX_HAVE_ASINF
  using ::asinf;
#endif
#ifdef _GLIBCXX_HAVE_ASINL
  using ::asinl;
#endif

#ifdef _GLIBCXX_HAVE_ATANF
  using ::atanf;
#endif
#ifdef _GLIBCXX_HAVE_ATANL
  using ::atanl;
#endif

#ifdef _GLIBCXX_HAVE_ATAN2F
  using ::atan2f;
#endif
#ifdef _GLIBCXX_HAVE_ATAN2L
  using ::atan2l;
#endif

#ifdef _GLIBCXX_HAVE_CEILF
  using ::ceilf;
#endif
#ifdef _GLIBCXX_HAVE_CEILL
  using ::ceill;
#endif

#ifdef _GLIBCXX_HAVE_COSF
  using ::cosf;
#endif
#ifdef _GLIBCXX_HAVE_COSL
  using ::cosl;
#endif

#ifdef _GLIBCXX_HAVE_COSHF
  using ::coshf;
#endif
#ifdef _GLIBCXX_HAVE_COSHL
  using ::coshl;
#endif

#ifdef _GLIBCXX_HAVE_EXPF
  using ::expf;
#endif
#ifdef _GLIBCXX_HAVE_EXPL
  using ::expl;
#endif

#ifdef _GLIBCXX_HAVE_FABSF
  using ::fabsf;
#endif
#ifdef _GLIBCXX_HAVE_FABSL
  using ::fabsl;
#endif

#ifdef _GLIBCXX_HAVE_FLOORF
  using ::floorf;
#endif
#ifdef _GLIBCXX_HAVE_FLOORL
  using ::floorl;
#endif

#ifdef _GLIBCXX_HAVE_FMODF
  using ::fmodf;
#endif
#ifdef _GLIBCXX_HAVE_FMODL
  using ::fmodl;
#endif

#ifdef _GLIBCXX_HAVE_FREXPF
  using ::frexpf;
#endif
#ifdef _GLIBCXX_HAVE_FREXPL
  using ::frexpl;
#endif

#ifdef _GLIBCXX_HAVE_LDEXPF
  using ::ldexpf;
#endif
#ifdef _GLIBCXX_HAVE_LDEXPL
  using ::ldexpl;
#endif

#ifdef _GLIBCXX_HAVE_LOGF
  using ::logf;
#endif
#ifdef _GLIBCXX_HAVE_LOGL
  using ::logl;
#endif

#ifdef _GLIBCXX_HAVE_LOG10F
  using ::log10f;
#endif
#ifdef _GLIBCXX_HAVE_LOG10L
  using ::log10l;
#endif

#ifdef _GLIBCXX_HAVE_MODFF
  using ::modff;
#endif
#ifdef _GLIBCXX_HAVE_MODFL
  using ::modfl;
#endif

#ifdef _GLIBCXX_HAVE_POWF
  using ::powf;
#endif
#ifdef _GLIBCXX_HAVE_POWL
  using ::powl;
#endif

#ifdef _GLIBCXX_HAVE_SINF
  using ::sinf;
#endif
#ifdef _GLIBCXX_HAVE_SINL
  using ::sinl;
#endif

#ifdef _GLIBCXX_HAVE_SINHF
  using ::sinhf;
#endif
#ifdef _GLIBCXX_HAVE_SINHL
  using ::sinhl;
#endif

#ifdef _GLIBCXX_HAVE_SQRTF
  using ::sqrtf;
#endif
#ifdef _GLIBCXX_HAVE_SQRTL
  using ::sqrtl;
#endif

#ifdef _GLIBCXX_HAVE_TANF
  using ::tanf;
#endif
#ifdef _GLIBCXX_HAVE_TANL
  using ::tanl;
#endif

#ifdef _GLIBCXX_HAVE_TANHF
  using ::tanhf;
#endif
#ifdef _GLIBCXX_HAVE_TANHL
  using ::tanhl;
#endif

#ifdef _GLIBCXX_USE_C99_MATH_FUNCS

#undef acosh
#undef acoshf
#undef acoshl
#undef asinh
#undef asinhf
#undef asinhl
#undef atanh
#undef atanhf
#undef atanhl
#undef cbrt
#undef cbrtf
#undef cbrtl
#undef copysign
#undef copysignf
#undef copysignl
#undef erf
#undef erff
#undef erfl
#undef erfc
#undef erfcf
#undef erfcl
#undef exp2
#undef exp2f
#undef exp2l
#undef expm1
#undef expm1f
#undef expm1l
#undef fdim
#undef fdimf
#undef fdiml
#undef fma
#undef fmaf
#undef fmal
#undef fmax
#undef fmaxf
#undef fmaxl
#undef fmin
#undef fminf
#undef fminl
#undef hypot
#undef hypotf
#undef hypotl
#undef ilogb
#undef ilogbf
#undef ilogbl
#undef lgamma
#undef lgammaf
#undef lgammal
#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS
#undef llrint
#undef llrintf
#undef llrintl
#undef llround
#undef llroundf
#undef llroundl
#endif
#undef log1p
#undef log1pf
#undef log1pl
#undef log2
#undef log2f
#undef log2l
#undef logb
#undef logbf
#undef logbl
#undef lrint
#undef lrintf
#undef lrintl
#undef lround
#undef lroundf
#undef lroundl
#undef nan
#undef nanf
#undef nanl
#undef nearbyint
#undef nearbyintf
#undef nearbyintl
#undef nextafter
#undef nextafterf
#undef nextafterl
#undef nexttoward
#undef nexttowardf
#undef nexttowardl
#undef remainder
#undef remainderf
#undef remainderl
#undef remquo
#undef remquof
#undef remquol
#undef rint
#undef rintf
#undef rintl
#undef round
#undef roundf
#undef roundl
#undef scalbln
#undef scalblnf
#undef scalblnl
#undef scalbn
#undef scalbnf
#undef scalbnl
#undef tgamma
#undef tgammaf
#undef tgammal
#undef trunc
#undef truncf
#undef truncl

#ifdef _GLIBCXX_HAVE_C99_FLT_EVAL_TYPES
  // types
  using ::double_t;
  using ::float_t;
#endif

  // functions
  using ::acosh;
  using ::acoshf;
  using ::acoshl;

  using ::asinh;
  using ::asinhf;
  using ::asinhl;

  using ::atanh;
  using ::atanhf;
  using ::atanhl;

  using ::cbrt;
  using ::cbrtf;
  using ::cbrtl;

  using ::copysign;
  using ::copysignf;
  using ::copysignl;

  using ::erf;
  using ::erff;
  using ::erfl;

  using ::erfc;
  using ::erfcf;
  using ::erfcl;

  using ::exp2;
  using ::exp2f;
  using ::exp2l;

  using ::expm1;
  using ::expm1f;
  using ::expm1l;

  using ::fdim;
  using ::fdimf;
  using ::fdiml;

  using ::fma;
  using ::fmaf;
  using ::fmal;

  using ::fmax;
  using ::fmaxf;
  using ::fmaxl;

  using ::fmin;
  using ::fminf;
  using ::fminl;

  using ::hypot;
  using ::hypotf;
  using ::hypotl;

  using ::ilogb;
  using ::ilogbf;
  using ::ilogbl;

  using ::lgamma;
  using ::lgammaf;
  using ::lgammal;

#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS
  using ::llrint;
  using ::llrintf;
  using ::llrintl;

  using ::llround;
  using ::llroundf;
  using ::llroundl;
#endif

  using ::log1p;
  using ::log1pf;
  using ::log1pl;

  using ::log2;
  using ::log2f;
  using ::log2l;

  using ::logb;
  using ::logbf;
  using ::logbl;

  using ::lrint;
  using ::lrintf;
  using ::lrintl;

  using ::lround;
  using ::lroundf;
  using ::lroundl;

  using ::nan;
  using ::nanf;
  using ::nanl;

  using ::nearbyint;
  using ::nearbyintf;
  using ::nearbyintl;

  using ::nextafter;
  using ::nextafterf;
  using ::nextafterl;

  using ::nexttoward;
  using ::nexttowardf;
  using ::nexttowardl;

  using ::remainder;
  using ::remainderf;
  using ::remainderl;

  using ::remquo;
  using ::remquof;
  using ::remquol;

  using ::rint;
  using ::rintf;
  using ::rintl;

  using ::round;
  using ::roundf;
  using ::roundl;

  using ::scalbln;
  using ::scalblnf;
  using ::scalblnl;

  using ::scalbn;
  using ::scalbnf;
  using ::scalbnl;

  using ::tgamma;
  using ::tgammaf;
  using ::tgammal;

  using ::trunc;
  using ::truncf;
  using ::truncl;

  /// Additional overloads.
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  acosh(float __x)
  { return __builtin_acoshf(__x); }

  constexpr long double
  acosh(long double __x)
  { return __builtin_acoshl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    acosh(_Tp __x)
    { return __builtin_acosh(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  asinh(float __x)
  { return __builtin_asinhf(__x); }

  constexpr long double
  asinh(long double __x)
  { return __builtin_asinhl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    asinh(_Tp __x)
    { return __builtin_asinh(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  atanh(float __x)
  { return __builtin_atanhf(__x); }

  constexpr long double
  atanh(long double __x)
  { return __builtin_atanhl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    atanh(_Tp __x)
    { return __builtin_atanh(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  cbrt(float __x)
  { return __builtin_cbrtf(__x); }

  constexpr long double
  cbrt(long double __x)
  { return __builtin_cbrtl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    cbrt(_Tp __x)
    { return __builtin_cbrt(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  copysign(float __x, float __y)
  { return __builtin_copysignf(__x, __y); }

  constexpr long double
  copysign(long double __x, long double __y)
  { return __builtin_copysignl(__x, __y); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  erf(float __x)
  { return __builtin_erff(__x); }

  constexpr long double
  erf(long double __x)
  { return __builtin_erfl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    erf(_Tp __x)
    { return __builtin_erf(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  erfc(float __x)
  { return __builtin_erfcf(__x); }

  constexpr long double
  erfc(long double __x)
  { return __builtin_erfcl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    erfc(_Tp __x)
    { return __builtin_erfc(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  exp2(float __x)
  { return __builtin_exp2f(__x); }

  constexpr long double
  exp2(long double __x)
  { return __builtin_exp2l(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    exp2(_Tp __x)
    { return __builtin_exp2(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  expm1(float __x)
  { return __builtin_expm1f(__x); }

  constexpr long double
  expm1(long double __x)
  { return __builtin_expm1l(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    expm1(_Tp __x)
    { return __builtin_expm1(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  fdim(float __x, float __y)
  { return __builtin_fdimf(__x, __y); }

  constexpr long double
  fdim(long double __x, long double __y)
  { return __builtin_fdiml(__x, __y); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  fma(float __x, float __y, float __z)
  { return __builtin_fmaf(__x, __y, __z); }

  constexpr long double
  fma(long double __x, long double __y, long double __z)
  { return __builtin_fmal(__x, __y, __z); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  fmax(float __x, float __y)
  { return __builtin_fmaxf(__x, __y); }

  constexpr long double
  fmax(long double __x, long double __y)
  { return __builtin_fmaxl(__x, __y); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  fmin(float __x, float __y)
  { return __builtin_fminf(__x, __y); }

  constexpr long double
  fmin(long double __x, long double __y)
  { return __builtin_fminl(__x, __y); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  hypot(float __x, float __y)
  { return __builtin_hypotf(__x, __y); }

  constexpr long double
  hypot(long double __x, long double __y)
  { return __builtin_hypotl(__x, __y); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr int
  ilogb(float __x)
  { return __builtin_ilogbf(__x); }

  constexpr int
  ilogb(long double __x)
  { return __builtin_ilogbl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                    int>::__type
    ilogb(_Tp __x)
    { return __builtin_ilogb(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  lgamma(float __x)
  { return __builtin_lgammaf(__x); }

  constexpr long double
  lgamma(long double __x)
  { return __builtin_lgammal(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    lgamma(_Tp __x)
    { return __builtin_lgamma(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr long long
  llrint(float __x)
  { return __builtin_llrintf(__x); }

  constexpr long long
  llrint(long double __x)
  { return __builtin_llrintl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long long>::__type
    llrint(_Tp __x)
    { return __builtin_llrint(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr long long
  llround(float __x)
  { return __builtin_llroundf(__x); }

  constexpr long long
  llround(long double __x)
  { return __builtin_llroundl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long long>::__type
    llround(_Tp __x)
    { return __builtin_llround(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  log1p(float __x)
  { return __builtin_log1pf(__x); }

  constexpr long double
  log1p(long double __x)
  { return __builtin_log1pl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    log1p(_Tp __x)
    { return __builtin_log1p(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  // DR 568.
  constexpr float
  log2(float __x)
  { return __builtin_log2f(__x); }

  constexpr long double
  log2(long double __x)
  { return __builtin_log2l(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    log2(_Tp __x)
    { return __builtin_log2(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  logb(float __x)
  { return __builtin_logbf(__x); }

  constexpr long double
  logb(long double __x)
  { return __builtin_logbl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    logb(_Tp __x)
    { return __builtin_logb(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr long
  lrint(float __x)
  { return __builtin_lrintf(__x); }

  constexpr long
  lrint(long double __x)
  { return __builtin_lrintl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long>::__type
    lrint(_Tp __x)
    { return __builtin_lrint(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr long
  lround(float __x)
  { return __builtin_lroundf(__x); }

  constexpr long
  lround(long double __x)
  { return __builtin_lroundl(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              long>::__type
    lround(_Tp __x)
    { return __builtin_lround(__x); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  nearbyint(float __x)
  { return __builtin_nearbyintf(__x); }
d1218 2
a1219 2
  nearbyint(long double __x)
  { return __builtin_nearbyintl(__x); }
d1226 2
a1227 2
    nearbyint(_Tp __x)
    { return __builtin_nearbyint(__x); }
d1232 2
a1233 2
  nextafter(float __x, float __y)
  { return __builtin_nextafterf(__x, __y); }
d1236 2
a1237 12
  nextafter(long double __x, long double __y)
  { return __builtin_nextafterl(__x, __y); }
#endif

#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  constexpr float
  nexttoward(float __x, long double __y)
  { return __builtin_nexttowardf(__x, __y); }

  constexpr long double
  nexttoward(long double __x, long double __y)
  { return __builtin_nexttowardl(__x, __y); }
d1244 2
a1245 2
    nexttoward(_Tp __x, long double __y)
    { return __builtin_nexttoward(__x, __y); }
d1250 2
a1251 2
  remainder(float __x, float __y)
  { return __builtin_remainderf(__x, __y); }
d1254 2
a1255 2
  remainder(long double __x, long double __y)
  { return __builtin_remainderl(__x, __y); }
d1258 6
a1263 8
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
  inline float
  remquo(float __x, float __y, int* __pquo)
  { return __builtin_remquof(__x, __y, __pquo); }

  inline long double
  remquo(long double __x, long double __y, int* __pquo)
  { return __builtin_remquol(__x, __y, __pquo); }
d1268 2
a1269 2
  rint(float __x)
  { return __builtin_rintf(__x); }
d1272 2
a1273 2
  rint(long double __x)
  { return __builtin_rintl(__x); }
d1280 2
a1281 2
    rint(_Tp __x)
    { return __builtin_rint(__x); }
d1286 2
a1287 2
  round(float __x)
  { return __builtin_roundf(__x); }
d1290 2
a1291 2
  round(long double __x)
  { return __builtin_roundl(__x); }
d1295 7
a1301 5
  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                              double>::__type
    round(_Tp __x)
    { return __builtin_round(__x); }
d1306 2
a1307 2
  scalbln(float __x, long __ex)
  { return __builtin_scalblnf(__x, __ex); }
d1310 2
a1311 2
  scalbln(long double __x, long __ex)
  { return __builtin_scalblnl(__x, __ex); }
d1318 2
a1319 2
    scalbln(_Tp __x, long __ex)
    { return __builtin_scalbln(__x, __ex); }
d1321 1
a1321 1
 
d1324 2
a1325 2
  scalbn(float __x, int __ex)
  { return __builtin_scalbnf(__x, __ex); }
d1328 2
a1329 2
  scalbn(long double __x, int __ex)
  { return __builtin_scalbnl(__x, __ex); }
d1336 2
a1337 2
    scalbn(_Tp __x, int __ex)
    { return __builtin_scalbn(__x, __ex); }
d1342 2
a1343 2
  tgamma(float __x)
  { return __builtin_tgammaf(__x); }
d1346 2
a1347 2
  tgamma(long double __x)
  { return __builtin_tgammal(__x); }
d1354 2
a1355 2
    tgamma(_Tp __x)
    { return __builtin_tgamma(__x); }
d1357 1
a1357 1
 
d1360 2
a1361 2
  trunc(float __x)
  { return __builtin_truncf(__x); }
d1364 2
a1365 2
  trunc(long double __x)
  { return __builtin_truncl(__x); }
d1372 2
a1373 2
    trunc(_Tp __x)
    { return __builtin_trunc(__x); }
d1376 3
a1378 223
#if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  constexpr _Float16
  acosh(_Float16 __x)
  { return _Float16(__builtin_acoshf(__x)); }

  constexpr _Float16
  asinh(_Float16 __x)
  { return _Float16(__builtin_asinhf(__x)); }

  constexpr _Float16
  atanh(_Float16 __x)
  { return _Float16(__builtin_atanhf(__x)); }

  constexpr _Float16
  cbrt(_Float16 __x)
  { return _Float16(__builtin_cbrtf(__x)); }

  constexpr _Float16
  copysign(_Float16 __x, _Float16 __y)
  { return __builtin_copysignf16(__x, __y); }

  constexpr _Float16
  erf(_Float16 __x)
  { return _Float16(__builtin_erff(__x)); }

  constexpr _Float16
  erfc(_Float16 __x)
  { return _Float16(__builtin_erfcf(__x)); }

  constexpr _Float16
  exp2(_Float16 __x)
  { return _Float16(__builtin_exp2f(__x)); }

  constexpr _Float16
  expm1(_Float16 __x)
  { return _Float16(__builtin_expm1f(__x)); }

  constexpr _Float16
  fdim(_Float16 __x, _Float16 __y)
  { return _Float16(__builtin_fdimf(__x, __y)); }

  constexpr _Float16
  fma(_Float16 __x, _Float16 __y, _Float16 __z)
  { return _Float16(__builtin_fmaf(__x, __y, __z)); }

  constexpr _Float16
  fmax(_Float16 __x, _Float16 __y)
  { return _Float16(__builtin_fmaxf(__x, __y)); }

  constexpr _Float16
  fmin(_Float16 __x, _Float16 __y)
  { return _Float16(__builtin_fminf(__x, __y)); }

  constexpr _Float16
  hypot(_Float16 __x, _Float16 __y)
  { return _Float16(__builtin_hypotf(__x, __y)); }

  constexpr int
  ilogb(_Float16 __x)
  { return __builtin_ilogbf(__x); }

  constexpr _Float16
  lgamma(_Float16 __x)
  { return _Float16(__builtin_lgammaf(__x)); }

  constexpr long long
  llrint(_Float16 __x)
  { return __builtin_llrintf(__x); }

  constexpr long long
  llround(_Float16 __x)
  { return __builtin_llroundf(__x); }

  constexpr _Float16
  log1p(_Float16 __x)
  { return _Float16(__builtin_log1pf(__x)); }

  // DR 568.
  constexpr _Float16
  log2(_Float16 __x)
  { return _Float16(__builtin_log2f(__x)); }

  constexpr _Float16
  logb(_Float16 __x)
  { return _Float16(__builtin_logbf(__x)); }

  constexpr long
  lrint(_Float16 __x)
  { return __builtin_lrintf(__x); }

  constexpr long
  lround(_Float16 __x)
  { return __builtin_lroundf(__x); }

  constexpr _Float16
  nearbyint(_Float16 __x)
  { return _Float16(__builtin_nearbyintf(__x)); }

  constexpr _Float16
  nextafter(_Float16 __x, _Float16 __y)
  {
#if __cpp_if_consteval >= 202106L
    // Can't use if (std::__is_constant_evaluated()) here, as it
    // doesn't guarantee optimizing the body away at -O0 and
    // nothing defines nextafterf16.
    if consteval { return __builtin_nextafterf16(__x, __y); }
#endif
#ifdef __INT16_TYPE__
    using __float16_int_type = __INT16_TYPE__;
#else
    using __float16_int_type = short int;
#endif
    __float16_int_type __hx, __hy, __ix, __iy;
    __builtin_memcpy(&__hx, &__x, sizeof(__x));
    __builtin_memcpy(&__hy, &__y, sizeof(__x));
    __ix = __hx & 0x7fff;	// |x|
    __iy = __hy & 0x7fff;	// |y|
    if (__ix > 0x7c00 || __iy > 0x7c00) // x or y is NaN
      return __x + __y;
    if (__x == __y)
      return __y;		// x == y, return y
    if (__ix == 0)		// x == 0
      {
	__hy = (__hy & 0x8000) | 1;	// return +-__FLT16_DENORM_MIN__
	__builtin_memcpy(&__x, &__hy, sizeof(__x));
	__builtin_nextafterf(0.0f, 1.0f);	// raise underflow
	return __x;
      }
    if (__hx >= 0)		// x > 0
      {
	if (__hx > __hy)	// x > y, x -= ulp
	  --__hx;
	else			// x < y, x += ulp
	  ++__hx;
      }
    else			// x < 0
      {
	if (__hy >= 0 || __hx > __hy)	// x < y, x -= ulp
	  --__hx;
	else			// x > y, x += ulp
	  ++__hx;
      }
    __hy = __hx & 0x7c00;
    if (__hy >= 0x7c00)
      __builtin_nextafterf(__FLT_MAX__, __builtin_inff());	// overflow
    else if (__hy < 0x0400)
      __builtin_nextafterf(__FLT_MIN__, 0.0f);	// underflow
    __builtin_memcpy(&__x, &__hx, sizeof(__x));
    return __x;
  }

  constexpr _Float16
  remainder(_Float16 __x, _Float16 __y)
  { return _Float16(__builtin_remainderf(__x, __y)); }

  inline _Float16
  remquo(_Float16 __x, _Float16 __y, int* __pquo)
  { return _Float16(__builtin_remquof(__x, __y, __pquo)); }

  constexpr _Float16
  rint(_Float16 __x)
  { return _Float16(__builtin_rintf(__x)); }

  constexpr _Float16
  round(_Float16 __x)
  { return _Float16(__builtin_roundf(__x)); }

  constexpr _Float16
  scalbln(_Float16 __x, long __ex)
  { return _Float16(__builtin_scalblnf(__x, __ex)); }

  constexpr _Float16
  scalbn(_Float16 __x, int __ex)
  { return _Float16(__builtin_scalbnf(__x, __ex)); }

  constexpr _Float16
  tgamma(_Float16 __x)
  { return _Float16(__builtin_tgammaf(__x)); }

  constexpr _Float16
  trunc(_Float16 __x)
  { return _Float16(__builtin_truncf(__x)); }
#endif

#if defined(__STDCPP_FLOAT32_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  constexpr _Float32
  acosh(_Float32 __x)
  { return __builtin_acoshf(__x); }

  constexpr _Float32
  asinh(_Float32 __x)
  { return __builtin_asinhf(__x); }

  constexpr _Float32
  atanh(_Float32 __x)
  { return __builtin_atanhf(__x); }

  constexpr _Float32
  cbrt(_Float32 __x)
  { return __builtin_cbrtf(__x); }

  constexpr _Float32
  copysign(_Float32 __x, _Float32 __y)
  { return __builtin_copysignf(__x, __y); }

  constexpr _Float32
  erf(_Float32 __x)
  { return __builtin_erff(__x); }

  constexpr _Float32
  erfc(_Float32 __x)
  { return __builtin_erfcf(__x); }

  constexpr _Float32
  exp2(_Float32 __x)
  { return __builtin_exp2f(__x); }

  constexpr _Float32
  expm1(_Float32 __x)
  { return __builtin_expm1f(__x); }

  constexpr _Float32
  fdim(_Float32 __x, _Float32 __y)
d1381 3
a1383 92
  constexpr _Float32
  fma(_Float32 __x, _Float32 __y, _Float32 __z)
  { return __builtin_fmaf(__x, __y, __z); }

  constexpr _Float32
  fmax(_Float32 __x, _Float32 __y)
  { return __builtin_fmaxf(__x, __y); }

  constexpr _Float32
  fmin(_Float32 __x, _Float32 __y)
  { return __builtin_fminf(__x, __y); }

  constexpr _Float32
  hypot(_Float32 __x, _Float32 __y)
  { return __builtin_hypotf(__x, __y); }

  constexpr int
  ilogb(_Float32 __x)
  { return __builtin_ilogbf(__x); }

  constexpr _Float32
  lgamma(_Float32 __x)
  { return __builtin_lgammaf(__x); }

  constexpr long long
  llrint(_Float32 __x)
  { return __builtin_llrintf(__x); }

  constexpr long long
  llround(_Float32 __x)
  { return __builtin_llroundf(__x); }

  constexpr _Float32
  log1p(_Float32 __x)
  { return __builtin_log1pf(__x); }

  // DR 568.
  constexpr _Float32
  log2(_Float32 __x)
  { return __builtin_log2f(__x); }

  constexpr _Float32
  logb(_Float32 __x)
  { return __builtin_logbf(__x); }

  constexpr long
  lrint(_Float32 __x)
  { return __builtin_lrintf(__x); }

  constexpr long
  lround(_Float32 __x)
  { return __builtin_lroundf(__x); }

  constexpr _Float32
  nearbyint(_Float32 __x)
  { return __builtin_nearbyintf(__x); }

  constexpr _Float32
  nextafter(_Float32 __x, _Float32 __y)
  { return __builtin_nextafterf(__x, __y); }

  constexpr _Float32
  remainder(_Float32 __x, _Float32 __y)
  { return __builtin_remainderf(__x, __y); }

  inline _Float32
  remquo(_Float32 __x, _Float32 __y, int* __pquo)
  { return __builtin_remquof(__x, __y, __pquo); }

  constexpr _Float32
  rint(_Float32 __x)
  { return __builtin_rintf(__x); }

  constexpr _Float32
  round(_Float32 __x)
  { return __builtin_roundf(__x); }

  constexpr _Float32
  scalbln(_Float32 __x, long __ex)
  { return __builtin_scalblnf(__x, __ex); }

  constexpr _Float32
  scalbn(_Float32 __x, int __ex)
  { return __builtin_scalbnf(__x, __ex); }

  constexpr _Float32
  tgamma(_Float32 __x)
  { return __builtin_tgammaf(__x); }

  constexpr _Float32
  trunc(_Float32 __x)
  { return __builtin_truncf(__x); }
d1386 9
a1394 113
#if defined(__STDCPP_FLOAT64_T__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64)
  constexpr _Float64
  acosh(_Float64 __x)
  { return __builtin_acosh(__x); }

  constexpr _Float64
  asinh(_Float64 __x)
  { return __builtin_asinh(__x); }

  constexpr _Float64
  atanh(_Float64 __x)
  { return __builtin_atanh(__x); }

  constexpr _Float64
  cbrt(_Float64 __x)
  { return __builtin_cbrt(__x); }

  constexpr _Float64
  copysign(_Float64 __x, _Float64 __y)
  { return __builtin_copysign(__x, __y); }

  constexpr _Float64
  erf(_Float64 __x)
  { return __builtin_erf(__x); }

  constexpr _Float64
  erfc(_Float64 __x)
  { return __builtin_erfc(__x); }

  constexpr _Float64
  exp2(_Float64 __x)
  { return __builtin_exp2(__x); }

  constexpr _Float64
  expm1(_Float64 __x)
  { return __builtin_expm1(__x); }

  constexpr _Float64
  fdim(_Float64 __x, _Float64 __y)
  { return __builtin_fdim(__x, __y); }

  constexpr _Float64
  fma(_Float64 __x, _Float64 __y, _Float64 __z)
  { return __builtin_fma(__x, __y, __z); }

  constexpr _Float64
  fmax(_Float64 __x, _Float64 __y)
  { return __builtin_fmax(__x, __y); }

  constexpr _Float64
  fmin(_Float64 __x, _Float64 __y)
  { return __builtin_fmin(__x, __y); }

  constexpr _Float64
  hypot(_Float64 __x, _Float64 __y)
  { return __builtin_hypot(__x, __y); }

  constexpr int
  ilogb(_Float64 __x)
  { return __builtin_ilogb(__x); }

  constexpr _Float64
  lgamma(_Float64 __x)
  { return __builtin_lgamma(__x); }

  constexpr long long
  llrint(_Float64 __x)
  { return __builtin_llrint(__x); }

  constexpr long long
  llround(_Float64 __x)
  { return __builtin_llround(__x); }

  constexpr _Float64
  log1p(_Float64 __x)
  { return __builtin_log1p(__x); }

  // DR 568.
  constexpr _Float64
  log2(_Float64 __x)
  { return __builtin_log2(__x); }

  constexpr _Float64
  logb(_Float64 __x)
  { return __builtin_logb(__x); }

  constexpr long
  lrint(_Float64 __x)
  { return __builtin_lrint(__x); }

  constexpr long
  lround(_Float64 __x)
  { return __builtin_lround(__x); }

  constexpr _Float64
  nearbyint(_Float64 __x)
  { return __builtin_nearbyint(__x); }

  constexpr _Float64
  nextafter(_Float64 __x, _Float64 __y)
  { return __builtin_nextafter(__x, __y); }

  constexpr _Float64
  remainder(_Float64 __x, _Float64 __y)
  { return __builtin_remainder(__x, __y); }

  inline _Float64
  remquo(_Float64 __x, _Float64 __y, int* __pquo)
  { return __builtin_remquo(__x, __y, __pquo); }

  constexpr _Float64
  rint(_Float64 __x)
  { return __builtin_rint(__x); }
d1396 4
a1399 3
  constexpr _Float64
  round(_Float64 __x)
  { return __builtin_round(__x); }
d1401 4
a1404 3
  constexpr _Float64
  scalbln(_Float64 __x, long __ex)
  { return __builtin_scalbln(__x, __ex); }
d1406 9
a1414 3
  constexpr _Float64
  scalbn(_Float64 __x, int __ex)
  { return __builtin_scalbn(__x, __ex); }
d1416 4
a1419 3
  constexpr _Float64
  tgamma(_Float64 __x)
  { return __builtin_tgamma(__x); }
d1421 3
a1423 3
  constexpr _Float64
  trunc(_Float64 __x)
  { return __builtin_trunc(__x); }
d1426 9
a1434 4
#if defined(__STDCPP_FLOAT128_T__) && defined(_GLIBCXX_LDOUBLE_IS_IEEE_BINARY128)
  constexpr _Float128
  acosh(_Float128 __x)
  { return __builtin_acoshl(__x); }
d1436 4
a1439 3
  constexpr _Float128
  asinh(_Float128 __x)
  { return __builtin_asinhl(__x); }
d1441 4
a1444 3
  constexpr _Float128
  atanh(_Float128 __x)
  { return __builtin_atanhl(__x); }
d1446 9
a1454 3
  constexpr _Float128
  cbrt(_Float128 __x)
  { return __builtin_cbrtl(__x); }
d1456 4
a1459 3
  constexpr _Float128
  copysign(_Float128 __x, _Float128 __y)
  { return __builtin_copysignl(__x, __y); }
d1461 4
a1464 3
  constexpr _Float128
  erf(_Float128 __x)
  { return __builtin_erfl(__x); }
d1466 9
a1474 3
  constexpr _Float128
  erfc(_Float128 __x)
  { return __builtin_erfcl(__x); }
d1476 4
a1479 3
  constexpr _Float128
  exp2(_Float128 __x)
  { return __builtin_exp2l(__x); }
d1481 4
a1484 3
  constexpr _Float128
  expm1(_Float128 __x)
  { return __builtin_expm1l(__x); }
d1486 8
a1493 3
  constexpr _Float128
  fdim(_Float128 __x, _Float128 __y)
  { return __builtin_fdiml(__x, __y); }
d1495 4
a1498 3
  constexpr _Float128
  fma(_Float128 __x, _Float128 __y, _Float128 __z)
  { return __builtin_fmal(__x, __y, __z); }
d1500 4
a1503 3
  constexpr _Float128
  fmax(_Float128 __x, _Float128 __y)
  { return __builtin_fmaxl(__x, __y); }
d1505 7
a1511 3
  constexpr _Float128
  fmin(_Float128 __x, _Float128 __y)
  { return __builtin_fminl(__x, __y); }
d1513 4
a1516 3
  constexpr _Float128
  hypot(_Float128 __x, _Float128 __y)
  { return __builtin_hypotl(__x, __y); }
d1518 4
a1521 3
  constexpr int
  ilogb(_Float128 __x)
  { return __builtin_ilogbl(__x); }
d1523 7
a1529 3
  constexpr _Float128
  lgamma(_Float128 __x)
  { return __builtin_lgammal(__x); }
d1531 1
d1533 2
a1534 2
  llrint(_Float128 __x)
  { return __builtin_llrintl(__x); }
d1537 1
a1537 1
  llround(_Float128 __x)
d1539 1
d1541 7
a1547 3
  constexpr _Float128
  log1p(_Float128 __x)
  { return __builtin_log1pl(__x); }
d1549 4
a1552 4
  // DR 568.
  constexpr _Float128
  log2(_Float128 __x)
  { return __builtin_log2l(__x); }
d1554 4
a1557 3
  constexpr _Float128
  logb(_Float128 __x)
  { return __builtin_logbl(__x); }
d1559 7
a1565 3
  constexpr long
  lrint(_Float128 __x)
  { return __builtin_lrintl(__x); }
d1567 5
a1571 3
  constexpr long
  lround(_Float128 __x)
  { return __builtin_lroundl(__x); }
d1573 4
a1576 3
  constexpr _Float128
  nearbyint(_Float128 __x)
  { return __builtin_nearbyintl(__x); }
d1578 7
a1584 3
  constexpr _Float128
  nextafter(_Float128 __x, _Float128 __y)
  { return __builtin_nextafterl(__x, __y); }
d1586 4
a1589 3
  constexpr _Float128
  remainder(_Float128 __x, _Float128 __y)
  { return __builtin_remainderl(__x, __y); }
d1591 4
a1594 3
  inline _Float128
  remquo(_Float128 __x, _Float128 __y, int* __pquo)
  { return __builtin_remquol(__x, __y, __pquo); }
d1596 7
a1602 108
  constexpr _Float128
  rint(_Float128 __x)
  { return __builtin_rintl(__x); }

  constexpr _Float128
  round(_Float128 __x)
  { return __builtin_roundl(__x); }

  constexpr _Float128
  scalbln(_Float128 __x, long __ex)
  { return __builtin_scalblnl(__x, __ex); }

  constexpr _Float128
  scalbn(_Float128 __x, int __ex)
  { return __builtin_scalbnl(__x, __ex); }

  constexpr _Float128
  tgamma(_Float128 __x)
  { return __builtin_tgammal(__x); }

  constexpr _Float128
  trunc(_Float128 __x)
  { return __builtin_truncl(__x); }
#elif defined(__STDCPP_FLOAT128_T__) && defined(_GLIBCXX_HAVE_FLOAT128_MATH)
  constexpr _Float128
  acosh(_Float128 __x)
  { return __builtin_acoshf128(__x); }

  constexpr _Float128
  asinh(_Float128 __x)
  { return __builtin_asinhf128(__x); }

  constexpr _Float128
  atanh(_Float128 __x)
  { return __builtin_atanhf128(__x); }

  constexpr _Float128
  cbrt(_Float128 __x)
  { return __builtin_cbrtf128(__x); }

  constexpr _Float128
  copysign(_Float128 __x, _Float128 __y)
  { return __builtin_copysignf128(__x, __y); }

  constexpr _Float128
  erf(_Float128 __x)
  { return __builtin_erff128(__x); }

  constexpr _Float128
  erfc(_Float128 __x)
  { return __builtin_erfcf128(__x); }

  constexpr _Float128
  exp2(_Float128 __x)
  { return __builtin_exp2f128(__x); }

  constexpr _Float128
  expm1(_Float128 __x)
  { return __builtin_expm1f128(__x); }

  constexpr _Float128
  fdim(_Float128 __x, _Float128 __y)
  { return __builtin_fdimf128(__x, __y); }

  constexpr _Float128
  fma(_Float128 __x, _Float128 __y, _Float128 __z)
  { return __builtin_fmaf128(__x, __y, __z); }

  constexpr _Float128
  fmax(_Float128 __x, _Float128 __y)
  { return __builtin_fmaxf128(__x, __y); }

  constexpr _Float128
  fmin(_Float128 __x, _Float128 __y)
  { return __builtin_fminf128(__x, __y); }

  constexpr _Float128
  hypot(_Float128 __x, _Float128 __y)
  { return __builtin_hypotf128(__x, __y); }

  constexpr int
  ilogb(_Float128 __x)
  { return __builtin_ilogbf128(__x); }

  constexpr _Float128
  lgamma(_Float128 __x)
  { return __builtin_lgammaf128(__x); }

  constexpr long long
  llrint(_Float128 __x)
  { return __builtin_llrintf128(__x); }

  constexpr long long
  llround(_Float128 __x)
  { return __builtin_llroundf128(__x); }

  constexpr _Float128
  log1p(_Float128 __x)
  { return __builtin_log1pf128(__x); }

  // DR 568.
  constexpr _Float128
  log2(_Float128 __x)
  { return __builtin_log2f128(__x); }

  constexpr _Float128
  logb(_Float128 __x)
  { return __builtin_logbf128(__x); }
d1604 1
d1606 2
a1607 2
  lrint(_Float128 __x)
  { return __builtin_lrintf128(__x); }
d1610 3
a1612 2
  lround(_Float128 __x)
  { return __builtin_lroundf128(__x); }
d1614 7
a1620 126
  constexpr _Float128
  nearbyint(_Float128 __x)
  { return __builtin_nearbyintf128(__x); }

  constexpr _Float128
  nextafter(_Float128 __x, _Float128 __y)
  { return __builtin_nextafterf128(__x, __y); }

  constexpr _Float128
  remainder(_Float128 __x, _Float128 __y)
  { return __builtin_remainderf128(__x, __y); }

  inline _Float128
  remquo(_Float128 __x, _Float128 __y, int* __pquo)
  { return __builtin_remquof128(__x, __y, __pquo); }

  constexpr _Float128
  rint(_Float128 __x)
  { return __builtin_rintf128(__x); }

  constexpr _Float128
  round(_Float128 __x)
  { return __builtin_roundf128(__x); }

  constexpr _Float128
  scalbln(_Float128 __x, long __ex)
  { return __builtin_scalblnf128(__x, __ex); }

  constexpr _Float128
  scalbn(_Float128 __x, int __ex)
  { return __builtin_scalbnf128(__x, __ex); }

  constexpr _Float128
  tgamma(_Float128 __x)
  { return __builtin_tgammaf128(__x); }

  constexpr _Float128
  trunc(_Float128 __x)
  { return __builtin_truncf128(__x); }
#endif

#if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  constexpr __gnu_cxx::__bfloat16_t
  acosh(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_acoshf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  asinh(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_asinhf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  atanh(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_atanhf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  cbrt(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_cbrtf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  copysign(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __gnu_cxx::__bfloat16_t(__builtin_copysignf(__x, __y)); }

  constexpr __gnu_cxx::__bfloat16_t
  erf(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_erff(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  erfc(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_erfcf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  exp2(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_exp2f(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  expm1(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_expm1f(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  fdim(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __gnu_cxx::__bfloat16_t(__builtin_fdimf(__x, __y)); }

  constexpr __gnu_cxx::__bfloat16_t
  fma(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y, __gnu_cxx::__bfloat16_t __z)
  { return __gnu_cxx::__bfloat16_t(__builtin_fmaf(__x, __y, __z)); }

  constexpr __gnu_cxx::__bfloat16_t
  fmax(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __gnu_cxx::__bfloat16_t(__builtin_fmaxf(__x, __y)); }

  constexpr __gnu_cxx::__bfloat16_t
  fmin(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __gnu_cxx::__bfloat16_t(__builtin_fminf(__x, __y)); }

  constexpr __gnu_cxx::__bfloat16_t
  hypot(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __gnu_cxx::__bfloat16_t(__builtin_hypotf(__x, __y)); }

  constexpr int
  ilogb(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_ilogbf(__x); }

  constexpr __gnu_cxx::__bfloat16_t
  lgamma(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_lgammaf(__x)); }

  constexpr long long
  llrint(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_llrintf(__x); }

  constexpr long long
  llround(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_llroundf(__x); }

  constexpr __gnu_cxx::__bfloat16_t
  log1p(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_log1pf(__x)); }

  // DR 568.
  constexpr __gnu_cxx::__bfloat16_t
  log2(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_log2f(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  logb(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_logbf(__x)); }
d1622 1
d1624 2
a1625 2
  lrint(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_lrintf(__x); }
d1628 16
a1643 2
  lround(__gnu_cxx::__bfloat16_t __x)
  { return __builtin_lroundf(__x); }
d1645 3
a1647 12
  constexpr __gnu_cxx::__bfloat16_t
  nearbyint(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_nearbyintf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  nextafter(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  {
#if __cpp_if_consteval >= 202106L
    // Can't use if (std::__is_constant_evaluated()) here, as it
    // doesn't guarantee optimizing the body away at -O0 and
    // nothing defines nextafterf16b.
    if consteval { return __builtin_nextafterf16b(__x, __y); }
d1649 7
a1655 4
#ifdef __INT16_TYPE__
    using __bfloat16_int_type = __INT16_TYPE__;
#else
    using __bfloat16_int_type = short int;
d1657 9
a1665 70
    __bfloat16_int_type __hx, __hy, __ix, __iy;
    __builtin_memcpy(&__hx, &__x, sizeof(__x));
    __builtin_memcpy(&__hy, &__y, sizeof(__x));
    __ix = __hx & 0x7fff;	// |x|
    __iy = __hy & 0x7fff;	// |y|
    if (__ix > 0x7f80 || __iy > 0x7f80) // x or y is NaN
      return __x + __y;
    if (__x == __y)
      return __y;		// x == y, return y
    if (__ix == 0)		// x == 0
      {
	__hy = (__hy & 0x8000) | 1;	// return +-__BFLT16_DENORM_MIN__
	__builtin_memcpy(&__x, &__hy, sizeof(__x));
	__builtin_nextafterf(0.0f, 1.0f);	// raise underflow
	return __x;
      }
    if (__hx >= 0)		// x > 0
      {
	if (__hx > __hy)	// x > y, x -= ulp
	  --__hx;
	else			// x < y, x += ulp
	  ++__hx;
      }
    else			// x < 0
      {
	if (__hy >= 0 || __hx > __hy)	// x < y, x -= ulp
	  --__hx;
	else			// x > y, x += ulp
	  ++__hx;
      }
    __hy = __hx & 0x7f80;
    if (__hy >= 0x7f80)
      __builtin_nextafterf(__FLT_MAX__, __builtin_inff());	// overflow
    else if (__hy < 0x0080)
      __builtin_nextafterf(__FLT_MIN__, 0.0f);	// underflow
    __builtin_memcpy(&__x, &__hx, sizeof(__x));
    return __x;
  }

  constexpr __gnu_cxx::__bfloat16_t
  remainder(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y)
  { return __gnu_cxx::__bfloat16_t(__builtin_remainderf(__x, __y)); }

  inline __gnu_cxx::__bfloat16_t
  remquo(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y, int* __pquo)
  { return __gnu_cxx::__bfloat16_t(__builtin_remquof(__x, __y, __pquo)); }

  constexpr __gnu_cxx::__bfloat16_t
  rint(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_rintf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  round(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_roundf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  scalbln(__gnu_cxx::__bfloat16_t __x, long __ex)
  { return __gnu_cxx::__bfloat16_t(__builtin_scalblnf(__x, __ex)); }

  constexpr __gnu_cxx::__bfloat16_t
  scalbn(__gnu_cxx::__bfloat16_t __x, int __ex)
  { return __gnu_cxx::__bfloat16_t(__builtin_scalbnf(__x, __ex)); }

  constexpr __gnu_cxx::__bfloat16_t
  tgamma(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_tgammaf(__x)); }

  constexpr __gnu_cxx::__bfloat16_t
  trunc(__gnu_cxx::__bfloat16_t __x)
  { return __gnu_cxx::__bfloat16_t(__builtin_truncf(__x)); }
d1671 1
a1671 1
    copysign(_Tp __x, _Up __y)
d1674 1
a1674 1
      return copysign(__type(__x), __type(__y));
d1676 1
d1678 4
a1681 7
  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fdim(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fdim(__type(__x), __type(__y));
    }
d1683 4
a1686 7
  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmax(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmax(__type(__x), __type(__y));
    }
d1688 7
a1694 7
  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    fmin(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return fmin(__type(__x), __type(__y));
    }
d1696 4
a1699 7
  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    hypot(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return hypot(__type(__x), __type(__y));
    }
d1701 4
a1704 7
  template<typename _Tp, typename _Up>
    constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
    nextafter(_Tp __x, _Up __y)
    {
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
      return nextafter(__type(__x), __type(__y));
    }
d1706 1
d1714 6
d1721 6
d1734 101
d1836 6
a1841 7
  template<typename _Tp, typename _Up, typename _Vp>
    constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
    fma(_Tp __x, _Up __y, _Vp __z)
    {
      typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
      return fma(__type(__x), __type(__y), __type(__z));
    }
d1844 1
a1844 1
#endif // _GLIBCXX_USE_C99_MATH_FUNCS
d1847 2
a1848 1
#ifdef __cpp_lib_hypot // C++ >= 17 && HOSTED
d1850 2
d1886 1
d1888 3
a1890 17
#if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  inline _Float16
  hypot(_Float16 __x, _Float16 __y, _Float16 __z)
  { return std::__hypot3<_Float16>(__x, __y, __z); }
#endif

#if defined(__STDCPP_FLOAT32_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  inline _Float32
  hypot(_Float32 __x, _Float32 __y, _Float32 __z)
  { return std::__hypot3<_Float32>(__x, __y, __z); }
#endif

#if defined(__STDCPP_FLOAT64_T__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64)
  inline _Float64
  hypot(_Float64 __x, _Float64 __y, _Float64 __z)
  { return std::__hypot3<_Float64>(__x, __y, __z); }
#endif
a1891 18
#if defined(__STDCPP_FLOAT128_T__) \
    && (defined(_GLIBCXX_LDOUBLE_IS_IEEE_BINARY128) \
	|| defined(_GLIBCXX_HAVE_FLOAT128_MATH))
  inline _Float128
  hypot(_Float128 __x, _Float128 __y, _Float128 __z)
  { return std::__hypot3<_Float128>(__x, __y, __z); }
#endif

#if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  inline __gnu_cxx::__bfloat16_t
  hypot(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y, __gnu_cxx::__bfloat16_t __z)
  { return std::__hypot3<__gnu_cxx::__bfloat16_t>(__x, __y, __z); }
#endif

#endif // __cpp_lib_hypot

#ifdef __cpp_lib_interpolate // C++ >= 20
  // linear interpolation
d1929 1
a1929 33

#if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  inline _Float16
  lerp(_Float16 __x, _Float16 __y, _Float16 __z) noexcept
  { return std::__lerp<_Float16>(__x, __y, __z); }
#endif

#if defined(__STDCPP_FLOAT32_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  inline _Float32
  lerp(_Float32 __x, _Float32 __y, _Float32 __z) noexcept
  { return std::__lerp<_Float32>(__x, __y, __z); }
#endif

#if defined(__STDCPP_FLOAT64_T__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64)
  inline _Float64
  lerp(_Float64 __x, _Float64 __y, _Float64 __z) noexcept
  { return std::__lerp<_Float64>(__x, __y, __z); }
#endif

#if defined(__STDCPP_FLOAT128_T__) \
    && (defined(_GLIBCXX_LDOUBLE_IS_IEEE_BINARY128) \
	|| defined(_GLIBCXX_HAVE_FLOAT128_MATH))
  inline _Float128
  lerp(_Float128 __x, _Float128 __y, _Float128 __z) noexcept
  { return std::__lerp<_Float128>(__x, __y, __z); }
#endif

#if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  inline __gnu_cxx::__bfloat16_t
  lerp(__gnu_cxx::__bfloat16_t __x, __gnu_cxx::__bfloat16_t __y, __gnu_cxx::__bfloat16_t __z) noexcept
  { return std::__lerp<__gnu_cxx::__bfloat16_t>(__x, __y, __z); }
#endif
#endif // __cpp_lib_interpolate
@


