GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 65 / 0 / 65
Functions: 100.0% 11 / 0 / 11
Branches: 87.1% 54 / 0 / 62

src/io/i128/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../util/traits/math/lib.hpp"
4 #include "../../util/traits/others/lib.hpp"
5
6 namespace tifa_libs {
7 namespace ios128_impl_ {
8 17411460 auto& read(tifa_libs::istream_c auto& is, tifa_libs::u128_c auto& n) {
9
9/12
auto& tifa_libs::ios128_impl_::read<std::istream, unsigned __int128>(std::istream&, unsigned __int128&):
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8705718 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
auto& tifa_libs::ios128_impl_::read<tifa_libs::fastin<15u>, unsigned __int128>(tifa_libs::fastin<15u>&, unsigned __int128&):
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8705718 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
auto& tifa_libs::ios128_impl_::read<tifa_libs::fastin<63u>, unsigned __int128>(tifa_libs::fastin<63u>&, unsigned __int128&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 3 times.
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
17411460 static strn int_buf;
10 17411460 int_buf.reserve(43), n = 0, is >> int_buf;
11
6/6
auto& tifa_libs::ios128_impl_::read<std::istream, unsigned __int128>(std::istream&, unsigned __int128&):
✓ Branch 3 taken 120028189 times.
✓ Branch 4 taken 8705728 times.
auto& tifa_libs::ios128_impl_::read<tifa_libs::fastin<15u>, unsigned __int128>(tifa_libs::fastin<15u>&, unsigned __int128&):
✓ Branch 3 taken 120028189 times.
✓ Branch 4 taken 8705728 times.
auto& tifa_libs::ios128_impl_::read<tifa_libs::fastin<63u>, unsigned __int128>(tifa_libs::fastin<63u>&, unsigned __int128&):
✓ Branch 3 taken 57 times.
✓ Branch 4 taken 4 times.
257467895 for (u32 i = 0; i + 1 < int_buf.size(); i += 2) (n *= 100) += STR2U16[*(u16*)(int_buf.data() + i)];
12
5/6
auto& tifa_libs::ios128_impl_::read<std::istream, unsigned __int128>(std::istream&, unsigned __int128&):
✓ Branch 1 taken 6269273 times.
✓ Branch 2 taken 2436455 times.
auto& tifa_libs::ios128_impl_::read<tifa_libs::fastin<15u>, unsigned __int128>(tifa_libs::fastin<15u>&, unsigned __int128&):
✓ Branch 1 taken 6269273 times.
✓ Branch 2 taken 2436455 times.
auto& tifa_libs::ios128_impl_::read<tifa_libs::fastin<63u>, unsigned __int128>(tifa_libs::fastin<63u>&, unsigned __int128&):
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
17411460 if (int_buf.size() & 1) (n *= 10) += int_buf.back() & 15;
13 17411460 return is;
14 }
15 } // namespace ios128_impl_
16
17 17411458 auto& operator>>(tifa_libs::istream_c auto& is, tifa_libs::s128_c auto& n) NE {
18 17411458 bool neg = false;
19
6/8
auto& tifa_libs::operator>><tifa_libs::fastin<15u>, __int128>(tifa_libs::fastin<15u>&, __int128&):
✓ Branch 2 taken 3852726 times.
✓ Branch 3 taken 4853002 times.
✓ Branch 5 taken 3852726 times.
✗ Branch 6 not taken.
auto& tifa_libs::operator>><tifa_libs::fastin<63u>, __int128>(tifa_libs::fastin<63u>&, __int128&):
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 6 not taken.
8705730 if CEXP (requires { is.skip_nnegdigit(); }) neg = (is.skip_nnegdigit().peek() == '-' && is.get_unchk());
20 else
21
6/6
✓ Branch 0 taken 17411456 times.
✓ Branch 1 taken 3852726 times.
✓ Branch 3 taken 12558454 times.
✓ Branch 4 taken 4853002 times.
✓ Branch 5 taken 12558454 times.
✓ Branch 6 taken 8705728 times.
21264182 while (!neg && !isdigit(is.peek())) {
22
2/2
✓ Branch 1 taken 3852726 times.
✓ Branch 2 taken 8705728 times.
12558454 if (is.peek() == '-') neg = true;
23 12558454 is.get();
24 }
25 17411458 u128 n_ = 0;
26
6/6
auto& tifa_libs::operator>><std::istream, __int128>(std::istream&, __int128&):
✓ Branch 1 taken 3852726 times.
✓ Branch 2 taken 4853002 times.
auto& tifa_libs::operator>><tifa_libs::fastin<15u>, __int128>(tifa_libs::fastin<15u>&, __int128&):
✓ Branch 1 taken 3852726 times.
✓ Branch 2 taken 4853002 times.
auto& tifa_libs::operator>><tifa_libs::fastin<63u>, __int128>(tifa_libs::fastin<63u>&, __int128&):
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 1 time.
17411458 if (ios128_impl_::read(is, n_); neg) n_ = -n_;
27 17411458 n = (i128)n_;
28 17411458 return is;
29 }
30 2 auto& operator>>(tifa_libs::istream_c auto& is, tifa_libs::u128_c auto& n) NE {
31 2 if CEXP (requires { is.skip_ndigit(); }) is.skip_ndigit();
32 else
33 while (!isdigit(is.peek())) is.get();
34 2 return ios128_impl_::read(is, n);
35 }
36 9273872 auto& operator<<(tifa_libs::ostream_c auto& os, tifa_libs::u128_c auto n) NE {
37
6/8
auto& tifa_libs::operator<< <std::ostream, unsigned __int128>(std::ostream&, unsigned __int128):
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 4352854 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
auto& tifa_libs::operator<< <tifa_libs::fastout, unsigned __int128>(tifa_libs::fastout&, unsigned __int128):
✓ Branch 0 taken 44 times.
✓ Branch 1 taken 4920964 times.
✓ Branch 3 taken 44 times.
✗ Branch 4 not taken.
9273980 static strn int_buf(40, '\0');
38 9273872 auto it = end(int_buf);
39 254123395 do *(--(it)) = chr(n % 10) | '0';
40
4/4
auto& tifa_libs::operator<< <std::ostream, unsigned __int128>(std::ostream&, unsigned __int128):
✓ Branch 0 taken 118887288 times.
✓ Branch 1 taken 4352864 times.
auto& tifa_libs::operator<< <tifa_libs::fastout, unsigned __int128>(tifa_libs::fastout&, unsigned __int128):
✓ Branch 0 taken 125962235 times.
✓ Branch 1 taken 4921008 times.
254123395 while (n /= 10);
41 9273872 return os << int_buf.substr(usz(it - begin(int_buf)));
42 }
43 9273870 auto& operator<<(tifa_libs::ostream_c auto& os, tifa_libs::s128_c auto n) NE {
44
4/4
auto& tifa_libs::operator<< <std::ostream, __int128>(std::ostream&, __int128):
✓ Branch 0 taken 1802691 times.
✓ Branch 1 taken 2550173 times.
auto& tifa_libs::operator<< <tifa_libs::fastout, __int128>(tifa_libs::fastout&, __int128):
✓ Branch 0 taken 2052304 times.
✓ Branch 1 taken 2868700 times.
9273870 if (n < 0) return os << '-' << -(u128)n;
45 5418874 return os << (u128)n;
46 }
47
48 } // namespace tifa_libs
49