GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 50 / 0 / 50
Functions: 100.0% 3 / 0 / 3
Branches: 51.2% 86 / 0 / 168

test/cpv_local/fps/trifunc.cpp
Line Branch Exec Source
1 // competitive-verifier: STANDALONE
2
3 #include "../../../src/fps/asin/lib.hpp"
4 #include "../../../src/fps/atan/lib.hpp"
5 #include "../../../src/fps/cossin/lib.hpp"
6 #include "../../../src/fps/ds/ntt/lib.hpp"
7 #include "../../../src/math/ds/mint/ms/lib.hpp"
8 #include "../../../src/math/ds/mint/ms64/lib.hpp"
9 #include "../../../src/util/rand/lib.hpp"
10 #include "../base.hpp"
11
12 using namespace tifa_libs;
13 CEXP u32 MOD = 998244353;
14 using mints30 = mint_ms<MOD>;
15 using mints63 = mint_ms64<MOD>;
16
17 using pnm30 = polyntt<mints30>;
18 using pnm63 = polyntt<mints63>;
19
20 rand_gen<u64> gen;
21
22 template <class poly>
23 6 void test(u32 n) {
24 using mint = TPN poly::val_t;
25 6 poly p(n + 1);
26 6 p[0] = 0;
27
4/4
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 3 taken 101100 times.
✓ Branch 4 taken 3 times.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 3 taken 101100 times.
✓ Branch 4 taken 3 times.
202206 flt_ (u32, i, 1, n + 1) p[i] = mint(gen());
28 6 const u32 sz = n + 1;
29
30
2/4
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
6 auto sqrt_1mpp = sqrt_fps(-p * p + 1, sz).value();
31
4/8
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 9 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 9 not taken.
6 auto sqrt_1app = sqrt_fps(p * p + 1, sz).value();
32 6 auto inv_sqrt_1app = inv_fps(sqrt_1app);
33
2/4
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 auto p_inv_sqrt_1app = (p * inv_sqrt_1app).pre(sz);
34
35
8/16
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
6 timer_(auto [p_cos, p_sin] = cossin_fps(p));
36
6/12
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
6 timer_(auto p_asin = asin_fps(p));
37
6/12
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
6 timer_(auto p_atan = atan_fps(p));
38
39
4/8
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
6 check(asin_fps(-p), -p_asin, check_param(p));
40
4/8
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
6 check(atan_fps(-p), -p_atan, check_param(p));
41
42
2/4
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 auto [p_cos_asin, p_sin_asin] = cossin_fps(p_asin);
43
6/12
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
6 check(p_cos_asin, sqrt_1mpp, check_param(p), check_param(p_asin));
44
4/8
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
6 check(p_sin_asin, p, check_param(p_asin));
45
46
2/4
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 auto [p_cos_atan, p_sin_atan] = cossin_fps(p_atan);
47
6/12
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
6 check(p_cos_atan, inv_sqrt_1app, check_param(p), check_param(p_atan));
48
8/16
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
void test<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(unsigned int):
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
6 check(p_sin_atan, p_inv_sqrt_1app, check_param(p), check_param(p_atan), check_param(inv_sqrt_1app));
49 6 }
50
51 1 int main() {
52
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test<pnm30>(100));
53
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test<pnm63>(100));
54
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test<pnm30>(1000));
55
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test<pnm63>(1000));
56
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test<pnm30>(100000));
57
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test<pnm63>(100000));
58 1 }
59