プログラミング
module Numerical.FFT ( fft1d ) where import Control.Monad (when) import Control.Monad.Primitive (PrimMonad, PrimState) import Control.Monad.ST (ST, runST) import Data.Vector (Vector, MVector, (!), generate, map, thaw, freeze) import qualif…
import Control.Monad.ST (ST,runST) import Data.Vector (Vector, toList, fromList, thaw, freeze) import Data.Vector.Mutable (STVector, swap) import qualified Data.Vector.Mutable as MV (length) import Data.Vector.Generic.Mutable (reverse) imp…
二次元配列を一次元で表現するために、二重ループが入るが、その際のVectorのappendで時間がかかる… module Numerical.FFT ( fft1d ) where import Prelude hiding ((++),length,map) import Data.Vector import Data.Maybe import Data.Complex import Data…
Data.Arrayを使って、HaskellでFFT. 64KのサンプルでList版から101.1sec->0.73secに短縮。 大量のサンプル数を突っ込むとギブアップする。 module Numerical.FFT ( fft1d ) where import qualified Data.Vector as V import Data.Array import Data.Array.IA…
x86_64 Linuxのhostでsourceからbuildする方法。 以下の変更をする Index: build-common.sh =================================================================== --- build-common.sh (リビジョン 89) +++ build-common.sh (リビジョン 90) @@ -329,9 +32…
HaskellでstockhamのFFTを作ってみた。 Listなので、64Kサンプルになると遅くなる。ここから、どこまで速くなるか試みてみる。 module Numerical.FFT ( fft1d ) where import Debug.Trace import System.Environment import System.Console.GetOpt import Sy…
構造体でのデータの受け渡し。加えて、hsc2hsを使ってcとHaskellの接点を切り離し。 CC = gcc -c HC = ghc HSC2HS = hsc2hs RM = rm -f TARGET = projectile C_SRCS = main.c HS_SRCS = linearspace.hs projectile_wrapper.hs projectile.hs HS_OBJS = $(HS_…
まずは、簡単な呼び出し。 一応、ポインタで引き渡した領域に出力データを書いている CC = gcc HC = ghc RM = rm -f TARGET = test C_SRC = main.c HS_SRC = fib.hs SRCS = $(C_SRC) $(HS_SRC) OBJS = $(C_SRC:.c=.o) $(HS_SRC:.hs=.o) CFLAGS = -Wall all: …
ただOpenGLを使うだけならGLUTで十分なのだが、UIをリッチにしたい場合はGUIツールキットを使わないといけない。なので、GTKをOpenGLの組み合わせ。GtkGLExtパッケージのexampleが貧弱なので、cのGtkGLExtのexampleを移植してみることに。simple.cのHaskell…