GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 40 / 0 / 40
Functions: 100.0% 5 / 0 / 5
Branches: 50.0% 5 / 0 / 10

src/fps/cossin/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../math/qpow/basic/lib.hpp"
4 #include "../exp/lib.hpp"
5
6 namespace tifa_libs {
7
8 // @return [cos(p(x)), sin(p(x))]
9 template <poly_c poly_t>
10 requires(poly_t::ccore_t::ct_cat == CCORE::NTT)
11 51 CEXP auto cossin_fps(poly_t p, u32 n = 0) NE {
12
5/10
auto tifa_libs::cossin_fps<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1012924417ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1012924417ul> > > >, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 11 times.
auto tifa_libs::cossin_fps<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1012924417ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1012924417ul> > > >, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 11 times.
auto tifa_libs::cossin_fps<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > >(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 0 taken 9 times.
✗ Branch 1 not taken.
auto tifa_libs::cossin_fps<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1012924417ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1012924417ul> > > >, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 11 times.
auto tifa_libs::cossin_fps<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > >(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 0 taken 9 times.
✗ Branch 1 not taken.
51 if (!n) n = (u32)p.size();
13 51 const auto i = qpow(poly_t::ccore_t::G, (poly_t::val_t::mod() - 1) / 4),
14 51 inv2 = (poly_t::val_t::mod() + 1) / 2;
15 51 (p *= i).resize(n);
16 51 const auto expf = exp_fps(p), expnf = exp_fps(-p);
17 51 return std::make_pair((expf + expnf) * inv2, (expnf - expf) * (i * inv2));
18 51 }
19
20 } // namespace tifa_libs
21