1 /* 2 * scmconst.h - frequently used static constant values 3 * 4 * Copyright (c) 2004-2020 Shiro Kawai <shiro@acm.org> 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * 3. Neither the name of the authors nor the names of its contributors 18 * may be used to endorse or promote products derived from this 19 * software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 27 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 #ifndef GAUCHE_SCMCONST_H 35 #define GAUCHE_SCMCONST_H 36 37 SCM_EXTERN ScmObj Scm__ConstObjs[]; /* initialized in number.c */ 38 39 #define SCM_2_64 (Scm__ConstObjs[0]) /* 2^64 */ 40 #define SCM_2_64_MINUS_1 (Scm__ConstObjs[1]) /* 2^64-1 */ 41 #define SCM_2_63 (Scm__ConstObjs[2]) /* 2^63 */ 42 #define SCM_MINUS_2_63 (Scm__ConstObjs[3]) /* -2^63 */ 43 #define SCM_2_53 (Scm__ConstObjs[4]) /* 2^53 */ 44 #define SCM_2_52 (Scm__ConstObjs[5]) /* 2^52 */ 45 #define SCM_2_32 (Scm__ConstObjs[6]) /* 2^32 */ 46 #define SCM_2_31 (Scm__ConstObjs[7]) /* 2^31 */ 47 #define SCM_MINUS_2_31 (Scm__ConstObjs[8]) /* -2^31 */ 48 #define SCM_POSITIVE_INFINITY (Scm__ConstObjs[9]) /* #i1/0 */ 49 #define SCM_NEGATIVE_INFINITY (Scm__ConstObjs[10]) /* #i-1/0 */ 50 #define SCM_NAN (Scm__ConstObjs[11]) /* #<nan> */ 51 52 /* Minimum positive denormalized double as exact number: 1/2^1075 */ 53 #define SCM_MIN_DENORMALIZED_FLONUM_EXACT (Scm__ConstObjs[12]) 54 55 /* Maximum positive double as exact number: 2^1024 - 2^971 + 2^970 - 1 */ 56 #define SCM_MAX_FINITE_FLONUM_EXACT (Scm__ConstObjs[13]) 57 58 #define SCM_NUM_CONST_OBJS 14 59 60 #endif /*GAUCHE_SCMCONST_H*/ 61 62