From fc88b36a3067269aa0cd74d5aa56b46edb7bd129 Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Wed, 2 Nov 2016 18:55:09 +0100 Subject: use new wrappers in gsl functions --- packages/gsl/src/Numeric/GSL/Fitting.hs | 2 +- packages/gsl/src/Numeric/GSL/Fourier.hs | 2 +- packages/gsl/src/Numeric/GSL/Internal.hs | 15 ++++++++++++--- packages/gsl/src/Numeric/GSL/LinearAlgebra.hs | 12 ++++++------ packages/gsl/src/Numeric/GSL/Polynomials.hs | 2 +- packages/gsl/src/Numeric/GSL/Vector.hs | 12 ++++++------ 6 files changed, 27 insertions(+), 18 deletions(-) (limited to 'packages/gsl/src/Numeric') diff --git a/packages/gsl/src/Numeric/GSL/Fitting.hs b/packages/gsl/src/Numeric/GSL/Fitting.hs index 8eb93a7..9a2f665 100644 --- a/packages/gsl/src/Numeric/GSL/Fitting.hs +++ b/packages/gsl/src/Numeric/GSL/Fitting.hs @@ -87,7 +87,7 @@ nlFitGen m f jac xiv epsabs epsrel maxit = unsafePerformIO $ do fp <- mkVecVecfun (aux_vTov (checkdim1 n p . f)) jp <- mkVecMatfun (aux_vTom (checkdim2 n p . jac)) rawpath <- createMatrix RowMajor maxit (2+p) - c_nlfit m fp jp epsabs epsrel (fi maxit) (fi n) # xiv # rawpath #|"c_nlfit" + (xiv `applyRaw` (rawpath `applyRaw` id)) (c_nlfit m fp jp epsabs epsrel (fi maxit) (fi n)) #|"c_nlfit" let it = round (rawpath `atIndex` (maxit-1,0)) path = takeRows it rawpath [sol] = toRows $ dropRows (it-1) path diff --git a/packages/gsl/src/Numeric/GSL/Fourier.hs b/packages/gsl/src/Numeric/GSL/Fourier.hs index 1c2c053..bffab87 100644 --- a/packages/gsl/src/Numeric/GSL/Fourier.hs +++ b/packages/gsl/src/Numeric/GSL/Fourier.hs @@ -25,7 +25,7 @@ import System.IO.Unsafe (unsafePerformIO) genfft code v = unsafePerformIO $ do r <- createVector (size v) - c_fft code # v # r #|"fft" + (v `applyRaw` (r `applyRaw` id)) (c_fft code) #|"fft" return r foreign import ccall unsafe "gsl-aux.h fft" c_fft :: CInt -> TCV (TCV Res) diff --git a/packages/gsl/src/Numeric/GSL/Internal.hs b/packages/gsl/src/Numeric/GSL/Internal.hs index dcd3bc4..f70e167 100644 --- a/packages/gsl/src/Numeric/GSL/Internal.hs +++ b/packages/gsl/src/Numeric/GSL/Internal.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE FlexibleContexts #-} + -- | -- Module : Numeric.GSL.Internal -- Copyright : (c) Alberto Ruiz 2009 @@ -23,7 +25,7 @@ module Numeric.GSL.Internal( createV, createMIO, module Numeric.LinearAlgebra.Devel, - check,(#),vec, ww2, + check,(#),(#!),vec, ww2, Res,TV,TM,TCV,TCM ) where @@ -86,12 +88,12 @@ aux_vTom f n p rr cr r = g where createV n fun msg = unsafePerformIO $ do r <- createVector n - fun # r #| msg + (r # id) fun #| msg return r createMIO r c fun msg = do res <- createMatrix RowMajor r c - fun # res #| msg + (res # id) fun #| msg return res -------------------------------------------------------------------------------- @@ -135,3 +137,10 @@ infixl 1 # a # b = applyRaw a b {-# INLINE (#) #-} +--infixr 1 # +--a # b = apply a b +--{-# INLINE (#) #-} + +a #! b = a # b # id +{-# INLINE (#!) #-} + diff --git a/packages/gsl/src/Numeric/GSL/LinearAlgebra.hs b/packages/gsl/src/Numeric/GSL/LinearAlgebra.hs index 6ffe306..1bf357b 100644 --- a/packages/gsl/src/Numeric/GSL/LinearAlgebra.hs +++ b/packages/gsl/src/Numeric/GSL/LinearAlgebra.hs @@ -40,7 +40,7 @@ randomVector :: Int -- ^ seed -> Vector Double randomVector seed dist n = unsafePerformIO $ do r <- createVector n - c_random_vector (fi seed) ((fi.fromEnum) dist) # r #|"randomVector" + (r `applyRaw` id) (c_random_vector (fi seed) ((fi.fromEnum) dist)) #|"randomVector" return r foreign import ccall unsafe "random_vector" c_random_vector :: CInt -> CInt -> TV @@ -56,7 +56,7 @@ saveMatrix filename fmt m = do charname <- newCString filename charfmt <- newCString fmt let o = if orderOf m == RowMajor then 1 else 0 - matrix_fprintf charname charfmt o # m #|"matrix_fprintf" + (m `applyRaw` id) (matrix_fprintf charname charfmt o) #|"matrix_fprintf" free charname free charfmt @@ -69,7 +69,7 @@ fscanfVector :: FilePath -> Int -> IO (Vector Double) fscanfVector filename n = do charname <- newCString filename res <- createVector n - gsl_vector_fscanf charname # res #|"gsl_vector_fscanf" + (res `applyRaw` id) (gsl_vector_fscanf charname) #|"gsl_vector_fscanf" free charname return res @@ -80,7 +80,7 @@ fprintfVector :: FilePath -> String -> Vector Double -> IO () fprintfVector filename fmt v = do charname <- newCString filename charfmt <- newCString fmt - gsl_vector_fprintf charname charfmt # v #|"gsl_vector_fprintf" + (v `applyRaw` id) (gsl_vector_fprintf charname charfmt) #|"gsl_vector_fprintf" free charname free charfmt @@ -91,7 +91,7 @@ freadVector :: FilePath -> Int -> IO (Vector Double) freadVector filename n = do charname <- newCString filename res <- createVector n - gsl_vector_fread charname # res #| "gsl_vector_fread" + (res `applyRaw` id) (gsl_vector_fread charname) #| "gsl_vector_fread" free charname return res @@ -101,7 +101,7 @@ foreign import ccall unsafe "vector_fread" gsl_vector_fread:: Ptr CChar -> TV fwriteVector :: FilePath -> Vector Double -> IO () fwriteVector filename v = do charname <- newCString filename - gsl_vector_fwrite charname # v #|"gsl_vector_fwrite" + (v `applyRaw` id) (gsl_vector_fwrite charname) #|"gsl_vector_fwrite" free charname foreign import ccall unsafe "vector_fwrite" gsl_vector_fwrite :: Ptr CChar -> TV diff --git a/packages/gsl/src/Numeric/GSL/Polynomials.hs b/packages/gsl/src/Numeric/GSL/Polynomials.hs index 46a31f3..7bd9404 100644 --- a/packages/gsl/src/Numeric/GSL/Polynomials.hs +++ b/packages/gsl/src/Numeric/GSL/Polynomials.hs @@ -49,7 +49,7 @@ polySolve = toList . polySolve' . fromList polySolve' :: Vector Double -> Vector (Complex Double) polySolve' v | size v > 1 = unsafePerformIO $ do r <- createVector (size v-1) - c_polySolve # v # r #| "polySolve" + (v `applyRaw` (r `applyRaw` id)) c_polySolve #| "polySolve" return r | otherwise = error "polySolve on a polynomial of degree zero" diff --git a/packages/gsl/src/Numeric/GSL/Vector.hs b/packages/gsl/src/Numeric/GSL/Vector.hs index fb982c5..b1c0106 100644 --- a/packages/gsl/src/Numeric/GSL/Vector.hs +++ b/packages/gsl/src/Numeric/GSL/Vector.hs @@ -34,7 +34,7 @@ randomVector :: Int -- ^ seed -> Vector Double randomVector seed dist n = unsafePerformIO $ do r <- createVector n - c_random_vector_GSL (fi seed) ((fi.fromEnum) dist) # r #|"randomVectorGSL" + (r `applyRaw` id) (c_random_vector_GSL (fi seed) ((fi.fromEnum) dist)) #|"randomVectorGSL" return r foreign import ccall unsafe "random_vector_GSL" c_random_vector_GSL :: CInt -> CInt -> TV @@ -50,7 +50,7 @@ saveMatrix filename fmt m = do charname <- newCString filename charfmt <- newCString fmt let o = if orderOf m == RowMajor then 1 else 0 - matrix_fprintf charname charfmt o # m #|"matrix_fprintf" + (m `applyRaw` id) (matrix_fprintf charname charfmt o) #|"matrix_fprintf" free charname free charfmt @@ -63,7 +63,7 @@ fscanfVector :: FilePath -> Int -> IO (Vector Double) fscanfVector filename n = do charname <- newCString filename res <- createVector n - gsl_vector_fscanf charname # res #|"gsl_vector_fscanf" + (res `applyRaw` id) (gsl_vector_fscanf charname) #|"gsl_vector_fscanf" free charname return res @@ -74,7 +74,7 @@ fprintfVector :: FilePath -> String -> Vector Double -> IO () fprintfVector filename fmt v = do charname <- newCString filename charfmt <- newCString fmt - gsl_vector_fprintf charname charfmt # v #|"gsl_vector_fprintf" + (v `applyRaw` id) (gsl_vector_fprintf charname charfmt) #|"gsl_vector_fprintf" free charname free charfmt @@ -85,7 +85,7 @@ freadVector :: FilePath -> Int -> IO (Vector Double) freadVector filename n = do charname <- newCString filename res <- createVector n - gsl_vector_fread charname # res #|"gsl_vector_fread" + (res `applyRaw` id) (gsl_vector_fread charname) #|"gsl_vector_fread" free charname return res @@ -95,7 +95,7 @@ foreign import ccall unsafe "vector_fread" gsl_vector_fread:: Ptr CChar -> TV fwriteVector :: FilePath -> Vector Double -> IO () fwriteVector filename v = do charname <- newCString filename - gsl_vector_fwrite charname # v #|"gsl_vector_fwrite" + (v `applyRaw` id) (gsl_vector_fwrite charname) #|"gsl_vector_fwrite" free charname foreign import ccall unsafe "vector_fwrite" gsl_vector_fwrite :: Ptr CChar -> TV -- cgit v1.2.3