Blame libdecnumber/decSingle.h

Packit 7cb7d8
/* decSingle module header for the decNumber C Library.
Packit 7cb7d8
   Copyright (C) 2005-2018 Free Software Foundation, Inc.
Packit 7cb7d8
   Contributed by IBM Corporation.  Author Mike Cowlishaw.
Packit 7cb7d8
Packit 7cb7d8
   This file is part of GCC.
Packit 7cb7d8
Packit 7cb7d8
   GCC is free software; you can redistribute it and/or modify it under
Packit 7cb7d8
   the terms of the GNU General Public License as published by the Free
Packit 7cb7d8
   Software Foundation; either version 3, or (at your option) any later
Packit 7cb7d8
   version.
Packit 7cb7d8
Packit 7cb7d8
   GCC is distributed in the hope that it will be useful, but WITHOUT ANY
Packit 7cb7d8
   WARRANTY; without even the implied warranty of MERCHANTABILITY or
Packit 7cb7d8
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
Packit 7cb7d8
   for more details.
Packit 7cb7d8
Packit 7cb7d8
Under Section 7 of GPL version 3, you are granted additional
Packit 7cb7d8
permissions described in the GCC Runtime Library Exception, version
Packit 7cb7d8
3.1, as published by the Free Software Foundation.
Packit 7cb7d8
Packit 7cb7d8
You should have received a copy of the GNU General Public License and
Packit 7cb7d8
a copy of the GCC Runtime Library Exception along with this program;
Packit 7cb7d8
see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
Packit 7cb7d8
<http://www.gnu.org/licenses/>.  */
Packit 7cb7d8
Packit 7cb7d8
/* ------------------------------------------------------------------ */
Packit 7cb7d8
/* decSingle.h -- Decimal 32-bit format module header		      */
Packit 7cb7d8
/* ------------------------------------------------------------------ */
Packit 7cb7d8
Packit 7cb7d8
#if !defined(DECSINGLE)
Packit 7cb7d8
  #define DECSINGLE
Packit 7cb7d8
Packit 7cb7d8
  #define DECSINGLENAME       "decSingle"	      /* Short name   */
Packit 7cb7d8
  #define DECSINGLETITLE      "Decimal 32-bit datum"  /* Verbose name */
Packit 7cb7d8
  #define DECSINGLEAUTHOR     "Mike Cowlishaw"	      /* Who to blame */
Packit 7cb7d8
Packit 7cb7d8
  /* parameters for decSingles */
Packit 7cb7d8
  #define DECSINGLE_Bytes    4	   /* length			      */
Packit 7cb7d8
  #define DECSINGLE_Pmax     7	   /* maximum precision (digits)      */
Packit 7cb7d8
  #define DECSINGLE_Emin   -95	   /* minimum adjusted exponent       */
Packit 7cb7d8
  #define DECSINGLE_Emax    96	   /* maximum adjusted exponent       */
Packit 7cb7d8
  #define DECSINGLE_EmaxD    3	   /* maximum exponent digits	      */
Packit 7cb7d8
  #define DECSINGLE_Bias   101	   /* bias for the exponent	      */
Packit 7cb7d8
  #define DECSINGLE_String  16	   /* maximum string length, +1       */
Packit 7cb7d8
  #define DECSINGLE_EconL    6	   /* exponent continuation length    */
Packit 7cb7d8
  #define DECSINGLE_Declets  2	   /* count of declets		      */
Packit 7cb7d8
  /* highest biased exponent (Elimit-1) */
Packit 7cb7d8
  #define DECSINGLE_Ehigh (DECSINGLE_Emax + DECSINGLE_Bias - (DECSINGLE_Pmax-1))
Packit 7cb7d8
Packit 7cb7d8
  /* Required includes						      */
Packit 7cb7d8
  #include "decContext.h"
Packit 7cb7d8
  #include "decQuad.h"
Packit 7cb7d8
  #include "decDouble.h"
Packit 7cb7d8
Packit 7cb7d8
  /* The decSingle decimal 32-bit type, accessible by all sizes */
Packit 7cb7d8
  typedef union {
Packit 7cb7d8
    uint8_t   bytes[DECSINGLE_Bytes];	/* fields: 1, 5, 6, 20 bits */
Packit 7cb7d8
    uint16_t shorts[DECSINGLE_Bytes/2];
Packit 7cb7d8
    uint32_t  words[DECSINGLE_Bytes/4];
Packit 7cb7d8
    } decSingle;
Packit 7cb7d8
Packit 7cb7d8
  /* ---------------------------------------------------------------- */
Packit 7cb7d8
  /* Routines -- implemented as decFloat routines in common files     */
Packit 7cb7d8
  /* ---------------------------------------------------------------- */
Packit 7cb7d8
Packit 7cb7d8
  #include "decSingleSymbols.h"
Packit 7cb7d8
Packit 7cb7d8
  /* Utilities (binary argument(s) or result, extractors, etc.) */
Packit 7cb7d8
  extern decSingle * decSingleFromBCD(decSingle *, int32_t, const uint8_t *, int32_t);
Packit 7cb7d8
  extern decSingle * decSingleFromPacked(decSingle *, int32_t, const uint8_t *);
Packit 7cb7d8
  extern decSingle * decSingleFromPackedChecked(decSingle *, int32_t, const uint8_t *);
Packit 7cb7d8
  extern decSingle * decSingleFromString(decSingle *, const char *, decContext *);
Packit 7cb7d8
  extern decSingle * decSingleFromWider(decSingle *, const decDouble *, decContext *);
Packit 7cb7d8
  extern int32_t     decSingleGetCoefficient(const decSingle *, uint8_t *);
Packit 7cb7d8
  extern int32_t     decSingleGetExponent(const decSingle *);
Packit 7cb7d8
  extern decSingle * decSingleSetCoefficient(decSingle *, const uint8_t *, int32_t);
Packit 7cb7d8
  extern decSingle * decSingleSetExponent(decSingle *, decContext *, int32_t);
Packit 7cb7d8
  extern void	     decSingleShow(const decSingle *, const char *);
Packit 7cb7d8
  extern int32_t     decSingleToBCD(const decSingle *, int32_t *, uint8_t *);
Packit 7cb7d8
  extern char	   * decSingleToEngString(const decSingle *, char *);
Packit 7cb7d8
  extern int32_t     decSingleToPacked(const decSingle *, int32_t *, uint8_t *);
Packit 7cb7d8
  extern char	   * decSingleToString(const decSingle *, char *);
Packit 7cb7d8
  extern decDouble * decSingleToWider(const decSingle *, decDouble *);
Packit 7cb7d8
  extern decSingle * decSingleZero(decSingle *);
Packit 7cb7d8
Packit 7cb7d8
  /* (No Arithmetic routines for decSingle) */
Packit 7cb7d8
Packit 7cb7d8
  /* Non-computational */
Packit 7cb7d8
  extern uint32_t     decSingleRadix(const decSingle *);
Packit 7cb7d8
  extern const char * decSingleVersion(void);
Packit 7cb7d8
Packit 7cb7d8
  /* decNumber conversions; these are implemented as macros so as not  */
Packit 7cb7d8
  /* to force a dependency on decimal32 and decNumber in decSingle.    */
Packit 7cb7d8
  /* decSingleFromNumber returns a decimal32 * to avoid warnings.      */
Packit 7cb7d8
  #define decSingleToNumber(dq, dn) decimal32ToNumber((decimal32 *)(dq), dn)
Packit 7cb7d8
  #define decSingleFromNumber(dq, dn, set) decimal32FromNumber((decimal32 *)(dq), dn, set)
Packit 7cb7d8
Packit 7cb7d8
#endif