FreeCalypso > hg > freecalypso-sw
comparison gsm-fw/sprintf/float.c @ 147:4ac657b95f52
gsm-fw: sprintf %f: handle infinities and NaNs
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Thu, 14 Nov 2013 19:16:38 +0000 |
parents | 4d629b6bbcfd |
children |
comparison
equal
deleted
inserted
replaced
146:4d629b6bbcfd | 147:4ac657b95f52 |
---|---|
65 int extra_prec = 0; | 65 int extra_prec = 0; |
66 int origsign = sign; | 66 int origsign = sign; |
67 double fract, tmp; | 67 double fract, tmp; |
68 char *start, *t; | 68 char *start, *t; |
69 | 69 |
70 /* first order of business: weed out infinities and NaNs */ | |
71 if (isinf(number)) { | |
72 if (number < 0) | |
73 sign = '-'; | |
74 return _sprintf_field(op, width, flags, sign, "Inf", 3, 0, 0); | |
75 } | |
76 if (isnan(number)) | |
77 return _sprintf_field(op, width, flags, sign, "NaN", 3, 0, 0); | |
78 /* OK, we know it's a valid real like in the good old VAX days */ | |
70 if (number < 0) { | 79 if (number < 0) { |
71 sign = '-'; | 80 sign = '-'; |
72 number = -number; | 81 number = -number; |
73 } | 82 } |
74 fract = modf(number, &tmp); | 83 fract = modf(number, &tmp); |