]> git.saurik.com Git - apple/libc.git/blame - ppc/gen/fp.h
Libc-339.tar.gz
[apple/libc.git] / ppc / gen / fp.h
CommitLineData
e9ce8d39
A
1/*
2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
59e0d9fe
A
6 * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
7 *
734aad71
A
8 * This file contains Original Code and/or Modifications of Original Code
9 * as defined in and that are subject to the Apple Public Source License
10 * Version 2.0 (the 'License'). You may not use this file except in
11 * compliance with the License. Please obtain a copy of the License at
12 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * file.
14 *
15 * The Original Code and all software distributed under the License are
16 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
e9ce8d39
A
17 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
18 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
734aad71
A
19 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
20 * Please see the License for the specific language governing rights and
21 * limitations under the License.
e9ce8d39
A
22 *
23 * @APPLE_LICENSE_HEADER_END@
24 */
25/* Copyright (c) 1992, NeXT Computer, Inc. All rights reserved.
26 *
27 * File: libc/m98k/gen/fp.h
28 * Author: Derek B Clegg, NeXT Computer, Inc.
29 *
30 * HISTORY
31 * 11-Nov-92 Derek B Clegg (dclegg@next.com)
32 * Created.
33 *
34 * Common definitions for floating-point numbers.
35 */
36
37/* The following definitions for for double precision IEEE format numbers. */
38
39#define EXPONENT_BIAS 1023
40
41#define SIGN_BITS 1
42#define EXPONENT_BITS 11
43#define FRACTION_BITS 52
44#define HI_FRACTION_BITS 20
45#define LO_FRACTION_BITS 32
46
47struct double_format {
48 unsigned sign: SIGN_BITS;
49 unsigned exponent: EXPONENT_BITS;
50 unsigned hi_fraction: HI_FRACTION_BITS;
51 unsigned lo_fraction: LO_FRACTION_BITS;
52};
53
54union dbl {
55 struct double_format s;
56 unsigned int u[2];
57 double value;
58};
59
60#define PlusInfinity (1.0/0.0)
61#define MinusInfinity (-1.0/0.0)
62
63#define not_a_number(x) ((x) != (x))
64#define positive_infinity(x) ((x) == PlusInfinity)
65#define negative_infinity(x) ((x) == MinusInfinity)