Branch Coverage

lib/Math/Random/PCG32.xs
Criterion Covered Total %
branch 47 58 81.0


line true false branch
22 0 1 if (RETVAL == NULL) croak("Could not allocate state memory");
40 12 2 while (count < max) {
41 11 1 if (pcg32_random_r(rng) < odds) break;
65 0 7 if (max == min) RETVAL = min;
66 0 7 else if (min > max) croak("max must be greater than min");
76 3 20 if (x1 == x2 && y1 == y2) XSRETURN_UNDEF;
77 0 20 EXTEND(SP, 2);
80 16 4 if (dx == 0) goto MOVE_Y;
81 14 2 else if (dy == 0) goto MOVE_X;
83 8 6 if (pcg32_random_r(rng) % (magx + abs(dy)) < magx) {
85 4 6 mPUSHs(newSViv(x1 + (dx > 0 ? 1 : -1)));
90 4 6 mPUSHs(newSViv(y1 + (dy > 0 ? 1 : -1)));
99 1 1 if (items > 1) {
100 0 1 if (!SvIOK(ST(1)) && !SvNOK(ST(1)))
102 0 1 factor = SvNV(ST(1));
119 0 1 if (len == 0) XSRETURN_UNDEF;
134 1 5 if (len == 0) XSRETURN_UNDEF;
137 2 3 if (rnd != len - 1) {
140 5 2 for (i = rnd; i < len - 1; i++) *dst++ = *src++;
156 0 1 if (len == 0) XSRETURN_UNDEF;
166 0 6 if (count == 0) croak("count must be positive");
167 6 0 if (sides == 0) croak("sides must be positive");
169 18 6 while (count--) sum += pcg32_random_r(rng) % sides;
184 2 2 if (len == 0 || count == 0) goto DONE;
185 1 1 if (count >= len) {
187 5 1 for (i = 0; i < len; i++) {
194 5 0 for (i = 0; i < len; i++) {
195 3 2 if (pcg32_random_r(rng) < ( count * ( UINT32_MAX / total ) )) {
198 2 1 if (--count == 0) break;