Skip to content

Instantly share code, notes, and snippets.

@dpiponi
Created March 9, 2024 19:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dpiponi/92bf13aa770f63365e5cb7c3f10a2c1a to your computer and use it in GitHub Desktop.
Save dpiponi/92bf13aa770f63365e5cb7c3f10a2c1a to your computer and use it in GitHub Desktop.
weird.hs
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