Branch Coverage

decimal.c
Criterion Covered Total %
branch 92 132 69.7


line true false branch
33 21 0 if (n >= 0 && n <= 38) return decimal_pow10_table[n];
21 0 if (n >= 0 && n <= 38) return decimal_pow10_table[n];
40 0 6 if (n < 0) return powl(10.0L, n);
43 4 6 for (i = 0; i < n; i++) r *= 10.0L;
75 2284 571 for (i = 0; i < 4; i++) {
95 1106 4 for (i = 0; i < 4 && carry; i++) {
535 571 for (i = 0; i < 4 && carry; i++) {
109 2033 0 while (i < len && (s[i] == ' ' || s[i] == '\t')) i++;
0 2033 while (i < len && (s[i] == ' ' || s[i] == '\t')) i++;
0 2033 while (i < len && (s[i] == ' ' || s[i] == '\t')) i++;
110 2033 0 if (i < len && (s[i] == '+' || s[i] == '-')) {
2033 0 if (i < len && (s[i] == '+' || s[i] == '-')) {
10 2023 if (i < len && (s[i] == '+' || s[i] == '-')) {
111 10 0 if (s[i] == '-') neg = 1;
115 6668 2032 while (i < len) {
117 1016 5652 if (c == '.') {
118 0 1016 if (seen_dot) return 0;
122 5652 0 if (c < '0' || c > '9') return 0;
0 5652 if (c < '0' || c > '9') return 0;
124 2076 3576 if (seen_dot) {
125 0 2076 if (frac_used >= scale) continue; /* truncate */
128 0 5652 if (!mul10_128(&hi, &lo)) return 0;
131 2 5650 if (hi == 0xFFFFFFFFFFFFFFFFULL && lo > 0xFFFFFFFFFFFFFFFFULL - digit)
1 1 if (hi == 0xFFFFFFFFFFFFFFFFULL && lo > 0xFFFFFFFFFFFFFFFFULL - digit)
134 6 5645 if (newlo < lo) hi++;
138 0 2032 if (!seen_digit) return 0;
140 2001 2032 while (frac_used < scale) {
141 0 2001 if (!mul10_128(&hi, &lo)) return 0;
147 1 2031 if (hi > 0x8000000000000000ULL) return 0;
148 6 2025 if (hi == 0x8000000000000000ULL && (!neg || lo != 0)) return 0;
4 2 if (hi == 0x8000000000000000ULL && (!neg || lo != 0)) return 0;
0 4 if (hi == 0x8000000000000000ULL && (!neg || lo != 0)) return 0;
150 10 2019 if (neg) {
152 4 6 hi = ~hi + (lo == 0 ? 1 : 0);
166 13 0 while (i < len && (s[i] == ' ' || s[i] == '\t')) i++;
0 13 while (i < len && (s[i] == ' ' || s[i] == '\t')) i++;
0 13 while (i < len && (s[i] == ' ' || s[i] == '\t')) i++;
167 13 0 if (i < len && (s[i] == '+' || s[i] == '-')) {
13 0 if (i < len && (s[i] == '+' || s[i] == '-')) {
4 9 if (i < len && (s[i] == '+' || s[i] == '-')) {
168 4 0 if (s[i] == '-') neg = 1;
171 577 12 while (i < len) {
173 6 571 if (c == '.') {
174 0 6 if (seen_dot) return 0;
178 571 0 if (c < '0' || c > '9') return 0;
0 571 if (c < '0' || c > '9') return 0;
180 16 555 if (seen_dot) {
181 0 16 if (frac_used >= scale) continue;
184 0 571 if (!mul10_256(limbs)) return 0;
185 1 570 if (add_digit_256(limbs, (uint64_t)(c - '0'))) return 0;
187 0 12 if (!seen_digit) return 0;
188 0 12 while (frac_used < scale) {
189 0 0 if (!mul10_256(limbs)) return 0;
194 0 12 if (limbs[3] > 0x8000000000000000ULL) return 0;
195 2 10 if (limbs[3] == 0x8000000000000000ULL
196 1 1 && (!neg || limbs[0] != 0 || limbs[1] != 0 || limbs[2] != 0))
1 0 && (!neg || limbs[0] != 0 || limbs[1] != 0 || limbs[2] != 0))
1 0 && (!neg || limbs[0] != 0 || limbs[1] != 0 || limbs[2] != 0))
0 1 && (!neg || limbs[0] != 0 || limbs[1] != 0 || limbs[2] != 0))
198 4 7 if (neg) {
200 16 4 for (j = 0; j < 4; j++) limbs[j] = ~limbs[j];
213 0 2013 if (!parse_decimal128_str(s, len, scale, &hi, &lo)) return 0;
215 2010 3 if (hi == 0 && (lo & 0x8000000000000000ULL) == 0) {
2010 0 if (hi == 0 && (lo & 0x8000000000000000ULL) == 0) {
219 3 0 if (hi == ~(uint64_t)0 && (lo & 0x8000000000000000ULL)) {
3 0 if (hi == ~(uint64_t)0 && (lo & 0x8000000000000000ULL)) {