Annotation of sys/arch/hppa/spmath/quad_float.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: quad_float.h,v 1.8 2003/04/10 17:27:58 mickey Exp $ */
2: /*
3: (c) Copyright 1986 HEWLETT-PACKARD COMPANY
4: To anyone who acknowledges that this file is provided "AS IS"
5: without any express or implied warranty:
6: permission to use, copy, modify, and distribute this file
7: for any purpose is hereby granted without fee, provided that
8: the above copyright notice and this notice appears in all
9: copies, and that the name of Hewlett-Packard Company not be
10: used in advertising or publicity pertaining to distribution
11: of the software without specific, written prior permission.
12: Hewlett-Packard Company makes no representations about the
13: suitability of this software for any purpose.
14: */
15: /* @(#)quad_float.h: Revision: 1.7.88.1 Date: 93/12/07 15:06:55 */
16:
17: /******************************
18: * Quad precision functions *
19: ******************************/
20:
21: /* 32-bit word grabing functions */
22: #define Quad_firstword(value) Qallp1(value)
23: #define Quad_secondword(value) Qallp2(value)
24: #define Quad_thirdword(value) Qallp3(value)
25: #define Quad_fourthword(value) Qallp4(value)
26:
27:
28: /* This magnitude comparison uses the signless first words and
29: * the regular part2 words. The comparison is graphically:
30: *
31: * 1st greater? ----------->|
32: * |
33: * 1st less?-----------------+------->|
34: * | |
35: * 2nd greater?------------->| |
36: * | |
37: * 2nd less?-----------------+------->|
38: * | |
39: * 3rd greater?------------->| |
40: * | |
41: * 3rd less?-----------------+------->|
42: * | |
43: * 4th greater or equal?---->| |
44: * | |
45: * False True
46: */
47: #define Quad_ismagnitudeless(leftp3,leftp4,rightp1,rightp2,rightp3,rightp4,signlessleft,signlessright) \
48: /* Quad_floating_point left, right; * \
49: * unsigned int signlessleft, signlessright; */ \
50: ( signlessleft<=signlessright && \
51: (signlessleft<signlessright || (Qallp2(leftp2)<=Qallp2(rightp2) && \
52: (Qallp2(leftp2)<Qallp2(rightp2) || (Qallp3(leftp3)<=Qallp3(rightp3) && \
53: (Qallp3(leftp3)<Qallp3(rightp3) || Qallp4(leftp4)<Qallp4(rightp4)))))))
54:
55: #define Quad_xor_to_intp1(leftp1,rightp1,result) \
56: /* quad_floating_point left, right; \
57: * unsigned int result; */ \
58: result = Qallp1(leftp1) XOR Qallp1(rightp1);
59:
60: #define Quad_xor_from_intp1(leftp1,rightp1,result) \
61: /* quad_floating_point right, result; \
62: * unsigned int left; */ \
63: Qallp1(resultp1) = left XOR Qallp1(rightp1)
64:
65: #define Quad_swap_lower(leftp1,leftp2,leftp3,leftp4,rightp1,rightp2,rightp3,rightp4) \
66: /* quad_floating_point left, right; */ \
67: Qallp2(leftp2) = Qallp2(leftp2) XOR Qallp2(rightp2) \
68: Qallp2(rightp2) = Qallp2(leftp2) XOR Qallp2(rightp2) \
69: Qallp2(leftp2) = Qallp2(leftp2) XOR Qallp2(rightp2) \
70: Qallp3(leftp3) = Qallp3(leftp3) XOR Qallp3(rightp3) \
71: Qallp3(rightp3) = Qallp3(leftp3) XOR Qallp3(rightp3) \
72: Qallp3(leftp3) = Qallp3(leftp3) XOR Qallp3(rightp3) \
73: Qallp4(leftp4) = Qallp4(leftp4) XOR Qallp4(rightp4) \
74: Qallp4(rightp4) = Qallp4(leftp4) XOR Qallp4(rightp4) \
75: Qallp4(leftp4) = Qallp4(leftp4) XOR Qallp4(rightp4)
76:
77: int quad_frnd(quad_floating_point *, quad_floating_point *, quad_floating_point *, unsigned int *);
CVSweb