97 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			97 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								/* -*- c++ -*- */
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Copyright (c) 2019 Michael Dickens <michaelld@macports.org>
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Permission to use, copy, modify, and distribute this software for any
							 | 
						||
| 
								 | 
							
								 * purpose with or without fee is hereby granted, provided that the above
							 | 
						||
| 
								 | 
							
								 * copyright notice and this permission notice appear in all copies.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
							 | 
						||
| 
								 | 
							
								 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
							 | 
						||
| 
								 | 
							
								 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
							 | 
						||
| 
								 | 
							
								 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
							 | 
						||
| 
								 | 
							
								 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
							 | 
						||
| 
								 | 
							
								 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
							 | 
						||
| 
								 | 
							
								 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef _MACPORTS_CMATH_
							 | 
						||
| 
								 | 
							
								#define _MACPORTS_CMATH_
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* include MP support header to see if c++11 cmath support is needed */
							 | 
						||
| 
								 | 
							
								#include "MacportsLegacySupport.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if __MP_LEGACY_SUPPORT_CXX11_CMATH__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * NOTE: This has to come -before- the include_next, so that the
							 | 
						||
| 
								 | 
							
								 * setting is valid for any subsequently included header.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#undef L_GLIBCXX_USE_C99_MATH_TR1
							 | 
						||
| 
								 | 
							
								#ifndef _GLIBCXX_USE_C99_MATH_TR1
							 | 
						||
| 
								 | 
							
								#define L_GLIBCXX_USE_C99_MATH_TR1 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * this macro enables c++11 math support in g++. It just needs to be
							 | 
						||
| 
								 | 
							
								 * defined; not to any particular value; use 1 just because.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define _GLIBCXX_USE_C99_MATH_TR1 1
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Include our local math.h. NOTE: This has to come -before- the
							 | 
						||
| 
								 | 
							
								 * include_next for <cmath>, so that the top-level functions are
							 | 
						||
| 
								 | 
							
								 * all declared before they are referenced.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#include <math.h>
							 | 
						||
| 
								 | 
							
								#endif /* __MP_LEGACY_SUPPORT_CXX11_CMATH__ */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Include the next cmath, which might be from the primary system or
							 | 
						||
| 
								 | 
							
								 * it might be within GCC's c++ headers; either is OK here.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#include_next <cmath>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if __MP_LEGACY_SUPPORT_CXX11_CMATH__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef L_GLIBCXX_USE_C99_MATH_TR1
							 | 
						||
| 
								 | 
							
								#undef _GLIBCXX_USE_C99_MATH_TR1
							 | 
						||
| 
								 | 
							
								#undef L_GLIBCXX_USE_C99_MATH_TR1
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * this is the same condition that defines the function prototypes in
							 | 
						||
| 
								 | 
							
								 * the system <math.h>.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#if ( defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ) || ! defined( __STRICT_ANSI__ )  || ! defined( __GNUC__ )
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#ifdef _GLIBCXX_NO_C99_ROUNDING_FUNCS
							 | 
						||
| 
								 | 
							
								/* have to define these ourselves because GCC doesn't properly */
							 | 
						||
| 
								 | 
							
								#if __cplusplus >= 201103L
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#undef llrint
							 | 
						||
| 
								 | 
							
								#undef llrintf
							 | 
						||
| 
								 | 
							
								#undef llrintl
							 | 
						||
| 
								 | 
							
								#undef llround
							 | 
						||
| 
								 | 
							
								#undef llroundf
							 | 
						||
| 
								 | 
							
								#undef llroundl
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace std _GLIBCXX_VISIBILITY(default)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								_GLIBCXX_BEGIN_NAMESPACE_VERSION
							 | 
						||
| 
								 | 
							
								  using ::llrint;
							 | 
						||
| 
								 | 
							
								  using ::llrintf;
							 | 
						||
| 
								 | 
							
								  using ::llrintl;
							 | 
						||
| 
								 | 
							
								  using ::llround;
							 | 
						||
| 
								 | 
							
								  using ::llroundf;
							 | 
						||
| 
								 | 
							
								  using ::llroundl;
							 | 
						||
| 
								 | 
							
								_GLIBCXX_END_NAMESPACE_VERSION
							 | 
						||
| 
								 | 
							
								} // namespace
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* __cplusplus >= 201103L */
							 | 
						||
| 
								 | 
							
								#endif /* _GLIBCXX_NO_C99_ROUNDING_FUNCS */
							 | 
						||
| 
								 | 
							
								#endif /* various */
							 | 
						||
| 
								 | 
							
								#endif /* __MP_LEGACY_SUPPORT_CXX11_CMATH__ */
							 | 
						||
| 
								 | 
							
								#endif /* _MACPORTS_CMATH_ */
							 |