Created
March 9, 2024 19:27
-
-
Save dpiponi/92bf13aa770f63365e5cb7c3f10a2c1a to your computer and use it in GitHub Desktop.
weird.hs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
data Weird = Weird { a0 :: Integer | |
, a1 :: Integer | |
, a2 :: Integer | |
, a3 :: Integer | |
, a4 :: Integer | |
, a5 :: Integer | |
, a6 :: Integer | |
} deriving Show | |
instance Num Weird where | |
(Weird a0 a1 a2 a3 a4 a5 a6) * (Weird b0 b1 b2 b3 b4 b5 b6) = | |
Weird | |
{ a0 = a0 * b0 + a6 * b1 + a5 * b2 + a4 * b3 + | |
a6 * b3 + a3 * b4 + a5 * b4 + a6 * b4 + | |
a2 * b5 + a4 * b5 + a5 * b5 + a6 * b5 + | |
a1 * b6 + a3 * b6 + a4 * b6 + a5 * b6 + | |
2 * a6 * b6 | |
, a1 = a1 * b0 + a0 * b1 + a6 * b2 + a5 * b3 + | |
a4 * b4 + a6 * b4 + a3 * b5 + a5 * b5 + | |
a6 * b5 + a2 * b6 + a4 * b6 + a5 * b6 + | |
a6 * b6 | |
, a2 = a2 * b0 + a1 * b1 + a0 * b2 + a6 * b3 + | |
a5 * b4 + a4 * b5 + a6 * b5 + a3 * b6 + | |
a5 * b6 + a6 * b6 | |
, a3 = a3 * b0 + a2 * b1 + a1 * b2 + a0 * b3 + | |
a6 * b4 + a5 * b5 + a4 * b6 + a6 * b6 | |
, a4 = a4 * b0 + a3 * b1 + a6 * b1 + a2 * b2 + | |
a5 * b2 + a1 * b3 + a4 * b3 + a6 * b3 + | |
a0 * b4 + a3 * b4 + a5 * b4 + a6 * b4 + | |
a2 * b5 + a4 * b5 + a5 * b5 + 2 * a6 * b5 + | |
a1 * b6 + a3 * b6 + a4 * b6 + 2 * a5 * b6 + | |
2 * a6 * b6 | |
, a5 = a5 * b0 + a4 * b1 + a6 * b1 + a3 * b2 + | |
a5 * b2 + a6 * b2 + a2 * b3 + a4 * b3 + | |
a5 * b3 + a6 * b3 + a1 * b4 + a3 * b4 + | |
a4 * b4 + a5 * b4 + 2 * a6 * b4 + a0 * b5 + | |
a2 * b5 + a3 * b5 + a4 * b5 + 2 * a5 * b5 + | |
2 * a6 * b5 + a1 * b6 + a2 * b6 + a3 * b6 + | |
2 * a4 * b6 + 2 * a5 * b6 + 4 * a6 * b6 | |
, a6 = a6 * b0 + a5 * b1 + a4 * b2 + a6 * b2 + | |
a3 * b3 + a5 * b3 + a6 * b3 + a2 * b4 + | |
a4 * b4 + a5 * b4 + a6 * b4 + a1 * b5 + | |
a3 * b5 + a4 * b5 + a5 * b5 + 2 * a6 * b5 + | |
a0 * b6 + a2 * b6 + a3 * b6 + a4 * b6 + | |
2 * a5 * b6 + 2 * a6 * b6 | |
} | |
p n = a0 $ Weird 0 1 0 0 0 0 0 ^ (n + 7) | |
main :: IO () | |
main = do | |
print $ p 10000000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment