September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -0,0 +1,23 @@
import Data.Ratio
import System.Environment
main = getArgs >>= printM . defaultArg
where
defaultArg as =
if null as
then 60
else read (head as)
printM m =
mapM_ (putStrLn . printP) .
takeWhile ((<= m) . fst) . filter (\(_, b) -> b /= 0 % 1) . zip [0 ..] $
bernoullis
printP (i, r) =
"B(" ++ show i ++ ") = " ++ show (numerator r) ++ "/" ++ show (denominator r)
bernoullis = map head . iterate (ulli 1) . map berno $ enumFrom 0
where
berno i = 1 % (i + 1)
ulli _ [_] = []
ulli i (x:y:xs) = (i % 1) * (x - y) : ulli (i + 1) (y : xs)

View file

@ -0,0 +1,17 @@
import Data.Ratio (numerator, denominator, (%))
bernouillis :: Integer -> [Rational]
bernouillis =
let faulhaber rs n = (:) =<< (-) 1 . sum $ zipWith ((*) . (n %)) [2 ..] rs
in fmap head . tail . scanl faulhaber [] . enumFromTo 0
bernouilliTable :: Integer -> String
bernouilliTable =
let row i x =
[ concat ["B(", show i, ") = ", show n, "/", show (denominator x)]
| let n = numerator x
, n /= 0 ]
in unlines . concat . zipWith row [0 ..] . bernouillis
main :: IO ()
main = putStrLn (bernouilliTable 60)

View file

@ -1,17 +0,0 @@
module Main where
import Data.Ratio
import System.Environment
main = getArgs >>= printM . defaultArg where
defaultArg as = if null as then 60 else read (head as)
printM m = mapM_ (putStrLn . printP) . takeWhile ((<= m).fst)
. filter (\(_,b) -> b /= 0%1) . zip [0..] $ bernoullis
printP (i,r) = "B(" ++ show i ++ ")=" ++ show (numerator r) ++ "/" ++ show (denominator r)
bernoullis = map head . iterate (ulli 1) . map berno $ enumFrom 0 where
berno i = 1 % (i+1)
ulli _ [_] = []
ulli i (x:y:xs) = (i%1)*(x-y) : ulli (i+1) (y:xs)