integration-0.1: codegen/TableGen.hs
{-# LANGUAGE ParallelListComp #-}
import Data.Number.CReal
import Numeric.AD
import Text.Groom
import Data.List (foldl')
data DD = DD {-# UNPACK #-} !Double {-# UNPACK #-} !Double
deriving Show
f :: Floating a => a -> (a, a)
f = diff' x where x t = tanh (0.5 * pi * sinh t)
weight :: Double -> Double -> DD
weight w d = DD (dbl x) (w * dbl x')
where (x,x') = f (realToFrac d :: CReal)
dbl = read . showCReal 80
dz = weight 0.5 0
dd0 = map (weight 0.5) [1..3]
dd1 = map (weight 0.5) [0.5,1.5,2.5]
dd :: [[DD]]
dd =
[ map (\x -> weight offset (x*scale + offset)) [0..u]
| u <- [5,11,23,47,95,191,383,767,1535] | scale <- iterate (/2) 0.5 | offset <- iterate (/2) 0.25
]
groomed_dd = groom dd