mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			272 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			272 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
| /* Stub definitions for libmath subpart of libstdc++. */
 | |
| 
 | |
| /* Copyright (C) 2001, 2002 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 2, 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.
 | |
| 
 | |
|    You should have received a copy of the GNU General Public License along
 | |
|    with this library; see the file COPYING.  If not, write to the Free
 | |
|    Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 | |
|    USA.
 | |
| 
 | |
|    As a special exception, you may use this file as part of a free software
 | |
|    library without restriction.  Specifically, if other files instantiate
 | |
|    templates or use macros or inline functions from this file, or you compile
 | |
|    this file and link it with other files to produce an executable, this
 | |
|    file does not by itself cause the resulting executable to be covered by
 | |
|    the GNU General Public License.  This exception does not however
 | |
|    invalidate any other reasons why the executable file might be covered by
 | |
|    the GNU General Public License.  */
 | |
| 
 | |
| #include <math.h>
 | |
| #include "config.h"
 | |
| 
 | |
| /* For targets which do not have support for long double versions,
 | |
|    we use the crude approximation.  We'll do better later.  */
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_ATAN2F
 | |
| float
 | |
| atan2f(float x, float y)
 | |
| {
 | |
|   return (float) atan2(x, y);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_ATAN2L
 | |
| long double
 | |
| atan2l(long double x, long double y)
 | |
| {
 | |
|   return atan2((double) x, (double) y);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_COSF
 | |
| float
 | |
| cosf(float x)
 | |
| {
 | |
|   return (float) cos(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_COSL
 | |
| long double
 | |
| cosl(long double x)
 | |
| {
 | |
|   return cos((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_COSHF
 | |
| float
 | |
| coshf(float x)
 | |
| {
 | |
|   return (float) cosh(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_COSHL
 | |
| long double
 | |
| coshl(long double x)
 | |
| {
 | |
|   return cosh((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_EXPF
 | |
| float
 | |
| expf(float x)
 | |
| {
 | |
|   return (float) exp(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_EXPL
 | |
| long double
 | |
| expl(long double x)
 | |
| {
 | |
|   return exp((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /* Compute the hypothenuse of a right triangle with side x and y.  */
 | |
| #ifndef HAVE_HYPOTF
 | |
| float
 | |
| hypotf(float x, float y)
 | |
| {
 | |
|   float s = fabsf(x) + fabsf(y);
 | |
|   x /= s; y /= s;
 | |
|   return s * sqrtf(x * x + y * y);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_HYPOT
 | |
| double
 | |
| hypot(double x, double y)
 | |
| {
 | |
|   double s = fabs(x) + fabs(y);
 | |
|   x /= s; y /= s;
 | |
|   return s * sqrt(x * x + y * y);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_HYPOTL
 | |
| long double
 | |
| hypotl(long double x, long double y)
 | |
| {
 | |
|   long double s = fabsl(x) + fabsl(y);
 | |
|   x /= s; y /= s;
 | |
|   return s * sqrtl(x * x + y * y);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_LOGF
 | |
| float
 | |
| logf(float x)
 | |
| {
 | |
|   return (float) log(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_LOGL
 | |
| long double
 | |
| logl(long double x)
 | |
| {
 | |
|   return log((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_LOG10F
 | |
| float
 | |
| log10f(float x)
 | |
| {
 | |
|   return (float) log10(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_LOG10L
 | |
| long double
 | |
| log10l(long double x)
 | |
| {
 | |
|   return log10((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_POWF
 | |
| float
 | |
| powf(float x, float y)
 | |
| {
 | |
|   return (float) pow(x, y);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_POWL
 | |
| long double
 | |
| powl(long double x, long double y)
 | |
| {
 | |
|   return pow((double) x, (double) y);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_SINF
 | |
| float
 | |
| sinf(float x)
 | |
| {
 | |
|   return (float) sin(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_SINL
 | |
| long double
 | |
| sinl(long double x)
 | |
| {
 | |
|   return sin((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_SINHF
 | |
| float
 | |
| sinhf(float x)
 | |
| {
 | |
|   return (float) sinh(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_SINHL
 | |
| long double
 | |
| sinhl(long double x)
 | |
| {
 | |
|   return sinh((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_SQRTF
 | |
| float
 | |
| sqrtf(float x)
 | |
| {
 | |
|   return (float) sqrt(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_SQRTL
 | |
| long double
 | |
| sqrtl(long double x)
 | |
| {
 | |
|   return  sqrt((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_TANF
 | |
| float
 | |
| tanf(float x)
 | |
| {
 | |
|   return (float) tan(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_TANL
 | |
| long double
 | |
| tanl(long double x)
 | |
| {
 | |
|   return tan((double) x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef HAVE_TANHF
 | |
| float
 | |
| tanhf(float x)
 | |
| {
 | |
|   return (float) tanh(x);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef HAVE_TANHL
 | |
| long double
 | |
| tanhl(long double x)
 | |
| {
 | |
|   return tanh((double) x);
 | |
| }
 | |
| #endif
 |