VirtualBox

source: vbox/trunk/src/libs/softfloat-3e/testfloat/source/subjfloat.h@ 105786

最後變更 在這個檔案從105786是 94551,由 vboxsync 提交於 3 年 前

libs/softfloat: Copied TestFloat-3e from vendor branch and to testfloat subdir. bugref:9898

  • 屬性 svn:eol-style 設為 native
檔案大小: 23.1 KB
 
1
2/*============================================================================
3
4This C header file is part of TestFloat, Release 3e, a package of programs for
5testing the correctness of floating-point arithmetic complying with the IEEE
6Standard for Floating-Point, by John R. Hauser.
7
8Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
9University of California. All rights reserved.
10
11Redistribution and use in source and binary forms, with or without
12modification, are permitted provided that the following conditions are met:
13
14 1. Redistributions of source code must retain the above copyright notice,
15 this list of conditions, and the following disclaimer.
16
17 2. Redistributions in binary form must reproduce the above copyright notice,
18 this list of conditions, and the following disclaimer in the documentation
19 and/or other materials provided with the distribution.
20
21 3. Neither the name of the University nor the names of its contributors may
22 be used to endorse or promote products derived from this software without
23 specific prior written permission.
24
25THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
26EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
27WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
28DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
29DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
32ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
36=============================================================================*/
37
38#include <stdbool.h>
39#include <stdint.h>
40#include "softfloat.h"
41
42extern void (*const subjfloat_functions[])();
43
44void subjfloat_setRoundingMode( uint_fast8_t );
45void subjfloat_setExtF80RoundingPrecision( uint_fast8_t );
46uint_fast8_t subjfloat_clearExceptionFlags( void );
47
48/*----------------------------------------------------------------------------
49| Subject function declarations. (Many of these functions may not exist.)
50| WARNING:
51| This file should not normally be modified. Use "subjfloat_config.h" to
52| specify which of these functions actually exist.
53*----------------------------------------------------------------------------*/
54
55/*----------------------------------------------------------------------------
56*----------------------------------------------------------------------------*/
57#ifdef FLOAT16
58float16_t subj_ui32_to_f16( uint32_t );
59#endif
60float32_t subj_ui32_to_f32( uint32_t );
61#ifdef FLOAT64
62float64_t subj_ui32_to_f64( uint32_t );
63#endif
64#ifdef EXTFLOAT80
65void subj_ui32_to_extF80M( uint32_t, extFloat80_t * );
66#endif
67#ifdef FLOAT128
68void subj_ui32_to_f128M( uint32_t, float128_t * );
69#endif
70#ifdef FLOAT16
71float16_t subj_ui64_to_f16( uint64_t );
72#endif
73float32_t subj_ui64_to_f32( uint64_t );
74#ifdef FLOAT64
75float64_t subj_ui64_to_f64( uint64_t );
76#endif
77#ifdef EXTFLOAT80
78void subj_ui64_to_extF80M( uint64_t, extFloat80_t * );
79#endif
80#ifdef FLOAT128
81void subj_ui64_to_f128M( uint64_t, float128_t * );
82#endif
83#ifdef FLOAT16
84float16_t subj_i32_to_f16( int32_t );
85#endif
86float32_t subj_i32_to_f32( int32_t );
87#ifdef FLOAT64
88float64_t subj_i32_to_f64( int32_t );
89#endif
90#ifdef EXTFLOAT80
91void subj_i32_to_extF80M( int32_t, extFloat80_t * );
92#endif
93#ifdef FLOAT128
94void subj_i32_to_f128M( int32_t, float128_t * );
95#endif
96#ifdef FLOAT16
97float16_t subj_i64_to_f16( int64_t );
98#endif
99float32_t subj_i64_to_f32( int64_t );
100#ifdef FLOAT64
101float64_t subj_i64_to_f64( int64_t );
102#endif
103#ifdef EXTFLOAT80
104void subj_i64_to_extF80M( int64_t, extFloat80_t * );
105#endif
106#ifdef FLOAT128
107void subj_i64_to_f128M( int64_t, float128_t * );
108#endif
109
110/*----------------------------------------------------------------------------
111*----------------------------------------------------------------------------*/
112#ifdef FLOAT16
113
114uint_fast32_t subj_f16_to_ui32_r_near_even( float16_t );
115uint_fast32_t subj_f16_to_ui32_r_minMag( float16_t );
116uint_fast32_t subj_f16_to_ui32_r_min( float16_t );
117uint_fast32_t subj_f16_to_ui32_r_max( float16_t );
118uint_fast32_t subj_f16_to_ui32_r_near_maxMag( float16_t );
119uint_fast64_t subj_f16_to_ui64_r_near_even( float16_t );
120uint_fast64_t subj_f16_to_ui64_r_minMag( float16_t );
121uint_fast64_t subj_f16_to_ui64_r_min( float16_t );
122uint_fast64_t subj_f16_to_ui64_r_max( float16_t );
123uint_fast64_t subj_f16_to_ui64_r_near_maxMag( float16_t );
124int_fast32_t subj_f16_to_i32_r_near_even( float16_t );
125int_fast32_t subj_f16_to_i32_r_minMag( float16_t );
126int_fast32_t subj_f16_to_i32_r_min( float16_t );
127int_fast32_t subj_f16_to_i32_r_max( float16_t );
128int_fast32_t subj_f16_to_i32_r_near_maxMag( float16_t );
129int_fast64_t subj_f16_to_i64_r_near_even( float16_t );
130int_fast64_t subj_f16_to_i64_r_minMag( float16_t );
131int_fast64_t subj_f16_to_i64_r_min( float16_t );
132int_fast64_t subj_f16_to_i64_r_max( float16_t );
133int_fast64_t subj_f16_to_i64_r_near_maxMag( float16_t );
134
135uint_fast32_t subj_f16_to_ui32_rx_near_even( float16_t );
136uint_fast32_t subj_f16_to_ui32_rx_minMag( float16_t );
137uint_fast32_t subj_f16_to_ui32_rx_min( float16_t );
138uint_fast32_t subj_f16_to_ui32_rx_max( float16_t );
139uint_fast32_t subj_f16_to_ui32_rx_near_maxMag( float16_t );
140uint_fast64_t subj_f16_to_ui64_rx_near_even( float16_t );
141uint_fast64_t subj_f16_to_ui64_rx_minMag( float16_t );
142uint_fast64_t subj_f16_to_ui64_rx_min( float16_t );
143uint_fast64_t subj_f16_to_ui64_rx_max( float16_t );
144uint_fast64_t subj_f16_to_ui64_rx_near_maxMag( float16_t );
145int_fast32_t subj_f16_to_i32_rx_near_even( float16_t );
146int_fast32_t subj_f16_to_i32_rx_minMag( float16_t );
147int_fast32_t subj_f16_to_i32_rx_min( float16_t );
148int_fast32_t subj_f16_to_i32_rx_max( float16_t );
149int_fast32_t subj_f16_to_i32_rx_near_maxMag( float16_t );
150int_fast64_t subj_f16_to_i64_rx_near_even( float16_t );
151int_fast64_t subj_f16_to_i64_rx_minMag( float16_t );
152int_fast64_t subj_f16_to_i64_rx_min( float16_t );
153int_fast64_t subj_f16_to_i64_rx_max( float16_t );
154int_fast64_t subj_f16_to_i64_rx_near_maxMag( float16_t );
155
156float32_t subj_f16_to_f32( float16_t );
157#ifdef FLOAT64
158float64_t subj_f16_to_f64( float16_t );
159#endif
160#ifdef EXTFLOAT80
161void subj_f16_to_extF80M( float16_t, extFloat80_t * );
162#endif
163#ifdef FLOAT128
164void subj_f16_to_f128M( float16_t, float128_t * );
165#endif
166
167float16_t subj_f16_roundToInt_r_near_even( float16_t );
168float16_t subj_f16_roundToInt_r_minMag( float16_t );
169float16_t subj_f16_roundToInt_r_min( float16_t );
170float16_t subj_f16_roundToInt_r_max( float16_t );
171float16_t subj_f16_roundToInt_r_near_maxMag( float16_t );
172float16_t subj_f16_roundToInt_x( float16_t );
173float16_t subj_f16_add( float16_t, float16_t );
174float16_t subj_f16_sub( float16_t, float16_t );
175float16_t subj_f16_mul( float16_t, float16_t );
176float16_t subj_f16_mulAdd( float16_t, float16_t, float16_t );
177float16_t subj_f16_div( float16_t, float16_t );
178float16_t subj_f16_rem( float16_t, float16_t );
179float16_t subj_f16_sqrt( float16_t );
180bool subj_f16_eq( float16_t, float16_t );
181bool subj_f16_le( float16_t, float16_t );
182bool subj_f16_lt( float16_t, float16_t );
183bool subj_f16_eq_signaling( float16_t, float16_t );
184bool subj_f16_le_quiet( float16_t, float16_t );
185bool subj_f16_lt_quiet( float16_t, float16_t );
186
187#endif
188
189/*----------------------------------------------------------------------------
190*----------------------------------------------------------------------------*/
191uint_fast32_t subj_f32_to_ui32_r_near_even( float32_t );
192uint_fast32_t subj_f32_to_ui32_r_minMag( float32_t );
193uint_fast32_t subj_f32_to_ui32_r_min( float32_t );
194uint_fast32_t subj_f32_to_ui32_r_max( float32_t );
195uint_fast32_t subj_f32_to_ui32_r_near_maxMag( float32_t );
196uint_fast64_t subj_f32_to_ui64_r_near_even( float32_t );
197uint_fast64_t subj_f32_to_ui64_r_minMag( float32_t );
198uint_fast64_t subj_f32_to_ui64_r_min( float32_t );
199uint_fast64_t subj_f32_to_ui64_r_max( float32_t );
200uint_fast64_t subj_f32_to_ui64_r_near_maxMag( float32_t );
201int_fast32_t subj_f32_to_i32_r_near_even( float32_t );
202int_fast32_t subj_f32_to_i32_r_minMag( float32_t );
203int_fast32_t subj_f32_to_i32_r_min( float32_t );
204int_fast32_t subj_f32_to_i32_r_max( float32_t );
205int_fast32_t subj_f32_to_i32_r_near_maxMag( float32_t );
206int_fast64_t subj_f32_to_i64_r_near_even( float32_t );
207int_fast64_t subj_f32_to_i64_r_minMag( float32_t );
208int_fast64_t subj_f32_to_i64_r_min( float32_t );
209int_fast64_t subj_f32_to_i64_r_max( float32_t );
210int_fast64_t subj_f32_to_i64_r_near_maxMag( float32_t );
211
212uint_fast32_t subj_f32_to_ui32_rx_near_even( float32_t );
213uint_fast32_t subj_f32_to_ui32_rx_minMag( float32_t );
214uint_fast32_t subj_f32_to_ui32_rx_min( float32_t );
215uint_fast32_t subj_f32_to_ui32_rx_max( float32_t );
216uint_fast32_t subj_f32_to_ui32_rx_near_maxMag( float32_t );
217uint_fast64_t subj_f32_to_ui64_rx_near_even( float32_t );
218uint_fast64_t subj_f32_to_ui64_rx_minMag( float32_t );
219uint_fast64_t subj_f32_to_ui64_rx_min( float32_t );
220uint_fast64_t subj_f32_to_ui64_rx_max( float32_t );
221uint_fast64_t subj_f32_to_ui64_rx_near_maxMag( float32_t );
222int_fast32_t subj_f32_to_i32_rx_near_even( float32_t );
223int_fast32_t subj_f32_to_i32_rx_minMag( float32_t );
224int_fast32_t subj_f32_to_i32_rx_min( float32_t );
225int_fast32_t subj_f32_to_i32_rx_max( float32_t );
226int_fast32_t subj_f32_to_i32_rx_near_maxMag( float32_t );
227int_fast64_t subj_f32_to_i64_rx_near_even( float32_t );
228int_fast64_t subj_f32_to_i64_rx_minMag( float32_t );
229int_fast64_t subj_f32_to_i64_rx_min( float32_t );
230int_fast64_t subj_f32_to_i64_rx_max( float32_t );
231int_fast64_t subj_f32_to_i64_rx_near_maxMag( float32_t );
232
233#ifdef FLOAT16
234float16_t subj_f32_to_f16( float32_t );
235#endif
236#ifdef FLOAT64
237float64_t subj_f32_to_f64( float32_t );
238#endif
239#ifdef EXTFLOAT80
240void subj_f32_to_extF80M( float32_t, extFloat80_t * );
241#endif
242#ifdef FLOAT128
243void subj_f32_to_f128M( float32_t, float128_t * );
244#endif
245
246float32_t subj_f32_roundToInt_r_near_even( float32_t );
247float32_t subj_f32_roundToInt_r_minMag( float32_t );
248float32_t subj_f32_roundToInt_r_min( float32_t );
249float32_t subj_f32_roundToInt_r_max( float32_t );
250float32_t subj_f32_roundToInt_r_near_maxMag( float32_t );
251float32_t subj_f32_roundToInt_x( float32_t );
252float32_t subj_f32_add( float32_t, float32_t );
253float32_t subj_f32_sub( float32_t, float32_t );
254float32_t subj_f32_mul( float32_t, float32_t );
255float32_t subj_f32_mulAdd( float32_t, float32_t, float32_t );
256float32_t subj_f32_div( float32_t, float32_t );
257float32_t subj_f32_rem( float32_t, float32_t );
258float32_t subj_f32_sqrt( float32_t );
259bool subj_f32_eq( float32_t, float32_t );
260bool subj_f32_le( float32_t, float32_t );
261bool subj_f32_lt( float32_t, float32_t );
262bool subj_f32_eq_signaling( float32_t, float32_t );
263bool subj_f32_le_quiet( float32_t, float32_t );
264bool subj_f32_lt_quiet( float32_t, float32_t );
265
266/*----------------------------------------------------------------------------
267*----------------------------------------------------------------------------*/
268#ifdef FLOAT64
269
270uint_fast32_t subj_f64_to_ui32_r_near_even( float64_t );
271uint_fast32_t subj_f64_to_ui32_r_minMag( float64_t );
272uint_fast32_t subj_f64_to_ui32_r_min( float64_t );
273uint_fast32_t subj_f64_to_ui32_r_max( float64_t );
274uint_fast32_t subj_f64_to_ui32_r_near_maxMag( float64_t );
275uint_fast64_t subj_f64_to_ui64_r_near_even( float64_t );
276uint_fast64_t subj_f64_to_ui64_r_minMag( float64_t );
277uint_fast64_t subj_f64_to_ui64_r_min( float64_t );
278uint_fast64_t subj_f64_to_ui64_r_max( float64_t );
279uint_fast64_t subj_f64_to_ui64_r_near_maxMag( float64_t );
280int_fast32_t subj_f64_to_i32_r_near_even( float64_t );
281int_fast32_t subj_f64_to_i32_r_minMag( float64_t );
282int_fast32_t subj_f64_to_i32_r_min( float64_t );
283int_fast32_t subj_f64_to_i32_r_max( float64_t );
284int_fast32_t subj_f64_to_i32_r_near_maxMag( float64_t );
285int_fast64_t subj_f64_to_i64_r_near_even( float64_t );
286int_fast64_t subj_f64_to_i64_r_minMag( float64_t );
287int_fast64_t subj_f64_to_i64_r_min( float64_t );
288int_fast64_t subj_f64_to_i64_r_max( float64_t );
289int_fast64_t subj_f64_to_i64_r_near_maxMag( float64_t );
290
291uint_fast32_t subj_f64_to_ui32_rx_near_even( float64_t );
292uint_fast32_t subj_f64_to_ui32_rx_minMag( float64_t );
293uint_fast32_t subj_f64_to_ui32_rx_min( float64_t );
294uint_fast32_t subj_f64_to_ui32_rx_max( float64_t );
295uint_fast32_t subj_f64_to_ui32_rx_near_maxMag( float64_t );
296uint_fast64_t subj_f64_to_ui64_rx_near_even( float64_t );
297uint_fast64_t subj_f64_to_ui64_rx_minMag( float64_t );
298uint_fast64_t subj_f64_to_ui64_rx_min( float64_t );
299uint_fast64_t subj_f64_to_ui64_rx_max( float64_t );
300uint_fast64_t subj_f64_to_ui64_rx_near_maxMag( float64_t );
301int_fast32_t subj_f64_to_i32_rx_near_even( float64_t );
302int_fast32_t subj_f64_to_i32_rx_minMag( float64_t );
303int_fast32_t subj_f64_to_i32_rx_min( float64_t );
304int_fast32_t subj_f64_to_i32_rx_max( float64_t );
305int_fast32_t subj_f64_to_i32_rx_near_maxMag( float64_t );
306int_fast64_t subj_f64_to_i64_rx_near_even( float64_t );
307int_fast64_t subj_f64_to_i64_rx_minMag( float64_t );
308int_fast64_t subj_f64_to_i64_rx_min( float64_t );
309int_fast64_t subj_f64_to_i64_rx_max( float64_t );
310int_fast64_t subj_f64_to_i64_rx_near_maxMag( float64_t );
311
312#ifdef FLOAT16
313float16_t subj_f64_to_f16( float64_t );
314#endif
315float32_t subj_f64_to_f32( float64_t );
316#ifdef EXTFLOAT80
317void subj_f64_to_extF80M( float64_t, extFloat80_t * );
318#endif
319#ifdef FLOAT128
320void subj_f64_to_f128M( float64_t, float128_t * );
321#endif
322
323float64_t subj_f64_roundToInt_r_near_even( float64_t );
324float64_t subj_f64_roundToInt_r_minMag( float64_t );
325float64_t subj_f64_roundToInt_r_min( float64_t );
326float64_t subj_f64_roundToInt_r_max( float64_t );
327float64_t subj_f64_roundToInt_r_near_maxMag( float64_t );
328float64_t subj_f64_roundToInt_x( float64_t );
329float64_t subj_f64_add( float64_t, float64_t );
330float64_t subj_f64_sub( float64_t, float64_t );
331float64_t subj_f64_mul( float64_t, float64_t );
332float64_t subj_f64_mulAdd( float64_t, float64_t, float64_t );
333float64_t subj_f64_div( float64_t, float64_t );
334float64_t subj_f64_rem( float64_t, float64_t );
335float64_t subj_f64_sqrt( float64_t );
336bool subj_f64_eq( float64_t, float64_t );
337bool subj_f64_le( float64_t, float64_t );
338bool subj_f64_lt( float64_t, float64_t );
339bool subj_f64_eq_signaling( float64_t, float64_t );
340bool subj_f64_le_quiet( float64_t, float64_t );
341bool subj_f64_lt_quiet( float64_t, float64_t );
342
343#endif
344
345/*----------------------------------------------------------------------------
346*----------------------------------------------------------------------------*/
347#ifdef EXTFLOAT80
348
349uint_fast32_t subj_extF80M_to_ui32_r_near_even( const extFloat80_t * );
350uint_fast32_t subj_extF80M_to_ui32_r_minMag( const extFloat80_t * );
351uint_fast32_t subj_extF80M_to_ui32_r_min( const extFloat80_t * );
352uint_fast32_t subj_extF80M_to_ui32_r_max( const extFloat80_t * );
353uint_fast32_t subj_extF80M_to_ui32_r_near_maxMag( const extFloat80_t * );
354uint_fast64_t subj_extF80M_to_ui64_r_near_even( const extFloat80_t * );
355uint_fast64_t subj_extF80M_to_ui64_r_minMag( const extFloat80_t * );
356uint_fast64_t subj_extF80M_to_ui64_r_min( const extFloat80_t * );
357uint_fast64_t subj_extF80M_to_ui64_r_max( const extFloat80_t * );
358uint_fast64_t subj_extF80M_to_ui64_r_near_maxMag( const extFloat80_t * );
359int_fast32_t subj_extF80M_to_i32_r_near_even( const extFloat80_t * );
360int_fast32_t subj_extF80M_to_i32_r_minMag( const extFloat80_t * );
361int_fast32_t subj_extF80M_to_i32_r_min( const extFloat80_t * );
362int_fast32_t subj_extF80M_to_i32_r_max( const extFloat80_t * );
363int_fast32_t subj_extF80M_to_i32_r_near_maxMag( const extFloat80_t * );
364int_fast64_t subj_extF80M_to_i64_r_near_even( const extFloat80_t * );
365int_fast64_t subj_extF80M_to_i64_r_minMag( const extFloat80_t * );
366int_fast64_t subj_extF80M_to_i64_r_min( const extFloat80_t * );
367int_fast64_t subj_extF80M_to_i64_r_max( const extFloat80_t * );
368int_fast64_t subj_extF80M_to_i64_r_near_maxMag( const extFloat80_t * );
369
370uint_fast32_t subj_extF80M_to_ui32_rx_near_even( const extFloat80_t * );
371uint_fast32_t subj_extF80M_to_ui32_rx_minMag( const extFloat80_t * );
372uint_fast32_t subj_extF80M_to_ui32_rx_min( const extFloat80_t * );
373uint_fast32_t subj_extF80M_to_ui32_rx_max( const extFloat80_t * );
374uint_fast32_t subj_extF80M_to_ui32_rx_near_maxMag( const extFloat80_t * );
375uint_fast64_t subj_extF80M_to_ui64_rx_near_even( const extFloat80_t * );
376uint_fast64_t subj_extF80M_to_ui64_rx_minMag( const extFloat80_t * );
377uint_fast64_t subj_extF80M_to_ui64_rx_min( const extFloat80_t * );
378uint_fast64_t subj_extF80M_to_ui64_rx_max( const extFloat80_t * );
379uint_fast64_t subj_extF80M_to_ui64_rx_near_maxMag( const extFloat80_t * );
380int_fast32_t subj_extF80M_to_i32_rx_near_even( const extFloat80_t * );
381int_fast32_t subj_extF80M_to_i32_rx_minMag( const extFloat80_t * );
382int_fast32_t subj_extF80M_to_i32_rx_min( const extFloat80_t * );
383int_fast32_t subj_extF80M_to_i32_rx_max( const extFloat80_t * );
384int_fast32_t subj_extF80M_to_i32_rx_near_maxMag( const extFloat80_t * );
385int_fast64_t subj_extF80M_to_i64_rx_near_even( const extFloat80_t * );
386int_fast64_t subj_extF80M_to_i64_rx_minMag( const extFloat80_t * );
387int_fast64_t subj_extF80M_to_i64_rx_min( const extFloat80_t * );
388int_fast64_t subj_extF80M_to_i64_rx_max( const extFloat80_t * );
389int_fast64_t subj_extF80M_to_i64_rx_near_maxMag( const extFloat80_t * );
390
391#ifdef FLOAT16
392float16_t subj_extF80M_to_f16( const extFloat80_t * );
393#endif
394float32_t subj_extF80M_to_f32( const extFloat80_t * );
395#ifdef FLOAT64
396float64_t subj_extF80M_to_f64( const extFloat80_t * );
397#endif
398#ifdef EXTFLOAT80
399void subj_extF80M_to_f128M( const extFloat80_t *, float128_t * );
400#endif
401
402void
403 subj_extF80M_roundToInt_r_near_even( const extFloat80_t *, extFloat80_t * );
404void subj_extF80M_roundToInt_r_minMag( const extFloat80_t *, extFloat80_t * );
405void subj_extF80M_roundToInt_r_min( const extFloat80_t *, extFloat80_t * );
406void subj_extF80M_roundToInt_r_max( const extFloat80_t *, extFloat80_t * );
407void
408 subj_extF80M_roundToInt_r_near_maxMag( const extFloat80_t *, extFloat80_t * );
409void subj_extF80M_roundToInt_x( const extFloat80_t *, extFloat80_t * );
410void
411 subj_extF80M_add(
412 const extFloat80_t *, const extFloat80_t *, extFloat80_t * );
413void
414 subj_extF80M_sub(
415 const extFloat80_t *, const extFloat80_t *, extFloat80_t * );
416void
417 subj_extF80M_mul(
418 const extFloat80_t *, const extFloat80_t *, extFloat80_t * );
419void
420 subj_extF80M_div(
421 const extFloat80_t *, const extFloat80_t *, extFloat80_t * );
422void
423 subj_extF80M_rem(
424 const extFloat80_t *, const extFloat80_t *, extFloat80_t * );
425void subj_extF80M_sqrt( const extFloat80_t *, extFloat80_t * );
426bool subj_extF80M_eq( const extFloat80_t *, const extFloat80_t * );
427bool subj_extF80M_le( const extFloat80_t *, const extFloat80_t * );
428bool subj_extF80M_lt( const extFloat80_t *, const extFloat80_t * );
429bool subj_extF80M_eq_signaling( const extFloat80_t *, const extFloat80_t * );
430bool subj_extF80M_le_quiet( const extFloat80_t *, const extFloat80_t * );
431bool subj_extF80M_lt_quiet( const extFloat80_t *, const extFloat80_t * );
432
433#endif
434
435/*----------------------------------------------------------------------------
436*----------------------------------------------------------------------------*/
437#ifdef FLOAT128
438
439uint_fast32_t subj_f128M_to_ui32_r_near_even( const float128_t * );
440uint_fast32_t subj_f128M_to_ui32_r_minMag( const float128_t * );
441uint_fast32_t subj_f128M_to_ui32_r_min( const float128_t * );
442uint_fast32_t subj_f128M_to_ui32_r_max( const float128_t * );
443uint_fast32_t subj_f128M_to_ui32_r_near_maxMag( extFloat80_t * );
444uint_fast64_t subj_f128M_to_ui64_r_near_even( const float128_t * );
445uint_fast64_t subj_f128M_to_ui64_r_minMag( const float128_t * );
446uint_fast64_t subj_f128M_to_ui64_r_min( const float128_t * );
447uint_fast64_t subj_f128M_to_ui64_r_max( const float128_t * );
448uint_fast64_t subj_f128M_to_ui64_r_near_maxMag( extFloat80_t * );
449int_fast32_t subj_f128M_to_i32_r_near_even( const float128_t * );
450int_fast32_t subj_f128M_to_i32_r_minMag( const float128_t * );
451int_fast32_t subj_f128M_to_i32_r_min( const float128_t * );
452int_fast32_t subj_f128M_to_i32_r_max( const float128_t * );
453int_fast32_t subj_f128M_to_i32_r_near_maxMag( extFloat80_t * );
454int_fast64_t subj_f128M_to_i64_r_near_even( const float128_t * );
455int_fast64_t subj_f128M_to_i64_r_minMag( const float128_t * );
456int_fast64_t subj_f128M_to_i64_r_min( const float128_t * );
457int_fast64_t subj_f128M_to_i64_r_max( const float128_t * );
458int_fast64_t subj_f128M_to_i64_r_near_maxMag( extFloat80_t * );
459
460uint_fast32_t subj_f128M_to_ui32_rx_near_even( const float128_t * );
461uint_fast32_t subj_f128M_to_ui32_rx_minMag( const float128_t * );
462uint_fast32_t subj_f128M_to_ui32_rx_min( const float128_t * );
463uint_fast32_t subj_f128M_to_ui32_rx_max( const float128_t * );
464uint_fast32_t subj_f128M_to_ui32_rx_near_maxMag( extFloat80_t * );
465uint_fast64_t subj_f128M_to_ui64_rx_near_even( const float128_t * );
466uint_fast64_t subj_f128M_to_ui64_rx_minMag( const float128_t * );
467uint_fast64_t subj_f128M_to_ui64_rx_min( const float128_t * );
468uint_fast64_t subj_f128M_to_ui64_rx_max( const float128_t * );
469uint_fast64_t subj_f128M_to_ui64_rx_near_maxMag( extFloat80_t * );
470int_fast32_t subj_f128M_to_i32_rx_near_even( const float128_t * );
471int_fast32_t subj_f128M_to_i32_rx_minMag( const float128_t * );
472int_fast32_t subj_f128M_to_i32_rx_min( const float128_t * );
473int_fast32_t subj_f128M_to_i32_rx_max( const float128_t * );
474int_fast32_t subj_f128M_to_i32_rx_near_maxMag( extFloat80_t * );
475int_fast64_t subj_f128M_to_i64_rx_near_even( const float128_t * );
476int_fast64_t subj_f128M_to_i64_rx_minMag( const float128_t * );
477int_fast64_t subj_f128M_to_i64_rx_min( const float128_t * );
478int_fast64_t subj_f128M_to_i64_rx_max( const float128_t * );
479int_fast64_t subj_f128M_to_i64_rx_near_maxMag( extFloat80_t * );
480
481#ifdef FLOAT16
482float16_t subj_f128M_to_f16( const float128_t * );
483#endif
484float32_t subj_f128M_to_f32( const float128_t * );
485#ifdef FLOAT64
486float64_t subj_f128M_to_f64( const float128_t * );
487#endif
488#ifdef FLOAT128
489void subj_f128M_to_extF80M( const float128_t *, extFloat80_t * );
490#endif
491
492void subj_f128M_roundToInt_r_near_even( const float128_t, float128_t * );
493void subj_f128M_roundToInt_r_minMag( const float128_t, float128_t * );
494void subj_f128M_roundToInt_r_min( const float128_t, float128_t * );
495void subj_f128M_roundToInt_r_max( const float128_t, float128_t * );
496void subj_f128M_roundToInt_r_near_maxMag( const float128_t, float128_t * );
497void subj_f128M_roundToInt_x( const float128_t, float128_t * );
498void subj_f128M_add( const float128_t *, const float128_t *, float128_t * );
499void subj_f128M_sub( const float128_t *, const float128_t *, float128_t * );
500void subj_f128M_mul( const float128_t *, const float128_t *, float128_t * );
501void
502 subj_f128M_mulAdd(
503 const float128_t *, const float128_t *, const float128_t *, float128_t *
504 );
505void subj_f128M_div( const float128_t *, const float128_t *, float128_t * );
506void subj_f128M_rem( const float128_t *, const float128_t *, float128_t * );
507void subj_f128M_sqrt( const float128_t *, float128_t * );
508bool subj_f128M_eq( const float128_t *, const float128_t * );
509bool subj_f128M_le( const float128_t *, const float128_t * );
510bool subj_f128M_lt( const float128_t *, const float128_t * );
511bool subj_f128M_eq_signaling( const float128_t *, const float128_t * );
512bool subj_f128M_le_quiet( const float128_t *, const float128_t * );
513bool subj_f128M_lt_quiet( const float128_t *, const float128_t * );
514
515#endif
516
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette