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  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
23  */
24 /*
25  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
26  * Use is subject to license terms.
27  */
28 
29 #ifndef _C_LIBM_PROTOS_H
30 #define	_C_LIBM_PROTOS_H
31 
32 #ifdef LIBMOPT_BUILD
33 #define	_TBL_cos	__libmopt_TBL_cos
34 #define	_TBL_exp2_512	__libmopt_TBL_exp2_512
35 #define	_TBL_ipio2_inf	__libmopt_TBL_ipio2_inf
36 #define	_TBL_jlog_n1	__libmopt_TBL_jlog_n1
37 #define	_TBL_jlog_n2	__libmopt_TBL_jlog_n2
38 #define	_TBL_jlog_p1	__libmopt_TBL_jlog_p1
39 #define	_TBL_jlog_p2	__libmopt_TBL_jlog_p2
40 #define	_TBL_log10	__libmopt_TBL_log10
41 #define	_TBL_log2_14	__libmopt_TBL_log2_14
42 #define	_TBL_log2_9	__libmopt_TBL_log2_9
43 #define	_TBL_sin	__libmopt_TBL_sin
44 #define	_TBL_sincosx	__libmopt_TBL_sincosx
45 #define	_TBL_xexp	__libmopt_TBL_xexp
46 #define	_TBL_xlog	__libmopt_TBL_xlog
47 #define	__k_cos_	__libmopt__k_cos_
48 #define	__k_sin_	__libmopt__k_sin_
49 #define	__k_sincos_	__libmopt__k_sincos_
50 #define	__reduction	__libmopt__reduction
51 #define	__rem_pio2	__libmopt__rem_pio2
52 #define	__rem_pio2m	__libmopt__rem_pio2m
53 #else	/* defined(LIBMOPT_BUILD) */
54 #ifdef LIBM_BUILD
55 #define	_SVID_libm_err	__libm_SVID_libm_err	/* not used by -lsunmath */
56 #define	_TBL_atan	__libm_TBL_atan
57 #define	_TBL_atan1	__libm_TBL_atan1
58 #define	_TBL_atan_hi	__libm_TBL_atan_hi	/* not used by -lsunmath */
59 #define	_TBL_atan_lo	__libm_TBL_atan_lo	/* not used by -lsunmath */
60 #define	_TBL_exp2_hi	__libm_TBL_exp2_hi	/* not used by -lsunmath */
61 #define	_TBL_exp2_lo	__libm_TBL_exp2_lo	/* not used by -lsunmath */
62 #define	_TBL_ipio2_inf	__libm_TBL_ipio2_inf
63 #define	_TBL_log	__libm_TBL_log
64 #define	_TBL_log2_hi	__libm_TBL_log2_hi	/* not used by -lsunmath */
65 #define	_TBL_log2_lo	__libm_TBL_log2_lo	/* not used by -lsunmath */
66 #define	_TBL_log_hi	__libm_TBL_log_hi	/* not used by -lsunmath */
67 #define	_TBL_log_lo	__libm_TBL_log_lo	/* not used by -lsunmath */
68 #define	_TBL_sincos	__libm_TBL_sincos
69 #define	_TBL_sincosx	__libm_TBL_sincosx
70 #define	_TBL_tan_hi	__libm_TBL_tan_hi	/* not used by -lsunmath */
71 #define	_TBL_tan_lo	__libm_TBL_tan_lo	/* not used by -lsunmath */
72 #define	__k_cexp	__libm__k_cexp		/* C99 libm */
73 #define	__k_cexpl	__libm__k_cexpl		/* C99 libm */
74 #define	__k_clog_r	__libm__k_clog_r	/* C99 libm */
75 #define	__k_clog_rl	__libm__k_clog_rl	/* C99 libm */
76 #define	__k_atan2	__libm__k_atan2		/* C99 libm */
77 #define	__k_atan2l	__libm__k_atan2l	/* C99 libm */
78 #define	__k_cos		__libm__k_cos
79 #define	__k_lgamma	__libm__k_lgamma
80 #define	__k_sin		__libm__k_sin
81 #define	__k_sincos	__libm__k_sincos
82 #define	__k_tan		__libm__k_tan
83 #define	__reduction	__libm__reduction	/* i386 only */
84 #define	__rem_pio2	__libm__rem_pio2
85 #define	__rem_pio2m	__libm__rem_pio2m
86 #define	__k_cosf	__libm__k_cosf		/* C99 libm */
87 #define	__k_cosl	__libm__k_cosl		/* C99 libm */
88 #define	__k_lgammal	__libm__k_lgammal	/* C99 libm */
89 #define	__k_sincosf	__libm__k_sincosf	/* C99 libm */
90 #define	__k_sincosl	__libm__k_sincosl	/* C99 libm */
91 #define	__k_sinf	__libm__k_sinf		/* C99 libm */
92 #define	__k_sinl	__libm__k_sinl		/* C99 libm */
93 #define	__k_tanf	__libm__k_tanf		/* C99 libm */
94 #define	__k_tanl	__libm__k_tanl		/* C99 libm */
95 #define	__poly_libmq	__libm__poly_libmq	/* C99 libm */
96 #define	__rem_pio2l	__libm__rem_pio2l	/* C99 libm */
97 #define	_TBL_atanl_hi	__libm_TBL_atanl_hi	/* C99 libm */
98 #define	_TBL_atanl_lo	__libm_TBL_atanl_lo	/* C99 libm */
99 #define	_TBL_cosl_hi	__libm_TBL_cosl_hi	/* C99 libm */
100 #define	_TBL_cosl_lo	__libm_TBL_cosl_lo	/* C99 libm */
101 #define	_TBL_expl_hi	__libm_TBL_expl_hi	/* C99 libm */
102 #define	_TBL_expl_lo	__libm_TBL_expl_lo	/* C99 libm */
103 #define	_TBL_expm1l	__libm_TBL_expm1l	/* C99 libm */
104 #define	_TBL_expm1lx	__libm_TBL_expm1lx	/* C99 libm */
105 #define	_TBL_ipio2l_inf	__libm_TBL_ipio2l_inf	/* C99 libm */
106 #define	_TBL_logl_hi	__libm_TBL_logl_hi	/* C99 libm */
107 #define	_TBL_logl_lo	__libm_TBL_logl_lo	/* C99 libm */
108 #define	_TBL_r_atan_hi	__libm_TBL_r_atan_hi	/* C99 libm */
109 #define	_TBL_r_atan_lo	__libm_TBL_r_atan_lo	/* C99 libm */
110 #define	_TBL_sinl_hi	__libm_TBL_sinl_hi	/* C99 libm */
111 #define	_TBL_sinl_lo	__libm_TBL_sinl_lo	/* C99 libm */
112 #define	_TBL_tanl_hi	__libm_TBL_tanl_hi	/* C99 libm */
113 #define	_TBL_tanl_lo	__libm_TBL_tanl_lo	/* C99 libm */
114 #endif	/* defined(LIBM_BUILD) */
115 #endif	/* defined(LIBMOPT_BUILD) */
116 
117 #ifndef _ASM
118 #ifdef __STDC__
119 #define	__P(p)	p
120 #else
121 #define	__P(p)	()
122 #endif
123 
124 #include <sys/ieeefp.h>
125 
126 extern double _SVID_libm_err __P((double, double, int));
127 extern double __k_cos __P((double, double));
128 extern double __k_cos_ __P((double *));
129 extern double __k_lgamma __P((double, int *));
130 extern double __k_sin __P((double, double));
131 extern double __k_sin_ __P((double *));
132 extern double __k_sincos __P((double, double, double *));
133 extern double __k_sincos_ __P((double *, double *));
134 extern double __k_tan __P((double, double, int));
135 extern double __k_cexp __P((double, int *));
136 extern long double __k_cexpl __P((long double, int *));
137 extern double __k_clog_r __P((double, double, double *));
138 extern long double __k_clog_rl __P((long double, long double, long double *));
139 extern double __k_atan2 __P((double, double, double *));
140 extern long double __k_atan2l __P((long double, long double, long double *));
141 extern int __rem_pio2 __P((double, double *));
142 extern int __rem_pio2m __P((double *, double *, int, int, int, const int *));
143 
144 /*
145  * entry points that are in-lined
146  */
147 extern double copysign __P((double, double));
148 extern int finite __P((double));
149 extern enum fp_class_type fp_class __P((double));
150 extern double infinity __P((void));
151 extern int isinf __P((double));
152 extern int signbit __P((double));
153 
154 /*
155  * new C99 entry points
156  */
157 extern double fdim __P((double, double));
158 extern double fma __P((double, double, double));
159 extern double fmax __P((double, double));
160 extern double fmin __P((double, double));
161 extern double frexp __P((double, int *));
162 extern double ldexp __P((double, int));
163 extern double modf __P((double, double *));
164 extern double nan __P((const char *));
165 extern double nearbyint __P((double));
166 extern double nexttoward __P((double, long double));
167 extern double remquo __P((double, double, int *));
168 extern double round __P((double));
169 extern double scalbln __P((double, long int));
170 extern double tgamma __P((double));
171 extern double trunc __P((double));
172 extern float fdimf __P((float, float));
173 extern float fmaf __P((float, float, float));
174 extern float fmaxf __P((float, float));
175 extern float fminf __P((float, float));
176 extern float frexpf __P((float, int *));
177 extern float ldexpf __P((float, int));
178 extern float modff __P((float, float *));
179 extern float nanf __P((const char *));
180 extern float nearbyintf __P((float));
181 extern float nextafterf __P((float, float));
182 extern float nexttowardf __P((float, long double));
183 extern float remquof __P((float, float, int *));
184 extern float roundf __P((float));
185 extern float scalblnf __P((float, long int));
186 extern float tgammaf __P((float));
187 extern float truncf __P((float));
188 extern long double frexpl(long double, int *);
189 extern long double fdiml __P((long double, long double));
190 extern long double fmal __P((long double, long double, long double));
191 extern long double fmaxl __P((long double, long double));
192 extern long double fminl __P((long double, long double));
193 extern long double ldexpl __P((long double, int));
194 extern long double modfl __P((long double, long double *));
195 extern long double nanl __P((const char *));
196 extern long double nearbyintl __P((long double));
197 extern long double nextafterl __P((long double, long double));
198 extern long double nexttowardl __P((long double, long double));
199 extern long double remquol __P((long double, long double, int *));
200 extern long double roundl __P((long double));
201 extern long double scalblnl __P((long double, long int));
202 extern long double tgammal __P((long double));
203 extern long double truncl __P((long double));
204 extern long int lrint __P((double));
205 extern long int lrintf __P((float));
206 extern long int lrintl __P((long double));
207 extern long int lround __P((double));
208 extern long int lroundf __P((float));
209 extern long int lroundl __P((long double));
210 extern long long int llrint __P((double));
211 extern long long int llrintf __P((float));
212 extern long long int llrintl __P((long double));
213 extern long long int llround __P((double));
214 extern long long int llroundf __P((float));
215 extern long long int llroundl __P((long double));
216 #endif	/* _ASM */
217 
218 #endif	/* _C_LIBM_PROTOS_H */
219