GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 161 / 0 / 161
Functions: 100.0% 23 / 0 / 23
Branches: 100.0% 46 / 0 / 46

src/fps/modinv/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../gcd/lib.hpp"
4
5 namespace tifa_libs {
6
7 template <poly_c poly_t>
8 414 CEXP auto modinv_fps(poly_t CR f, poly_t CR g) NE {
9 414 std::optional<poly_t> ret;
10 414 auto m = gcd_fps_impl_::pgcd_(f, g);
11 414 poly_t _ = (m * ptt<poly_t>{f, g}).first;
12
46/46
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::poly3ntt_impl_::cconv_3ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<167772161ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<469762049ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<754974721ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> >, double> > >(tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> >, double> > const&, tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> >, double> > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, double> > >(tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, double> > const&, tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, double> > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> >, double> > >(tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> >, double> > const&, tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> >, double> > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> >, double> > >(tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> >, double> > const&, tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> >, double> > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, double> > >(tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, double> > const&, tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, double> > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, double> > >(tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, double> > const&, tifa_libs::poly_impl_::poly<tifa_libs::polymtt_impl_::cconv_mtt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, double> > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_fps<tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > > > >(tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_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> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
auto tifa_libs::modinv_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> > > > const&, tifa_libs::poly_impl_::poly<tifa_libs::polyntt_impl_::cconv_ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > const&):
✓ Branch 1 taken 17 times.
✓ Branch 2 taken 1 time.
414 if (_.size() == 1) ret.emplace(divmod_fps((m * ptt<poly_t>(poly_t(1, 1), g)).first, g).second * _[0].inv());
13 414 return ret;
14 414 }
15
16 } // namespace tifa_libs
17