os/ossrv/genericopenlibs/openenvcore/include/math.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
sl@0
     2
/*
sl@0
     3
 * ====================================================
sl@0
     4
 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
sl@0
     5
 *
sl@0
     6
 * Developed at SunPro, a Sun Microsystems, Inc. business.
sl@0
     7
 * Permission to use, copy, modify, and distribute this
sl@0
     8
 * software is freely granted, provided that this notice
sl@0
     9
 * is preserved.
sl@0
    10
 * ====================================================
sl@0
    11
 *  Portions Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
sl@0
    12
 */
sl@0
    13
sl@0
    14
/*
sl@0
    15
 * from: @(#)fdlibm.h 5.1 93/09/24
sl@0
    16
 * $FreeBSD: src/lib/msun/src/math.h,v 1.61 2005/04/16 21:12:47 das Exp $
sl@0
    17
 */
sl@0
    18
sl@0
    19
#ifndef _MATH_H_
sl@0
    20
#define _MATH_H_
sl@0
    21
sl@0
    22
sl@0
    23
#ifdef __SYMBIAN32__
sl@0
    24
#ifdef __VC32__
sl@0
    25
/* warning C4056: overflow in floating-point constant arithmetic 
sl@0
    26
 * Caused by negative floating point constants, it seems!
sl@0
    27
 * For example, static double foo = -1.0;
sl@0
    28
 */
sl@0
    29
#pragma warning( disable: 4056 )
sl@0
    30
#endif
sl@0
    31
#ifdef __ARMCC__
sl@0
    32
/* Warning:  #222-D: floating-point operation result is out of range
sl@0
    33
 * The compiler detects constant math that overflows, we want overflow though!
sl@0
    34
 * Warning:  #39-D: division by zero
sl@0
    35
*/
sl@0
    36
#pragma diag_suppress 222
sl@0
    37
#pragma diag_suppress 39
sl@0
    38
#pragma diag_suppress 2874
sl@0
    39
#endif
sl@0
    40
#endif //__SYMBIAN32__
sl@0
    41
sl@0
    42
#ifdef __SYMBIAN32__
sl@0
    43
#include <_ansi.h>
sl@0
    44
#ifdef __WINSCW__
sl@0
    45
#ifndef __SOFTFP
sl@0
    46
#define __SOFTFP
sl@0
    47
#endif /* __SOFTFP */
sl@0
    48
#endif//__WINSCW__
sl@0
    49
#endif //__SYMBIAN32__
sl@0
    50
sl@0
    51
#include <sys/cdefs.h>
sl@0
    52
#include <sys/_types.h>
sl@0
    53
#include <stdapis/machine/_limits.h>
sl@0
    54
sl@0
    55
#ifdef  __SYMBIAN32__
sl@0
    56
#include <libm_aliases.h>
sl@0
    57
#endif  //__SYMBIAN32__
sl@0
    58
#ifdef __SYMBIAN32__
sl@0
    59
#include "signgam.h"
sl@0
    60
sl@0
    61
// IEC 559 math functionality
sl@0
    62
#define __STDC_IEC_559__        1
sl@0
    63
#endif //__SYMBIAN32__
sl@0
    64
sl@0
    65
/*
sl@0
    66
 * ANSI/POSIX
sl@0
    67
 */
sl@0
    68
#ifndef __SYMBIAN32__
sl@0
    69
extern const union __infinity_un {
sl@0
    70
    unsigned char   __uc[8];
sl@0
    71
    double      __ud;
sl@0
    72
} __infinity;
sl@0
    73
sl@0
    74
extern const union __nan_un {
sl@0
    75
    unsigned char   __uc[sizeof(float)];
sl@0
    76
    float       __uf;
sl@0
    77
} __nan;
sl@0
    78
#endif //__SYMBIAN32__
sl@0
    79
sl@0
    80
#if __GNUC_PREREQ__(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
sl@0
    81
#define __MATH_BUILTIN_CONSTANTS
sl@0
    82
#endif
sl@0
    83
sl@0
    84
#if __GNUC_PREREQ__(3, 0) && !defined(__INTEL_COMPILER)
sl@0
    85
#define __MATH_BUILTIN_RELOPS
sl@0
    86
#endif
sl@0
    87
sl@0
    88
#ifdef __SYMBIAN32__
sl@0
    89
#define HUGE_VAL    __infinite(1.0)
sl@0
    90
#else
sl@0
    91
#ifdef __MATH_BUILTIN_CONSTANTS
sl@0
    92
#define HUGE_VAL    __builtin_huge_val()
sl@0
    93
#else
sl@0
    94
#define HUGE_VAL    (__infinity.__ud)
sl@0
    95
#endif
sl@0
    96
#endif //__SYMBIAN32__
sl@0
    97
sl@0
    98
#if __ISO_C_VISIBLE >= 1999
sl@0
    99
#define FP_ILOGB0   (-__INT_MAX)
sl@0
   100
#define FP_ILOGBNAN __INT_MAX
sl@0
   101
sl@0
   102
#ifdef __MATH_BUILTIN_CONSTANTS
sl@0
   103
#define HUGE_VALF   __builtin_huge_valf()
sl@0
   104
#define HUGE_VALL   __builtin_huge_vall()
sl@0
   105
#define INFINITY    __builtin_inf()
sl@0
   106
#define NAN     __builtin_nan("")
sl@0
   107
#else
sl@0
   108
#define HUGE_VALF   (float)HUGE_VAL
sl@0
   109
#define HUGE_VALL   (long double)HUGE_VAL
sl@0
   110
#define INFINITY    HUGE_VALF
sl@0
   111
#ifdef __SYMBIAN32__
sl@0
   112
#define NAN     nanvalf()
sl@0
   113
#else
sl@0
   114
#define NAN     (__nan.__uf)
sl@0
   115
#endif //__SYMBIAN32__
sl@0
   116
#endif /* __MATH_BUILTIN_CONSTANTS */
sl@0
   117
sl@0
   118
#define MATH_ERRNO  1
sl@0
   119
#define MATH_ERREXCEPT  2
sl@0
   120
#define math_errhandling    MATH_ERREXCEPT
sl@0
   121
sl@0
   122
/* XXX We need a <machine/math.h>. */
sl@0
   123
#if defined(__ia64__) || defined(__sparc64__)
sl@0
   124
#define FP_FAST_FMA
sl@0
   125
#endif
sl@0
   126
#ifdef __ia64__
sl@0
   127
#define FP_FAST_FMAL
sl@0
   128
#endif
sl@0
   129
#define FP_FAST_FMAF
sl@0
   130
sl@0
   131
/* Symbolic constants to classify floating point numbers. */
sl@0
   132
#define FP_INFINITE 0x01
sl@0
   133
#define FP_NAN      0x02
sl@0
   134
#define FP_NORMAL   0x04
sl@0
   135
#define FP_SUBNORMAL    0x08
sl@0
   136
#define FP_ZERO     0x10
sl@0
   137
sl@0
   138
#define fpclassify(x) \
sl@0
   139
    ((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) \
sl@0
   140
    : (sizeof (x) == sizeof (double)) ? __fpclassifyd(x) \
sl@0
   141
    : __fpclassifyl(x))
sl@0
   142
sl@0
   143
#define isfinite(x)                 \
sl@0
   144
    ((sizeof (x) == sizeof (float)) ? __isfinitef(x)    \
sl@0
   145
    : (sizeof (x) == sizeof (double)) ? __isfinite(x)   \
sl@0
   146
    : __isfinitel(x))
sl@0
   147
#define isinf(x)                    \
sl@0
   148
    ((sizeof (x) == sizeof (float)) ? __isinff(x)   \
sl@0
   149
    : (sizeof (x) == sizeof (double)) ? __isinf(x)  \
sl@0
   150
    : __isinfl(x))
sl@0
   151
#define isnan(x)                    \
sl@0
   152
    ((sizeof (x) == sizeof (float)) ? __isnanf(x)       \
sl@0
   153
    : (sizeof (x) == sizeof (double)) ? __isnan(x)  \
sl@0
   154
    : __isnanl(x))
sl@0
   155
#define isnormal(x)                 \
sl@0
   156
    ((sizeof (x) == sizeof (float)) ? __isnormalf(x)    \
sl@0
   157
    : (sizeof (x) == sizeof (double)) ? __isnormal(x)   \
sl@0
   158
    : __isnormall(x))
sl@0
   159
sl@0
   160
sl@0
   161
#ifdef __MATH_BUILTIN_RELOPS
sl@0
   162
#define isgreater(x, y)     __builtin_isgreater((x), (y))
sl@0
   163
#define isgreaterequal(x, y)    __builtin_isgreaterequal((x), (y))
sl@0
   164
#define isless(x, y)        __builtin_isless((x), (y))
sl@0
   165
#define islessequal(x, y)   __builtin_islessequal((x), (y))
sl@0
   166
#define islessgreater(x, y) __builtin_islessgreater((x), (y))
sl@0
   167
#define isunordered(x, y)   __builtin_isunordered((x), (y))
sl@0
   168
#else
sl@0
   169
#define isgreater(x, y)     (!isunordered((x), (y)) && (x) > (y))
sl@0
   170
#define isgreaterequal(x, y)    (!isunordered((x), (y)) && (x) >= (y))
sl@0
   171
#define isless(x, y)        (!isunordered((x), (y)) && (x) < (y))
sl@0
   172
#define islessequal(x, y)   (!isunordered((x), (y)) && (x) <= (y))
sl@0
   173
#define islessgreater(x, y) (!isunordered((x), (y)) && \
sl@0
   174
                    ((x) > (y) || (y) > (x)))
sl@0
   175
#define isunordered(x, y)   (isnan(x) || isnan(y))
sl@0
   176
#endif /* __MATH_BUILTIN_RELOPS */
sl@0
   177
sl@0
   178
#define signbit(x)                  \
sl@0
   179
    ((sizeof (x) == sizeof (float)) ? __signbitf(x) \
sl@0
   180
    : (sizeof (x) == sizeof (double)) ? __signbit(x)    \
sl@0
   181
    : __signbitl(x))
sl@0
   182
sl@0
   183
typedef __double_t  double_t;
sl@0
   184
typedef __float_t   float_t;
sl@0
   185
#endif /* __ISO_C_VISIBLE >= 1999 */
sl@0
   186
sl@0
   187
/*
sl@0
   188
 * XOPEN/SVID
sl@0
   189
 */
sl@0
   190
#if __BSD_VISIBLE || __XSI_VISIBLE
sl@0
   191
#define M_E     2.7182818284590452354   /* e */
sl@0
   192
#define M_LOG2E     1.4426950408889634074   /* log 2e */
sl@0
   193
#define M_LOG10E    0.43429448190325182765  /* log 10e */
sl@0
   194
#define M_LN2       0.69314718055994530942  /* log e2 */
sl@0
   195
#define M_LN10      2.30258509299404568402  /* log e10 */
sl@0
   196
#define M_PI        3.14159265358979323846  /* pi */
sl@0
   197
#define M_PI_2      1.57079632679489661923  /* pi/2 */
sl@0
   198
#define M_PI_4      0.78539816339744830962  /* pi/4 */
sl@0
   199
#define M_1_PI      0.31830988618379067154  /* 1/pi */
sl@0
   200
#define M_2_PI      0.63661977236758134308  /* 2/pi */
sl@0
   201
#define M_2_SQRTPI  1.12837916709551257390  /* 2/sqrt(pi) */
sl@0
   202
#define M_SQRT2     1.41421356237309504880  /* sqrt(2) */
sl@0
   203
#define M_SQRT1_2   0.70710678118654752440  /* 1/sqrt(2) */
sl@0
   204
sl@0
   205
#define MAXFLOAT    ((float)3.40282346638528860e+38)
sl@0
   206
#ifdef __SYMBIAN32__
sl@0
   207
#ifndef __WINSCW__
sl@0
   208
extern int _signgam;
sl@0
   209
#endif //__WINSCW__
sl@0
   210
#else
sl@0
   211
extern int signgam;
sl@0
   212
#endif //__SYMBIAN32__
sl@0
   213
#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
sl@0
   214
sl@0
   215
#if __BSD_VISIBLE
sl@0
   216
#if 0
sl@0
   217
/* Old value from 4.4BSD-Lite math.h; this is probably better. */
sl@0
   218
#define HUGE        HUGE_VAL
sl@0
   219
#else
sl@0
   220
#define HUGE        MAXFLOAT
sl@0
   221
#endif
sl@0
   222
#endif /* __BSD_VISIBLE */
sl@0
   223
sl@0
   224
/*
sl@0
   225
 * Most of these functions depend on the rounding mode and have the side
sl@0
   226
 * effect of raising floating-point exceptions, so they are not declared
sl@0
   227
 * as __pure2.  In C99, FENV_ACCESS affects the purity of these functions.
sl@0
   228
 */
sl@0
   229
__BEGIN_DECLS
sl@0
   230
/*
sl@0
   231
 * ANSI/POSIX
sl@0
   232
 */
sl@0
   233
#ifdef __SYMBIAN32__
sl@0
   234
IMPORT_C double __infinite(double x) __SOFTFP;
sl@0
   235
IMPORT_C float  __infinitef(float x) __SOFTFP;
sl@0
   236
sl@0
   237
IMPORT_C double nanval(void )__SOFTFP;
sl@0
   238
IMPORT_C float  nanvalf(void ) __SOFTFP;
sl@0
   239
#endif //__SYMBIAN32__
sl@0
   240
sl@0
   241
sl@0
   242
IMPORT_C int    __fpclassifyd(double) __SOFTFP __pure2;
sl@0
   243
IMPORT_C int    __fpclassifyf(float) __SOFTFP __pure2;
sl@0
   244
IMPORT_C int    __fpclassifyl(long double) __SOFTFP __pure2;
sl@0
   245
IMPORT_C int    __isfinitef(float) __SOFTFP __pure2;
sl@0
   246
IMPORT_C int    __isfinite(double) __SOFTFP __pure2;
sl@0
   247
IMPORT_C int    __isfinitel(long double) __SOFTFP __pure2;
sl@0
   248
IMPORT_C int    __isinf(double) __SOFTFP __pure2;
sl@0
   249
IMPORT_C int    __isinff(float) __SOFTFP __pure2;
sl@0
   250
IMPORT_C int    __isinfl(long double) __SOFTFP __pure2;
sl@0
   251
#ifdef __SYMBIAN32__
sl@0
   252
IMPORT_C int    __isnan(double) __SOFTFP __pure2;
sl@0
   253
IMPORT_C int    __isnanf(float) __SOFTFP __pure2;
sl@0
   254
#endif //__SYMBIAN32__
sl@0
   255
IMPORT_C int    __isnanl(long double) __SOFTFP __pure2;
sl@0
   256
IMPORT_C int    __isnormalf(float) __SOFTFP __pure2;
sl@0
   257
IMPORT_C int    __isnormal(double) __SOFTFP __pure2;
sl@0
   258
IMPORT_C int    __isnormall(long double) __SOFTFP __pure2;
sl@0
   259
IMPORT_C int    __signbit(double) __SOFTFP __pure2;
sl@0
   260
IMPORT_C int    __signbitf(float) __SOFTFP __pure2;
sl@0
   261
IMPORT_C int    __signbitl(long double) __SOFTFP __pure2;
sl@0
   262
sl@0
   263
IMPORT_C double acos(double) __SOFTFP;
sl@0
   264
IMPORT_C double asin(double) __SOFTFP;
sl@0
   265
IMPORT_C double atan(double) __SOFTFP;
sl@0
   266
IMPORT_C double atan2(double, double) __SOFTFP;
sl@0
   267
IMPORT_C double cos(double) __SOFTFP;
sl@0
   268
IMPORT_C double sin(double) __SOFTFP;
sl@0
   269
IMPORT_C double tan(double) __SOFTFP;
sl@0
   270
sl@0
   271
IMPORT_C double cosh(double) __SOFTFP;
sl@0
   272
IMPORT_C double sinh(double) __SOFTFP;
sl@0
   273
IMPORT_C double tanh(double) __SOFTFP;
sl@0
   274
sl@0
   275
IMPORT_C double exp(double) __SOFTFP;
sl@0
   276
IMPORT_C double frexp(double, int *) __SOFTFP;  /* fundamentally !__pure2 */
sl@0
   277
IMPORT_C double ldexp(double, int) __SOFTFP;
sl@0
   278
IMPORT_C double log(double) __SOFTFP;
sl@0
   279
IMPORT_C double log10(double) __SOFTFP;
sl@0
   280
IMPORT_C double modf(double, double *) __SOFTFP;    /* fundamentally !__pure2 */
sl@0
   281
sl@0
   282
IMPORT_C double pow(double, double) __SOFTFP;
sl@0
   283
IMPORT_C double sqrt(double) __SOFTFP;
sl@0
   284
sl@0
   285
IMPORT_C double ceil(double) __SOFTFP;
sl@0
   286
IMPORT_C double fabs(double) __SOFTFP __pure2;
sl@0
   287
IMPORT_C double floor(double) __SOFTFP;
sl@0
   288
IMPORT_C double fmod(double, double) __SOFTFP;
sl@0
   289
sl@0
   290
/*
sl@0
   291
 * These functions are not in C90.
sl@0
   292
 */
sl@0
   293
#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE
sl@0
   294
IMPORT_C double acosh(double) __SOFTFP;
sl@0
   295
IMPORT_C double asinh(double) __SOFTFP;
sl@0
   296
IMPORT_C double atanh(double) __SOFTFP;
sl@0
   297
IMPORT_C double cbrt(double) __SOFTFP;
sl@0
   298
IMPORT_C double erf(double) __SOFTFP;
sl@0
   299
IMPORT_C double erfc(double) __SOFTFP;
sl@0
   300
IMPORT_C double exp2(double) __SOFTFP;
sl@0
   301
IMPORT_C double expm1(double) __SOFTFP;
sl@0
   302
IMPORT_C double fma(double, double, double) __SOFTFP;
sl@0
   303
IMPORT_C double hypot(double, double) __SOFTFP;
sl@0
   304
sl@0
   305
sl@0
   306
IMPORT_C int    ilogb(double) __SOFTFP __pure2;
sl@0
   307
/*
sl@0
   308
int (isinf)(double) __pure2;
sl@0
   309
int (isnan)(double) __pure2;
sl@0
   310
*/
sl@0
   311
IMPORT_C double lgamma(double) __SOFTFP;
sl@0
   312
IMPORT_C long long llrint(double) __SOFTFP;
sl@0
   313
IMPORT_C long long llround(double) __SOFTFP;
sl@0
   314
IMPORT_C double log1p(double) __SOFTFP;
sl@0
   315
IMPORT_C double logb(double) __SOFTFP;
sl@0
   316
IMPORT_C long   lrint(double) __SOFTFP;
sl@0
   317
IMPORT_C long   lround(double) __SOFTFP;
sl@0
   318
IMPORT_C double nextafter(double, double) __SOFTFP;
sl@0
   319
IMPORT_C double remainder(double, double) __SOFTFP;
sl@0
   320
IMPORT_C double remquo(double, double, int *) __SOFTFP;
sl@0
   321
IMPORT_C double rint(double) __SOFTFP;
sl@0
   322
#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
sl@0
   323
sl@0
   324
#if __BSD_VISIBLE || __XSI_VISIBLE
sl@0
   325
IMPORT_C double j0(double) __SOFTFP;
sl@0
   326
IMPORT_C double j1(double) __SOFTFP;
sl@0
   327
IMPORT_C double jn(int, double) __SOFTFP;
sl@0
   328
IMPORT_C double scalb(double, double) __SOFTFP;
sl@0
   329
IMPORT_C double y0(double) __SOFTFP;
sl@0
   330
IMPORT_C double y1(double) __SOFTFP;
sl@0
   331
IMPORT_C double yn(int, double) __SOFTFP;
sl@0
   332
sl@0
   333
#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
sl@0
   334
IMPORT_C double gamma(double) __SOFTFP;
sl@0
   335
#endif
sl@0
   336
#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
sl@0
   337
sl@0
   338
#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999
sl@0
   339
IMPORT_C double copysign(double, double) __SOFTFP __pure2;
sl@0
   340
IMPORT_C double fdim(double, double) __SOFTFP;
sl@0
   341
IMPORT_C double fmax(double, double) __SOFTFP __pure2;
sl@0
   342
IMPORT_C double fmin(double, double) __SOFTFP __pure2;
sl@0
   343
IMPORT_C double nearbyint(double) __SOFTFP;
sl@0
   344
IMPORT_C double round(double) __SOFTFP;
sl@0
   345
IMPORT_C double scalbln(double, long) __SOFTFP;
sl@0
   346
IMPORT_C double scalbn(double, int) __SOFTFP;
sl@0
   347
IMPORT_C double trunc(double) __SOFTFP;
sl@0
   348
#endif
sl@0
   349
sl@0
   350
/*
sl@0
   351
 * BSD math library entry points
sl@0
   352
 */
sl@0
   353
#if __BSD_VISIBLE
sl@0
   354
IMPORT_C double drem(double, double) __SOFTFP;
sl@0
   355
IMPORT_C int    finite(double) __SOFTFP __pure2;
sl@0
   356
IMPORT_C int    isnanf(float) __SOFTFP __pure2;
sl@0
   357
sl@0
   358
/*
sl@0
   359
 * Reentrant version of gamma & lgamma; passes signgam back by reference
sl@0
   360
 * as the second argument; user must allocate space for signgam.
sl@0
   361
 */
sl@0
   362
IMPORT_C double lgamma_r(double, int *) __SOFTFP;
sl@0
   363
sl@0
   364
/*
sl@0
   365
 * IEEE Test Vector
sl@0
   366
 */
sl@0
   367
IMPORT_C double significand(double) __SOFTFP;
sl@0
   368
#endif /* __BSD_VISIBLE */
sl@0
   369
sl@0
   370
/* float versions of ANSI/POSIX functions */
sl@0
   371
#if __ISO_C_VISIBLE >= 1999
sl@0
   372
IMPORT_C float  acosf(float) __SOFTFP;
sl@0
   373
sl@0
   374
IMPORT_C float  acosf(float) __SOFTFP;
sl@0
   375
IMPORT_C float  asinf(float) __SOFTFP;
sl@0
   376
IMPORT_C float  atanf(float) __SOFTFP;
sl@0
   377
IMPORT_C float  atan2f(float, float) __SOFTFP;
sl@0
   378
IMPORT_C float  cosf(float) __SOFTFP;
sl@0
   379
IMPORT_C float  sinf(float) __SOFTFP;
sl@0
   380
IMPORT_C float  tanf(float) __SOFTFP;
sl@0
   381
sl@0
   382
IMPORT_C float  coshf(float) __SOFTFP;
sl@0
   383
IMPORT_C float  sinhf(float) __SOFTFP;
sl@0
   384
IMPORT_C float  tanhf(float) __SOFTFP;
sl@0
   385
IMPORT_C float  exp2f(float) __SOFTFP;
sl@0
   386
IMPORT_C float  expf(float) __SOFTFP;
sl@0
   387
IMPORT_C float  expm1f(float) __SOFTFP;
sl@0
   388
IMPORT_C float  frexpf(float, int *) __SOFTFP;  /* fundamentally !__pure2 */
sl@0
   389
IMPORT_C int    ilogbf(float) __SOFTFP __pure2;
sl@0
   390
#ifndef __SYMBIAN32__
sl@0
   391
float   ldexpf(float, int);
sl@0
   392
#endif //__SYMBIAN32__
sl@0
   393
IMPORT_C float  log10f(float) __SOFTFP;
sl@0
   394
IMPORT_C float  log1pf(float) __SOFTFP;
sl@0
   395
IMPORT_C float  logf(float) __SOFTFP;
sl@0
   396
IMPORT_C float  modff(float, float *) __SOFTFP; /* fundamentally !__pure2 */
sl@0
   397
sl@0
   398
IMPORT_C float  powf(float, float) __SOFTFP;
sl@0
   399
IMPORT_C float  sqrtf(float) __SOFTFP;
sl@0
   400
sl@0
   401
IMPORT_C float  ceilf(float) __SOFTFP;
sl@0
   402
IMPORT_C float  fabsf(float) __SOFTFP __pure2;
sl@0
   403
IMPORT_C float  floorf(float) __SOFTFP;
sl@0
   404
IMPORT_C float  fmodf(float, float) __SOFTFP;
sl@0
   405
IMPORT_C float  roundf(float) __SOFTFP;
sl@0
   406
sl@0
   407
IMPORT_C float  erff(float) __SOFTFP;
sl@0
   408
IMPORT_C float  erfcf(float) __SOFTFP;
sl@0
   409
IMPORT_C float  hypotf(float, float) __SOFTFP;
sl@0
   410
IMPORT_C float  lgammaf(float) __SOFTFP;
sl@0
   411
sl@0
   412
IMPORT_C float  acoshf(float) __SOFTFP;
sl@0
   413
IMPORT_C float  asinhf(float) __SOFTFP;
sl@0
   414
IMPORT_C float  atanhf(float) __SOFTFP;
sl@0
   415
IMPORT_C float  cbrtf(float) __SOFTFP;
sl@0
   416
IMPORT_C float  logbf(float) __SOFTFP;
sl@0
   417
IMPORT_C float  copysignf(float, float) __SOFTFP __pure2;
sl@0
   418
IMPORT_C long long llrintf(float) __SOFTFP;
sl@0
   419
IMPORT_C long long llroundf(float) __SOFTFP;
sl@0
   420
IMPORT_C long   lrintf(float) __SOFTFP;
sl@0
   421
IMPORT_C long   lroundf(float) __SOFTFP;
sl@0
   422
IMPORT_C float  nearbyintf(float) __SOFTFP;
sl@0
   423
IMPORT_C float  nextafterf(float, float) __SOFTFP;
sl@0
   424
IMPORT_C float  remainderf(float, float) __SOFTFP;
sl@0
   425
IMPORT_C float  remquof(float, float, int *) __SOFTFP;
sl@0
   426
IMPORT_C float  rintf(float) __SOFTFP;
sl@0
   427
IMPORT_C float  scalblnf(float, long) __SOFTFP;
sl@0
   428
IMPORT_C float  scalbnf(float, int) __SOFTFP;
sl@0
   429
IMPORT_C float  truncf(float) __SOFTFP;
sl@0
   430
sl@0
   431
IMPORT_C float  fdimf(float, float) __SOFTFP;
sl@0
   432
IMPORT_C float  fmaf(float, float, float) __SOFTFP;
sl@0
   433
IMPORT_C float  fmaxf(float, float) __SOFTFP __pure2;
sl@0
   434
IMPORT_C float  fminf(float, float) __SOFTFP __pure2;
sl@0
   435
#endif
sl@0
   436
sl@0
   437
/*
sl@0
   438
 * float versions of BSD math library entry points
sl@0
   439
 */
sl@0
   440
#if __BSD_VISIBLE
sl@0
   441
sl@0
   442
#ifdef __SYMBIAN_COMPILE_UNUSED__
sl@0
   443
float   dremf(float, float);
sl@0
   444
#endif
sl@0
   445
sl@0
   446
IMPORT_C int    finitef(float) __SOFTFP __pure2;
sl@0
   447
IMPORT_C float  gammaf(float) __SOFTFP;
sl@0
   448
IMPORT_C float  j0f(float) __SOFTFP;
sl@0
   449
IMPORT_C float  j1f(float) __SOFTFP;
sl@0
   450
IMPORT_C float  jnf(int, float) __SOFTFP;
sl@0
   451
IMPORT_C float  scalbf(float, float) __SOFTFP;
sl@0
   452
IMPORT_C float  y0f(float) __SOFTFP;
sl@0
   453
IMPORT_C float  y1f(float) __SOFTFP;
sl@0
   454
IMPORT_C float  ynf(int, float) __SOFTFP;
sl@0
   455
sl@0
   456
/*
sl@0
   457
 * Float versions of reentrant version of gamma & lgamma; passes
sl@0
   458
 * signgam back by reference as the second argument; user must
sl@0
   459
 * allocate space for signgam.
sl@0
   460
 */
sl@0
   461
IMPORT_C float  lgammaf_r(float, int *) __SOFTFP;
sl@0
   462
sl@0
   463
/*
sl@0
   464
 * float version of IEEE Test Vector
sl@0
   465
 */
sl@0
   466
IMPORT_C float  significandf(float) __SOFTFP;
sl@0
   467
#endif  /* __BSD_VISIBLE */
sl@0
   468
sl@0
   469
/*
sl@0
   470
 * long double versions of ISO/POSIX math functions
sl@0
   471
 */
sl@0
   472
#if __ISO_C_VISIBLE >= 1999
sl@0
   473
#if 0
sl@0
   474
long double acoshl(long double);
sl@0
   475
long double acosl(long double);
sl@0
   476
long double asinhl(long double);
sl@0
   477
long double asinl(long double);
sl@0
   478
long double atan2l(long double, long double);
sl@0
   479
long double atanhl(long double);
sl@0
   480
long double atanl(long double);
sl@0
   481
long double cbrtl(long double);
sl@0
   482
#endif
sl@0
   483
#ifndef __SYMBIAN32__
sl@0
   484
long double ceill(long double);
sl@0
   485
#endif //__SYMBIAN32__
sl@0
   486
IMPORT_C long double    copysignl(long double, long double) __SOFTFP __pure2;
sl@0
   487
#if 0
sl@0
   488
long double coshl(long double);
sl@0
   489
long double cosl(long double);
sl@0
   490
long double erfcl(long double);
sl@0
   491
long double erfl(long double);
sl@0
   492
long double exp2l(long double);
sl@0
   493
long double expl(long double);
sl@0
   494
long double expm1l(long double);
sl@0
   495
#endif
sl@0
   496
IMPORT_C long double    fabsl(long double) __SOFTFP __pure2;
sl@0
   497
IMPORT_C long double    fdiml(long double, long double) __SOFTFP;
sl@0
   498
#ifndef __SYMBIAN32__
sl@0
   499
long double floorl(long double);
sl@0
   500
long double fmal(long double, long double, long double);
sl@0
   501
#endif //__SYMBIAN32__
sl@0
   502
IMPORT_C long double    fmaxl(long double, long double) __SOFTFP __pure2;
sl@0
   503
#ifndef __SYMBIAN32__
sl@0
   504
long double fminl(long double, long double) __pure2;
sl@0
   505
#endif //__SYMBIAN32__
sl@0
   506
#if 0
sl@0
   507
long double fmodl(long double, long double);
sl@0
   508
#endif
sl@0
   509
#ifndef __SYMBIAN32__
sl@0
   510
long double frexpl(long double value, int *); /* fundamentally !__pure2 */
sl@0
   511
#endif //__SYMBIAN32__
sl@0
   512
#if 0
sl@0
   513
long double hypotl(long double, long double);
sl@0
   514
#endif
sl@0
   515
IMPORT_C int        ilogbl(long double) __SOFTFP __pure2;
sl@0
   516
#ifndef __SYMBIAN32__
sl@0
   517
long double ldexpl(long double, int);
sl@0
   518
#endif //__SYMBIAN32__
sl@0
   519
#if 0
sl@0
   520
long double lgammal(long double);
sl@0
   521
long long   llrintl(long double);
sl@0
   522
#endif
sl@0
   523
#ifndef __SYMBIAN32__
sl@0
   524
long long   llroundl(long double);
sl@0
   525
#endif //__SYMBIAN32__
sl@0
   526
#if 0
sl@0
   527
long double log10l(long double);
sl@0
   528
long double log1pl(long double);
sl@0
   529
long double log2l(long double);
sl@0
   530
long double logbl(long double);
sl@0
   531
long double logl(long double);
sl@0
   532
long        lrintl(long double);
sl@0
   533
#endif
sl@0
   534
#ifndef __SYMBIAN32__
sl@0
   535
long        lroundl(long double);
sl@0
   536
#endif //__SYMBIAN32__
sl@0
   537
#if 0
sl@0
   538
long double modfl(long double, long double *); /* fundamentally !__pure2 */
sl@0
   539
long double nanl(const char *) __pure2;
sl@0
   540
long double nearbyintl(long double);
sl@0
   541
#endif
sl@0
   542
#ifndef __SYMBIAN32__
sl@0
   543
long double nextafterl(long double, long double);
sl@0
   544
double      nexttoward(double, long double);
sl@0
   545
#endif //__SYMBIAN32__
sl@0
   546
IMPORT_C float      nexttowardf(float, long double) __SOFTFP;
sl@0
   547
#ifndef __SYMBIAN32__
sl@0
   548
long double nexttowardl(long double, long double);
sl@0
   549
#endif //__SYMBIAN32__
sl@0
   550
#if 0
sl@0
   551
long double powl(long double, long double);
sl@0
   552
long double remainderl(long double, long double);
sl@0
   553
long double remquol(long double, long double, int *);
sl@0
   554
long double rintl(long double);
sl@0
   555
#endif
sl@0
   556
#ifndef __SYMBIAN32__
sl@0
   557
long double roundl(long double);
sl@0
   558
#endif //__SYMBIAN32__
sl@0
   559
IMPORT_C long double    scalblnl(long double, long) __SOFTFP;
sl@0
   560
#ifndef __SYMBIAN32__
sl@0
   561
long double scalbnl(long double, int);
sl@0
   562
#endif //__SYMBIAN32__
sl@0
   563
#if 0
sl@0
   564
long double sinhl(long double);
sl@0
   565
long double sinl(long double);
sl@0
   566
long double sqrtl(long double);
sl@0
   567
long double tanhl(long double);
sl@0
   568
long double tanl(long double);
sl@0
   569
#endif
sl@0
   570
IMPORT_C long double    truncl(long double) __SOFTFP;
sl@0
   571
sl@0
   572
#endif /* __ISO_C_VISIBLE >= 1999 */
sl@0
   573
__END_DECLS
sl@0
   574
sl@0
   575
#endif /* !_MATH_H_ */