Embedded Artistry libc
C Standard Library Support for Bare-metal Systems
strtopx.c File Reference
#include "gdtoaimp.h"
Include dependency graph for strtopx.c:

Go to the source code of this file.

Functions

int strtopx (CONST char *s, char **sp, void *V)
 

Function Documentation

◆ strtopx()

int strtopx ( CONST char *  s,
char **  sp,
void *  V 
)

Definition at line 60 of file strtopx.c.

62 {
63  static FPI fpi = {64, 1 - 16383 - 64 + 1, 32766 - 16383 - 64 + 1, 1, SI};
64  ULong bits[2];
65  Long exp;
66  int k;
67  UShort* L = (UShort*)V;
68 
69  k = strtodg(s, sp, &fpi, &exp, bits);
70  switch(k & STRTOG_Retmask)
71  {
72  case STRTOG_NoNumber:
73  case STRTOG_Zero:
74  L[0] = L[1] = L[2] = L[3] = L[4] = 0;
75  break;
76 
77  case STRTOG_Denormal:
78  L[_0] = 0;
79  goto normal_bits;
80 
81  case STRTOG_Normal:
82  case STRTOG_NaNbits:
83  L[_0] = (UShort)(exp + 0x3fff + 63);
84  normal_bits:
85  L[_4] = (UShort)bits[0];
86  L[_3] = (UShort)(bits[0] >> 16);
87  L[_2] = (UShort)bits[1];
88  L[_1] = (UShort)(bits[1] >> 16);
89  break;
90 
91  case STRTOG_Infinite:
92  L[_0] = 0x7fff;
93  L[_1] = L[_2] = L[_3] = L[_4] = 0;
94  break;
95 
96  case STRTOG_NaN:
97  L[0] = ldus_QNAN0;
98  L[1] = ldus_QNAN1;
99  L[2] = ldus_QNAN2;
100  L[3] = ldus_QNAN3;
101  L[4] = ldus_QNAN4;
102  }
103  if(k & STRTOG_Neg)
104  {
105  {
106  L[_0] |= 0x8000;
107  }
108  }
109  return k;
110 }
unsigned short UShort
Definition: gdtoa.h:44
#define SI
Definition: gdtoaimp.h:635
unsigned Long ULong
Definition: gdtoa.h:41
Definition: gdtoa.h:86
#define Long
Definition: gdtoa.h:38
int strtodg(CONST char *s00, char **se, FPI *fpi, Long *exp, ULong *bits)
Definition: strtodg.c:443

References Long, SI, strtodg(), STRTOG_Denormal, STRTOG_Infinite, STRTOG_NaN, STRTOG_NaNbits, STRTOG_Neg, STRTOG_NoNumber, STRTOG_Normal, STRTOG_Retmask, and STRTOG_Zero.