witness_seed/haskell/witness_seed_3.0/src/RWD.hs
2025-04-29 06:56:37 -05:00

23 lines
No EOL
658 B
Haskell

module RWD (dynamics, fieldprint) where
import Control.Monad.State
import qualified Types
omega :: Double
omega = 1.0
k :: Double
k = 0.1
dt :: Double
dt = 0.01
dynamics :: [Types.Intellecton] -> Double -> ([Double], Double)
dynamics intellectons phase = (intellectonDots, phase')
where
values = map Types.value intellectons
intellectonDots = map (\x -> omega * x + sum [k * sin (y - x) | y <- values]) values
phase' = phase + dt * sum (map sin values)
fieldprint :: [Types.Intellecton] -> StateT Types.WitnessState IO Double
fieldprint intellectons = pure $ sum (map (abs . Types.value) intellectons) / fromIntegral (length intellectons)