ext_comp.c File Reference

#include "ext_fmt.h"
#include <float.h>
#include <errno.h>
#include <ctype.h>
#include <math.h>

Include dependency graph for ext_comp.c:

Go to the source code of this file.

Defines

#define TP   (int)(sizeof(ten_powers)/sizeof(ten_powers[0]))
#define BTP   (int)(sizeof(big_ten_powers)/sizeof(big_ten_powers[0]))
#define MAX_EXP   (TP * BTP - 1)
#define NDIGITS   128
#define NSIGNIFICANT   19

Functions

static int b64_add (struct mantissa *e1, struct mantissa *e2)
static b64_sft (struct mantissa *e1, int n)
static mul_ext (struct EXTEND *e1, struct EXTEND *e2, struct EXTEND *e3)
static add_ext (struct EXTEND *e1, struct EXTEND *e2, struct EXTEND *e3)
static int cmp_ext (struct EXTEND *e1, struct EXTEND *e2)
static add_exponent (struct EXTEND *e, int exp)
 _str_ext_cvt (const char *s, char **ss, struct EXTEND *e)
static ten_mult (struct EXTEND *e)
char * _ext_str_cvt (struct EXTEND *e, int ndigit, int *decpt, int *sign, int ecvtflag)
 _dbl_ext_cvt (double value, struct EXTEND *e)
double _ext_dbl_cvt (struct EXTEND *e)

Variables

static struct EXTEND ten_powers []
static struct EXTEND big_ten_powers []
static struct EXTEND r_ten_powers []
static struct EXTEND r_big_ten_powers []
static struct EXTEND max_d


Define Documentation

#define BTP   (int)(sizeof(big_ten_powers)/sizeof(big_ten_powers[0]))
 

Definition at line 435 of file ext_comp.c.

Referenced by _ext_str_cvt().

#define MAX_EXP   (TP * BTP - 1)
 

Definition at line 436 of file ext_comp.c.

#define NDIGITS   128
 

Definition at line 551 of file ext_comp.c.

#define NSIGNIFICANT   19
 

Definition at line 552 of file ext_comp.c.

Referenced by _ext_str_cvt().

#define TP   (int)(sizeof(ten_powers)/sizeof(ten_powers[0]))
 

Definition at line 434 of file ext_comp.c.

Referenced by _ext_str_cvt(), and add_exponent().


Function Documentation

_dbl_ext_cvt double  value,
struct EXTEND e
 

Definition at line 699 of file ext_comp.c.

References e, and frexp().

Referenced by _ext_dbl_cvt(), and cvt().

double _ext_dbl_cvt struct EXTEND e  ) 
 

Definition at line 719 of file ext_comp.c.

References _dbl_ext_cvt(), cmp_ext(), DBL_MAX, e, ERANGE, errno, EXTEND::exp, HUGE_VAL, ldexp(), max_d, and sign.

char* _ext_str_cvt struct EXTEND e,
int  ndigit,
int *  decpt,
int *  sign,
int  ecvtflag
 

Definition at line 555 of file ext_comp.c.

References add_ext(), big_ten_powers, BTP, cmp_ext(), count, e, EXTEND::exp, m, mul_ext(), NDIGITS, NSIGNIFICANT, p, r_big_ten_powers, r_ten_powers, EXTEND::sign, tc, ten_mult(), ten_powers, TP, and x.

Referenced by cvt().

_str_ext_cvt const char *  s,
char **  ss,
struct EXTEND e
 

Definition at line 458 of file ext_comp.c.

References add_exponent(), b64_add(), b64_sft(), c, e, ERANGE, errno, exp, isdigit, isspace, MAX_EXP, sign, and tmp.

static add_exponent struct EXTEND e,
int  exp
[static]
 

Definition at line 439 of file ext_comp.c.

References big_ten_powers, e, mul_ext(), r_big_ten_powers, r_ten_powers, ten_powers, TP, and x.

Referenced by _str_ext_cvt().

static add_ext struct EXTEND e1,
struct EXTEND e2,
struct EXTEND e3
[static]
 

Definition at line 97 of file ext_comp.c.

References b64_add(), b64_sft(), cnt, diff(), e1, e2, e3, and L.

Referenced by _ext_str_cvt(), adf4(), adf8(), cmp_ext(), and ten_mult().

static int b64_add struct mantissa e1,
struct mantissa e2
[static]
 

Definition at line 231 of file ext_comp.c.

References carry(), e1, e2, and long().

Referenced by _str_ext_cvt(), add_ext(), and sub_ext().

static b64_sft struct mantissa e1,
int  n
[static]
 

Definition at line 186 of file ext_comp.c.

References e1.

Referenced by _str_ext_cvt(), add_ext(), compact(), fif4(), fif8(), nrm_ext(), and sft_ext().

static int cmp_ext struct EXTEND e1,
struct EXTEND e2
[static]
 

Definition at line 173 of file ext_comp.c.

References add_ext(), e1, e2, and tmp.

Referenced by _ext_dbl_cvt(), and _ext_str_cvt().

static mul_ext struct EXTEND e1,
struct EXTEND e2,
struct EXTEND e3
[static]
 

Definition at line 23 of file ext_comp.c.

References e1, e2, e3, i, j, mp, and result.

Referenced by _ext_str_cvt(), add_exponent(), fif4(), fif8(), mlf4(), and mlf8().

static ten_mult struct EXTEND e  )  [static]
 

Definition at line 542 of file ext_comp.c.

References add_ext(), e, and e1.

Referenced by _ext_str_cvt().


Variable Documentation

struct EXTEND big_ten_powers[] [static]
 

Initial value:

 {  
        { 0,    0,      0x80000000,     0 },
        { 0,    93,     0x813F3978,     0xF8940984 },
        { 0,    186,    0x82818F12,     0x81ED44A0 },
        { 0,    279,    0x83C7088E,     0x1AAB65DB },
        { 0,    372,    0x850FADC0,     0x9923329E },
        { 0,    465,    0x865B8692,     0x5B9BC5C2 },
        { 0,    558,    0x87AA9AFF,     0x79042287 },
        { 0,    651,    0x88FCF317,     0xF22241E2 },
        { 0,    744,    0x8A5296FF,     0xE33CC930 },
        { 0,    837,    0x8BAB8EEF,     0xB6409C1A },
        { 0,    930,    0x8D07E334,     0x55637EB3 },
        { 0,    1023,   0x8E679C2F,     0x5E44FF8F },
        { 0,    1116,   0x8FCAC257,     0x558EE4E6 },
        { 0,    1209,   0x91315E37,     0xDB165AA9 },
        { 0,    1302,   0x929B7871,     0xDE7F22B9 },
        { 0,    1395,   0x940919BB,     0xD4620B6D },
        { 0,    1488,   0x957A4AE1,     0xEBF7F3D4 },
        { 0,    1581,   0x96EF14C6,     0x454AA840 },
        { 0,    1674,   0x98678061,     0x27ECE4F5 },
        { 0,    1767,   0x99E396C1,     0x3A3ACFF2 }
}

Definition at line 357 of file ext_comp.c.

Referenced by _ext_str_cvt(), and add_exponent().

struct EXTEND max_d [static]
 

Definition at line 716 of file ext_comp.c.

Referenced by _ext_dbl_cvt().

struct EXTEND r_big_ten_powers[] [static]
 

Initial value:

 { 
        { 0,    0,      0x80000000,     0 },
        { 0,    -94,    0xFD87B5F2,     0x8300CA0E },
        { 0,    -187,   0xFB158592,     0xBE068D2F },
        { 0,    -280,   0xF8A95FCF,     0x88747D94 },
        { 0,    -373,   0xF64335BC,     0xF065D37D },
        { 0,    -466,   0xF3E2F893,     0xDEC3F126 },
        { 0,    -559,   0xF18899B1,     0xBC3F8CA2 },
        { 0,    -652,   0xEF340A98,     0x172AACE5 },
        { 0,    -745,   0xECE53CEC,     0x4A314EBE },
        { 0,    -838,   0xEA9C2277,     0x23EE8BCB },
        { 0,    -931,   0xE858AD24,     0x8F5C22CA },
        { 0,    -1024,  0xE61ACF03,     0x3D1A45DF },
        { 0,    -1117,  0xE3E27A44,     0x4D8D98B8 },
        { 0,    -1210,  0xE1AFA13A,     0xFBD14D6E },
        { 0,    -1303,  0xDF82365C,     0x497B5454 },
        { 0,    -1396,  0xDD5A2C3E,     0xAB3097CC },
        { 0,    -1489,  0xDB377599,     0xB6074245 },
        { 0,    -1582,  0xD91A0545,     0xCDB51186 },
        { 0,    -1675,  0xD701CE3B,     0xD387BF48 },
        { 0,    -1768,  0xD4EEC394,     0xD6258BF8 }
}

Definition at line 411 of file ext_comp.c.

Referenced by _ext_str_cvt(), and add_exponent().

struct EXTEND r_ten_powers[] [static]
 

Initial value:

 { 
        { 0,    0,      0x80000000,     0 },
        { 0,    -4,     0xCCCCCCCC,     0xCCCCCCCD },
        { 0,    -7,     0xA3D70A3D,     0x70A3D70A },
        { 0,    -10,    0x83126E97,     0x8D4FDF3B },
        { 0,    -14,    0xD1B71758,     0xE219652C },
        { 0,    -17,    0xA7C5AC47,     0x1B478423 },
        { 0,    -20,    0x8637BD05,     0xAF6C69B6 },
        { 0,    -24,    0xD6BF94D5,     0xE57A42BC },
        { 0,    -27,    0xABCC7711,     0x8461CEFD },
        { 0,    -30,    0x89705F41,     0x36B4A597 },
        { 0,    -34,    0xDBE6FECE,     0xBDEDD5BF },
        { 0,    -37,    0xAFEBFF0B,     0xCB24AAFF },
        { 0,    -40,    0x8CBCCC09,     0x6F5088CC },
        { 0,    -44,    0xE12E1342,     0x4BB40E13 },
        { 0,    -47,    0xB424DC35,     0x095CD80F },
        { 0,    -50,    0x901D7CF7,     0x3AB0ACD9 },
        { 0,    -54,    0xE69594BE,     0xC44DE15B },
        { 0,    -57,    0xB877AA32,     0x36A4B449 },
        { 0,    -60,    0x9392EE8E,     0x921D5D07 },
        { 0,    -64,    0xEC1E4A7D,     0xB69561A5 },
        { 0,    -67,    0xBCE50864,     0x92111AEB },
        { 0,    -70,    0x971DA050,     0x74DA7BEF },
        { 0,    -74,    0xF1C90080,     0xBAF72CB1 },
        { 0,    -77,    0xC16D9A00,     0x95928A27 },
        { 0,    -80,    0x9ABE14CD,     0x44753B53 },
        { 0,    -84,    0xF79687AE,     0xD3EEC551 },
        { 0,    -87,    0xC6120625,     0x76589DDB },
        { 0,    -90,    0x9E74D1B7,     0x91E07E48 }
}

Definition at line 380 of file ext_comp.c.

Referenced by _ext_str_cvt(), and add_exponent().

struct EXTEND ten_powers[] [static]
 

Initial value:

 {      
        { 0,    0,      0x80000000,     0 },
        { 0,    3,      0xA0000000,     0 },
        { 0,    6,      0xC8000000,     0 },
        { 0,    9,      0xFA000000,     0 },
        { 0,    13,     0x9C400000,     0 },
        { 0,    16,     0xC3500000,     0 },
        { 0,    19,     0xF4240000,     0 },
        { 0,    23,     0x98968000,     0 },
        { 0,    26,     0xBEBC2000,     0 },
        { 0,    29,     0xEE6B2800,     0 },
        { 0,    33,     0x9502F900,     0 },
        { 0,    36,     0xBA43B740,     0 },
        { 0,    39,     0xE8D4A510,     0 },
        { 0,    43,     0x9184E72A,     0 },
        { 0,    46,     0xB5E620F4,     0x80000000 },
        { 0,    49,     0xE35FA931,     0xA0000000 },
        { 0,    53,     0x8E1BC9BF,     0x04000000 },
        { 0,    56,     0xB1A2BC2E,     0xC5000000 },
        { 0,    59,     0xDE0B6B3A,     0x76400000 },
        { 0,    63,     0x8AC72304,     0x89E80000 },
        { 0,    66,     0xAD78EBC5,     0xAC620000 },
        { 0,    69,     0xD8D726B7,     0x177A8000 },
        { 0,    73,     0x87867832,     0x6EAC9000 },
        { 0,    76,     0xA968163F,     0x0A57B400 },
        { 0,    79,     0xD3C21BCE,     0xCCEDA100 },
        { 0,    83,     0x84595161,     0x401484A0 },
        { 0,    86,     0xA56FA5B9,     0x9019A5C8 },
        { 0,    89,     0xCECB8F27,     0xF4200F3A }
}

Definition at line 327 of file ext_comp.c.

Referenced by _ext_str_cvt(), and add_exponent().


Generated on Fri Apr 14 23:15:24 2006 for minix by  doxygen 1.4.6