1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  24  */
  25 
  26 /*
  27  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  28  * Use is subject to license terms.
  29  */
  30 
  31 #ifndef _C_LIBM_PROTOS_H
  32 #define _C_LIBM_PROTOS_H
  33 
  34 /*
  35  * Many symbols used to be namespaced with __libm to prevent collisions.  All
  36  * but these two were otherwise scoped local and directly bound, so that
  37  * collision could not occur.
  38  *
  39  * For reasons unknown, these two are global (but private).
  40  */
  41 #define __rem_pio2              __libm__rem_pio2
  42 #define __rem_pio2m             __libm__rem_pio2m
  43 
  44 #ifndef _ASM
  45 #ifdef __STDC__
  46 #define __P(p)                  p
  47 #else
  48 #define __P(p)                  ()
  49 #endif
  50 
  51 #include <sys/ieeefp.h>
  52 
  53 extern double _SVID_libm_err __P((double, double, int));
  54 extern double __k_cos __P((double, double));
  55 extern double __k_cos_ __P((double *));
  56 extern double __k_lgamma __P((double, int *));
  57 extern double __k_sin __P((double, double));
  58 extern double __k_sin_ __P((double *));
  59 extern double __k_sincos __P((double, double, double *));
  60 extern double __k_sincos_ __P((double *, double *));
  61 extern double __k_tan __P((double, double, int));
  62 extern double __k_cexp __P((double, int *));
  63 extern long double __k_cexpl __P((long double, int *));
  64 extern double __k_clog_r __P((double, double, double *));
  65 extern long double __k_clog_rl __P((long double, long double, long double *));
  66 extern double __k_atan2 __P((double, double, double *));
  67 extern long double __k_atan2l __P((long double, long double, long double *));
  68 extern int __rem_pio2 __P((double, double *));
  69 extern int __rem_pio2m __P((double *, double *, int, int, int, const int *));
  70 
  71 /*
  72  * entry points that are in-lined
  73  */
  74 extern double copysign __P((double, double));
  75 extern int finite __P((double));
  76 extern enum fp_class_type fp_class __P((double));
  77 extern double infinity __P((void));
  78 extern int isinf __P((double));
  79 extern int signbit __P((double));
  80 
  81 /*
  82  * new C99 entry points
  83  */
  84 extern double fdim __P((double, double));
  85 extern double fma __P((double, double, double));
  86 extern double fmax __P((double, double));
  87 extern double fmin __P((double, double));
  88 extern double frexp __P((double, int *));
  89 extern double ldexp __P((double, int));
  90 extern double modf __P((double, double *));
  91 extern double nan __P((const char *));
  92 extern double nearbyint __P((double));
  93 extern double nexttoward __P((double, long double));
  94 extern double remquo __P((double, double, int *));
  95 extern double round __P((double));
  96 extern double scalbln __P((double, long int));
  97 extern double tgamma __P((double));
  98 extern double trunc __P((double));
  99 extern float fdimf __P((float, float));
 100 extern float fmaf __P((float, float, float));
 101 extern float fmaxf __P((float, float));
 102 extern float fminf __P((float, float));
 103 extern float frexpf __P((float, int *));
 104 extern float ldexpf __P((float, int));
 105 extern float modff __P((float, float *));
 106 extern float nanf __P((const char *));
 107 extern float nearbyintf __P((float));
 108 extern float nextafterf __P((float, float));
 109 extern float nexttowardf __P((float, long double));
 110 extern float remquof __P((float, float, int *));
 111 extern float roundf __P((float));
 112 extern float scalblnf __P((float, long int));
 113 extern float tgammaf __P((float));
 114 extern float truncf __P((float));
 115 extern long double frexpl(long double, int *);
 116 extern long double fdiml __P((long double, long double));
 117 extern long double fmal __P((long double, long double, long double));
 118 extern long double fmaxl __P((long double, long double));
 119 extern long double fminl __P((long double, long double));
 120 extern long double ldexpl __P((long double, int));
 121 extern long double modfl __P((long double, long double *));
 122 extern long double nanl __P((const char *));
 123 extern long double nearbyintl __P((long double));
 124 extern long double nextafterl __P((long double, long double));
 125 extern long double nexttowardl __P((long double, long double));
 126 extern long double remquol __P((long double, long double, int *));
 127 extern long double roundl __P((long double));
 128 extern long double scalblnl __P((long double, long int));
 129 extern long double tgammal __P((long double));
 130 extern long double truncl __P((long double));
 131 extern long int lrint __P((double));
 132 extern long int lrintf __P((float));
 133 extern long int lrintl __P((long double));
 134 extern long int lround __P((double));
 135 extern long int lroundf __P((float));
 136 extern long int lroundl __P((long double));
 137 extern long long int llrint __P((double));
 138 extern long long int llrintf __P((float));
 139 extern long long int llrintl __P((long double));
 140 extern long long int llround __P((double));
 141 extern long long int llroundf __P((float));
 142 extern long long int llroundl __P((long double));
 143 #endif /* _ASM */
 144 #endif /* _C_LIBM_PROTOS_H */