src/fps/asin/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../ln/lib.hpp" | ||
| 4 | #include "../sqrt/lib.hpp" | ||
| 5 | |||
| 6 | namespace tifa_libs { | ||
| 7 | |||
| 8 | template <poly_c poly_t> | ||
| 9 | 12 | CEXP auto asin_fps(poly_t CR p) NE { | |
| 10 | 12 | const auto i = qpow(p.conv_core.G, (poly_t::val_t::mod() - 1) / 4); | |
| 11 | 12 | return ln_fps(sqrt_fps(-p * p + 1, (u32)p.size()).value() + i * p) * -i; | |
| 12 | } | ||
| 13 | |||
| 14 | } // namespace tifa_libs | ||
| 15 |