Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
AtCoder.Internal.Math
Description
Internal math implementation.
Example
>>>
import AtCoder.Internal.Math
>>>
powMod 10 60 998244353 -- 10^60 mod 998244353
526662729
>>>
isPrime 998244353
True
>>>
isPrime 4
False
>>>
invGcd 128 37
(1,24)
>>>
24 * 128 `mod` 37 == 1
True
>>>
primitiveRoot 2130706433
3
>>>
floorSumUnsigned 8 12 3 5
6
Since: 1.0.0.0
Documentation
Arguments
:: HasCallStack | |
=> Int | x |
-> Int | n |
-> Int | m |
-> Int | xnmod |
Returns x^n \bmod m.
Constraints
- 0 \le n
- 1 \le m \lt 2^{31}
Complexity
- O(\log n)
Example
>>>
let m = 998244353
>>>
powMod 10 60 m -- 10^60 mod m
526662729
Since: 1.0.0.0
isPrime :: Int -> Bool Source #
M. Forisek and J. Jancina, Fast Primality Testing for Integers That Fit into a Machine Word
Constraints
- n < 4759123141 (2^{32} < 4759123141), otherwise the return value can lie (Wikipedia).
Complexity
- O(k \log^3 n), k = 3
Since: 1.0.0.0
invGcd :: Int -> Int -> (Int, Int) Source #
Returns (g, x) such that g = \gcd(a, b), \mathrm{xa} \equiv g \pmod b, 0 \le x \le b/g.
Constraints
- 1 \le b (not asserted)
Since: 1.0.0.0