232 lines
6.2 KiB
C
232 lines
6.2 KiB
C
/* math.h - math routines */
|
|
|
|
/* Copyright 1989-1995, 2010, 2017 Wind River Systems, Inc. */
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
01q,09nov17,lau added prototype for ldexpf (VXW6-86052)
|
|
01p,29apr10,pad Moved extern C statement after include statements.
|
|
01o,08jul96,ms fixed prototype for fmodf (SPR 6856)
|
|
01n,29mar95,kdl added prototype for __fixunssfsi() (gcc callout routine).
|
|
01m,15oct92,rrr silenced warnings
|
|
01l,22sep92,rrr added support for c++
|
|
01k,19sep92,kdl added prototypes for gccMathInit, gccUssInit, gccUss040Init.
|
|
01j,30jul92,kdl changed to ANSI single precision names (e.g. fsin -> sinf);
|
|
merged various architectures; fixed 01i mod history.
|
|
01i,08jul92,smb merged with ANSI math.h
|
|
01h,04jul92,jcf cleaned up.
|
|
01g,26may92,rrr the tree shuffle
|
|
01f,04oct91,rrr passed through the ansification filter
|
|
-fixed #else and #endif
|
|
-changed copyright notice
|
|
01e,16jul91,ajm added MIPS specific externs, and made MIPS unsupported
|
|
functions 68k dependent
|
|
01d,28jan91,kdl added single-precision, cbrt(), hypot(); changed def's of
|
|
irint() and iround() to int; changed def of sincos() to void.
|
|
01c,19oct90,elr ANSI cleaned up
|
|
01b,05oct90,dnw deleted private routines.
|
|
01a,23aug90,elr written.
|
|
*/
|
|
|
|
#ifndef __INCmathh
|
|
#define __INCmathh
|
|
|
|
#include "types/vxANSI.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* ANSI-compatible definitions */
|
|
|
|
#define HUGE_VAL _ARCH_HUGH_VAL
|
|
|
|
#if defined(__STDC__) || defined(__cplusplus)
|
|
|
|
/* ANSI-compatible functions */
|
|
|
|
extern double acos (double x);
|
|
extern double asin (double x);
|
|
extern double atan (double x);
|
|
extern double atan2 (double y, double x);
|
|
extern double ceil (double x);
|
|
extern double cos (double x);
|
|
extern double cosh (double x);
|
|
extern double exp (double x);
|
|
extern double fabs (double x);
|
|
extern double floor (double x);
|
|
extern double fmod (double x, double y);
|
|
extern double frexp (double x, int *exponent);
|
|
extern double ldexp (double x, int __exp);
|
|
extern double log (double x);
|
|
extern double log10 (double x);
|
|
extern double modf (double x, double *pIntResult);
|
|
extern double pow (double x, double y);
|
|
extern double sin (double x);
|
|
extern double sinh (double x);
|
|
extern double sqrt (double x);
|
|
extern double tan (double x);
|
|
extern double tanh (double x);
|
|
|
|
|
|
/* Single-precision versions of ANSI functions *
|
|
* Not available on all VxWorks architectures. */
|
|
|
|
extern float acosf (float x);
|
|
extern float asinf (float x);
|
|
extern float atanf (float x);
|
|
extern float atan2f (float x, float y);
|
|
extern float ceilf (float x);
|
|
extern float cosf (float x);
|
|
extern float coshf (float x);
|
|
extern float expf (float x);
|
|
extern float fabsf (float x);
|
|
extern float floorf (float x);
|
|
extern float fmodf (float x, float y);
|
|
extern float logf (float x);
|
|
extern float log10f (float x);
|
|
extern float powf (float x, float y);
|
|
extern float sinf (float x);
|
|
extern float sinhf (float x);
|
|
extern float sqrtf (float x);
|
|
extern float tanf (float x);
|
|
extern float tanhf (float x);
|
|
|
|
/* Miscellaneous math functions *
|
|
* Not available on all VxWorks architectures. */
|
|
|
|
extern double cbrt (double x);
|
|
extern double hypot (double x, double y);
|
|
extern double infinity (void);
|
|
extern int irint (double x);
|
|
extern int iround (double x);
|
|
extern double log2 (double x);
|
|
extern double rint (double x);
|
|
extern double round (double x);
|
|
extern void sincos (double x, double *pSinResult, double *pCosResult);
|
|
extern double trunc (double x);
|
|
|
|
extern float cbrtf (float x);
|
|
extern float hypotf (float x, float y);
|
|
extern float infinityf (void);
|
|
extern int irintf (float x);
|
|
extern int iroundf (float x);
|
|
extern float log2f (float x);
|
|
extern float roundf (float x);
|
|
extern void sincosf (float x, float *pSinResult, float *pCosResult);
|
|
extern float truncf (float x);
|
|
|
|
/* VxWorks math library calls */
|
|
|
|
extern void floatInit (void);
|
|
extern void mathHardInit (void);
|
|
extern void mathSoftInit (void);
|
|
extern void gccMathInit (void);
|
|
extern void gccUssInit (void);
|
|
extern void gccUss040Init (void);
|
|
extern unsigned __fixunssfsi (long a);
|
|
|
|
/* C99 additions */
|
|
|
|
extern float ldexpf(float y, int x);
|
|
extern long double ldexpl(long double y, int x);
|
|
|
|
#else /* !__STDC__ */
|
|
|
|
/* ANSI-compatible functions */
|
|
|
|
extern double acos ();
|
|
extern double asin ();
|
|
extern double atan ();
|
|
extern double atan2 ();
|
|
extern double ceil ();
|
|
extern double cos ();
|
|
extern double cosh ();
|
|
extern double exp ();
|
|
extern double fabs ();
|
|
extern double floor ();
|
|
extern double fmod ();
|
|
extern double frexp ();
|
|
extern double ldexp ();
|
|
extern double log ();
|
|
extern double log10 ();
|
|
extern double modf ();
|
|
extern double pow ();
|
|
extern double sin ();
|
|
extern double sinh ();
|
|
extern double sqrt ();
|
|
extern double tan ();
|
|
extern double tanh ();
|
|
|
|
|
|
/* Single-precision versions of ANSI functions *
|
|
* Not available on all VxWorks architectures. */
|
|
|
|
extern float acosf ();
|
|
extern float asinf ();
|
|
extern float atanf ();
|
|
extern float atan2f ();
|
|
extern float ceilf ();
|
|
extern float cosf ();
|
|
extern float coshf ();
|
|
extern float expf ();
|
|
extern float fabsf ();
|
|
extern float floorf ();
|
|
extern float fmodf ();
|
|
extern float logf ();
|
|
extern float log10f ();
|
|
extern float powf ();
|
|
extern float sinf ();
|
|
extern float sinhf ();
|
|
extern float sqrtf ();
|
|
extern float tanf ();
|
|
extern float tanhf ();
|
|
|
|
/* Miscellaneous math functions *
|
|
* Not available on all VxWorks architectures. */
|
|
|
|
extern double cbrt ();
|
|
extern double hypot ();
|
|
extern double infinity ();
|
|
extern int irint ();
|
|
extern int iround ();
|
|
extern double log2 ();
|
|
extern double rint ();
|
|
extern double round ();
|
|
extern void sincos ();
|
|
extern double trunc ();
|
|
|
|
extern float cbrtf ();
|
|
extern float hypotf ();
|
|
extern float infinityf ();
|
|
extern int irintf ();
|
|
extern int iroundf ();
|
|
extern float log2f ();
|
|
extern float roundf ();
|
|
extern void sincosf ();
|
|
extern float truncf ();
|
|
|
|
/* VxWorks math library calls */
|
|
|
|
extern void floatInit ();
|
|
extern void mathHardInit ();
|
|
extern void mathSoftInit ();
|
|
extern void gccMathInit ();
|
|
extern void gccUssInit ();
|
|
extern void gccUss040Init ();
|
|
extern unsigned __fixunssfsi();
|
|
|
|
/* C99 additions */
|
|
|
|
extern float ldexpf();
|
|
extern long double ldexpl();
|
|
|
|
#endif /* __STDC__ */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INCmathh */
|