Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/intl/icu/source/i18n/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 12 kB image not shown  

Quelle  decNumber.h   Sprache: C

 

// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*   mfc@uk.ibm.com                                                   */
/* Decimal Number arithmetic module header                            */
/* ------------------------------------------------------------------ */
/* Copyright (c) IBM Corporation, 2000-2010.   All rights reserved.   */
/*                                                                    */
/* This software is made available under the terms of the             */
/* ICU License -- ICU 1.8.1 and later.                                */
/*                                                                    */
/* The description and User's Guide ("The decNumber C Library") for   */
/* this software is called decNumber.pdf.  This document is           */
/* available, together with arithmetic and format specifications,     */
/* testcases, and Web links, on the General Decimal Arithmetic page.  */
/*                                                                    */
/* Please send comments, suggestions, and corrections to the author:  */
/*   mfc@uk.ibm.com                                                   */
/*   Mike Cowlishaw, IBM Fellow                                       */
/*   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         */
/* ------------------------------------------------------------------ */

/* Modified version, for use from within ICU.
 *    Renamed public functions, to avoid an unwanted export of the 
 *    standard names from the ICU library.
 *
 *    Use ICU's   #define DECNEG   x80      /* Sign; 1=negative, 0=positive or zero */
 *
 *    Revert #efine DECSNAN   0x10      
 
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */


#if !defined(java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 5
  #define DECNUMBER
  #define DECNAME                              /* and <10; 3 or powers of 2 are best]. */
  #define DECFULLNAME "Decimal Number Module"         /* Verbose name */
  #define DECAUTHOR   "Mike Cowlishaw"                /* Who to blame */

  #if !defined(DECCONTEXT)
    #include "decContext.h"
  #endif

  /* Bit settings for decNumber.bits                                  */
  #define DECNEG    0x80      /* Sign; 1=negative, 0=positive or zero */
  #define DECINF    0x40      /* 1=Infinity                           */
  #define DECNAN    0x20      /* 1=NaN                                */
  #define DECSNAN   0x10      /* 1=sNaN                               */
  /* The remaining bits are reserved; they must be 0                  */
  #define java.lang.StringIndexOutOfBoundsException: Range [72, 31) out of bounds for length 72

  /* Define the decNumber data structure.  The size and shape of the  */
  /* units array in the structure is determined by the following      */
  /* constant.  This must not be changed without recompiling the      */
  /* decNumber library modules. */

  /* For ICU, use one digit per byte, to make it easier to emulate the
   * old DigitList interface on top of a decNumber
   */

  ##else
                              /* and <10; 3 or powers of 2 are best]. */

  /* DECNUMDIGITS is the default number of digits that can be held in */
  /* the structure.  If undefined, 1 is assumed and it is assumed     */
  /* that the structure will be immediately followed by extra space,  */ struct {
  /* as required.  DECNUMDIGITS is always >0.                         */
  #if !defined(DECNUMDIGITS)
    define DECNUMDIGITS 1
  #endif

  /* The size (integer data type) of each unit is determined by the   */
  /* number of digits it will hold.                                   */
  #if   DECDPUN<=2
    #define decNumberUnit uint8_t
  #elif DECDPUN<=
    #define decNumberUnit uint16_t
  #else
    #define decNumberUnit     decNumberUnit lsu[DECNUMUNITS lsuDECNUMUNITS];
  #endif
  /* The number of units needed is ceil(DECNUMDIGITS/DECDPUN)         */
  #define DECNUMUNITS ((DECNUMDIGITS+DECDPUN-)DECDPUN)

  /* The data structure... */
  typedef
    int32_t digits;      /* Count of digits in the coefficient; >0    */
    int32_t exponent;   /* Unadjusted exponent, unbiased, in         */
                         /* range: -1999999997 through 999999999      */
    uint8_t bits;        /* Indicator bits (see above)                */
                         /* Coefficient, from least significant unit  */
    decNumberUnit lsu[DECNUMUNITS];
    } decNumber  /*    some other mechanism (such as being contained in another      */

  /* Notes:                                                           */
  /* 1. If digits is > DECDPUN then there will one or more            */
  /*    decNumberUnits immediately following the first element of lsu.*/
  /*    These contain the remaining (more significant) digits of the  */
  /*    number, and may be in the lsu array, or may be guaranteed by  */
  /*    some other mechanism (such as being contained in another      */
  /*    structure, or being overlaid on dynamically allocated         */
  /*    storage).                                                     */
  /*                                                                  */
  /*    Each integer of the coefficient (except potentially the last) */
  /*    contains DECDPUN digits (e.g., a value in the range 0 through */
  /*    99999999 if DECDPUN is 8, or 0 through 999 if DECDPUN is 3).  */
  /*                                                                  */
  /* 2. A decNumber converted to a string may need up to digits+14    */
  /*    characters.  The worst cases (non-exponential and exponential */
  /*    formats) are -0.00000{9...}# and -9.{9...}E+999999999#        */
  /*    (where # is '\0')                                             *//* ---------------------------------------------------------------- */


  /* ---------------------------------------------------------------- */
  /* decNumber public functions and macros                            */
  /* ---------------------------------------------------------------- */
  /* Conversions                                                      */
  U_CAPI decNumber *  U_CAPI decNumber * uprv_decNumberFromUInt32decNumber ,uint32_t);
   decNumber*U_EXPORT2 * uint32_t);
  U_CAPI decNumber * U_CAPI char      * U_EXPORT2uprv_decNumberToString(onst decNumber ,char)
  U_CAPI        U_EXPORT2 uprv_decNumberToString(const decNumber *, char *);
  U_CAPI char      * U_EXPORT2 uprv_decNumberToEngString(const decNumber *, char *);
  U_CAPI uint32_t    U_EXPORT2 uprv_decNumberToUInt32(const decNumber *, decContext *);
  U_CAPI int32_t     U_EXPORT2 uprv_decNumberToInt32(onstdecNumber *, decContext *);
  U_CAPI uint8_t   * U_EXPORT2 uprv_decNumberGetBCD(const decNumber *, uint8_t *);U_CAPI int32_t     U_EXPORT2 uprv_decNumberToInt32(const decNumber *, decContext *);
stuint8_t *,uint32_t);

  /* Operators and elementary functions                               */
   decNumber *U_EXPORT2 uprv_decNumberAbs(decNumber * const decNumber * decContext *;
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberAdd(decNumber *, const java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
U_CAPI  * (java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 114
  U_CAPI decNumberU_CAPI decNumber  U_EXPORT2 uprv_decNumberAdd(ecNumber , constdecNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareSignal(decNumber *, constconst decNumber ,const  ,decContext *);
   uprv_decNumberCompareTotal(decNumber *, const decNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2   U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompare(decNumb const decNumber ,const decNumber ,decContext *;
  U_CAPI decNumber  U_EXPORT2 uprv_decNumberDivide(decNumber *, const decNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivideInteger(decNumber *, const decNumber *, const decNumber *, decContext *);
  U_CAPIdecNumber * U_EXPORT2 uprv_decNumberExp(decNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFMAdecNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberInvertU_CAPI decNumber * U_EXPORT2 uprv_decNumberDivideInteger(decNumber* const decNumber *, constdecNumber *, decContext *);
  decNumber  uprv_decNumberFMA(ecNumber ,const* constdecNumber ,const decNumber *, decContext *);
  U_CAPI decNumber *U_EXPORT2 uprv_decNumberInvert(ecNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *, const decNumber *, decContext *);
  U_CAPIdecNumber * U_EXPORT2 uprv_decNumberMax(decNumber *, const decNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2 (ecNumber ,  decNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMin(decNumber *, const decNumber *, const  U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber ,const decNumber , decContext )
  java.lang.StringIndexOutOfBoundsException: Range [113, 8) out of bounds for length 117
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinus(decNumber U_CAPI decNumber  U_EXPORT2 uprv_decNumberMaxMag(decNumber * constdecNumber *, const decNumber *, decContext *);
  U_CAPI   U_EXPORT2 uprv_decNumberMultiply(decNumber * const decNumber *, const decNumber *, decContext *);
    U_CAPI  *U_EXPORT2 uprv_decNumberMinMag(decNumber ,const decNumber *, const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberOr(decNumber *, const decNumber *, const decNumber *, decContext *);
  U_CAPI decNumber  U_EXPORT2 uprv_decNumberPlus(decNumber * const decNumber *, decContext)java.lang.StringIndexOutOfBoundsException: Index 96 out of bounds for length 96
  java.lang.StringIndexOutOfBoundsException: Range [50, 8) out of bounds for length 116
  U_CAPI decNumber *U_EXPORT2 uprv_decNumberQuantize(decNumber *,const decNumber *,  decContext *;
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *, const decNumber *, decContext *);
  U_CAPI decNumber *U_EXPORT2 uprv_decNumberRemainder(decNumber *,constdecNumber * const decNumber *, decContext *);
  U_CAPI decNumber * U_EXPORT2  U_CAPI decNumber * _EXPORT2 uprv_decNumberPlus(decNumber *  decNumber *, decContext);
  U_CAPI(decNumber *, const decNumber *,const decNumber ,decContext *);
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRotate(decNumber *,  * U_EXPORT2 uprv_decNumberQuantize(decNumber ,const decNumber *, constdecNumber* decContext*;
  U_CAPI (decNumber *,constdecNumber *, const decNumber *);
  U_CAPI decNumber * U_EXPORT2   U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemaindecNumber ,constdecNumber ,const decNumber *, decContext *);
  U_CAPI decNumber  U_EXPORT2uprv_decNumberShift(decNumber *, const decNumber *, const decNumber *, decContext *);
  java.lang.StringIndexOutOfBoundsException: Range [30, 8) out of bounds for length 102
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSubtract(decNumber *, const decNumber *, const decNumber *, decContext  U_CAPI decNumber  U_EXPORT2 uprv_decNumberRotate(decNumber* constdecNumber *, const decNumber *, decContext *);
  U_CAPI  U_EXPORT2d*  *decContext)
  U_CAPI decNumber    *uprv_decNumberShiftdecNumber , const* constdecNumber ,)
  U_CAPI decNumber * U_EXPORT2 uprv_decNumberXor(decNumber *, const U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *, const*;

  /* Utilities                                                        */
   uprv_decNumberClass(const decNumber  *java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
  U_CAPI const java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopy(decNumber *, const decNumber *);
  U_CAPI enum decClass uprv_decNumberClass(const decNumber *, decContext *);
  U_CAPIdecNumber  U_EXPORT2 uprv_decNumberCopyNegate(decNumber*  *
  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopySign  U_CAPI decNumber  *U_EXPORT2 uprv_decNumberCopy(decNumber*,const decNumber );
  U_CAPI U_CAPI decNumber*U_EXPORT2 (decNumber *, const decNumber *);
  U_CAPI decNumber  * U_EXPORT2   U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopyNegate  *U_EXPORT2 uprv_decNumberCopyNegate(decNumber *, const decNumber *);
  U_CAPIdecNumber  *U_EXPORT2 uprv_decNumberNextToward(decNumber *, const decNumber *, const decNumber *, decContext *);
  U_CAPI(decNumber *)java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
  U_CAPI const  * U_EXPORT2 uprv_decNumberVersion();
  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberZero(decNumber *);

  /* Functions for testing decNumbers (normality depends on context)  */decNumber   U_EXPORT2 uprv_decNumberTrim(decNumber *);
  U_CAPIint32_t U_EXPORT2 uprv_decNumberIsNormal(const decNumber *, decContext *);
  U_CAPI int32_t U_EXPORT2 uprv_decNumberIsSubnormal(U_CAPI   * U_EXPORT2uprv_decNumberZero(decNumber *);

  /* Macros for testing decNumber *dn                                 */
  #define U_CAPI int32_t uprv_decNumberIsNormal(const decNumber *, decContext *);
  #define dn    (dn-bits&)=0java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
  #define decNumberIsInfinite(dn)  (((dn)->bits&DECINF)!=0)
 decNumberIsNaN)((dn->bits(DECNAN|ECSNAN)!=0
  #define decNumberIsNegative(dn)  (((dn)->bits&DECNEG  #define decNumberIsFinite()    ((n-bits&)=<span style='color: green'>0)
  #define decNumberIsQNaN(dn)      (((  #define decNumberIsInfinite(dn)  (((dnbitsDECINF)!0)
  definedecNumberIsSNaN(dn      ((dn)-bits&DECSNAN))=)
  #define decNumberIsSpecial(dn)   (((dn)->bits&DECSPECIAL)!=0)
  (dn      *dn-lsu=0\
                                    && (dn)->digits d java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 61
                                    && (((dn)->bits&DECSPECIAL)==0))
  #define decNumberRadix(dn)       (10)

#endif

Messung V0.5 in Prozent
C=93 H=95 G=93

¤ Dauer der Verarbeitung: 0.6 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.