diff --git a/hmatrix-glpk.cabal b/hmatrix-glpk.cabal
--- a/hmatrix-glpk.cabal
+++ b/hmatrix-glpk.cabal
@@ -1,5 +1,5 @@
 Name:               hmatrix-glpk
-Version:            0.5.0.0
+Version:            0.6.0.0
 License:            GPL
 License-file:       LICENSE
 Author:             Alberto Ruiz
diff --git a/src/Numeric/LinearProgramming.hs b/src/Numeric/LinearProgramming.hs
--- a/src/Numeric/LinearProgramming.hs
+++ b/src/Numeric/LinearProgramming.hs
@@ -275,10 +275,10 @@
 
 -----------------------------------------------------
 
-(##) :: TransArray c => TransRaw c b -> c -> b
-infixl 1 ##
-a ## b = applyRaw a b
-{-# INLINE (##) #-}
+--(##) :: TransArray c => TransRaw c b -> c -> b
+--infixl 1 ##
+--a ## b = applyRaw a b
+--{-# INLINE (##) #-}
 
 foreign import ccall unsafe "c_simplex_sparse" c_simplex_sparse
     :: CInt -> CInt                  -- rows and cols
@@ -290,7 +290,7 @@
 simplexSparse :: Int -> Int -> Matrix Double -> Matrix Double -> Vector Double
 simplexSparse m n c b = unsafePerformIO $ do
     s <- createVector (2+n)
-    c_simplex_sparse (fi m) (fi n) ## (cmat c) ## (cmat b) ## s #|"c_simplex_sparse"
+    ((cmat c) `applyRaw` ((cmat b) `applyRaw` (s `applyRaw` id))) (c_simplex_sparse (fi m) (fi n)) #|"c_simplex_sparse"
     return s
 
 foreign import ccall unsafe "c_exact_sparse" c_exact_sparse
@@ -303,7 +303,7 @@
 exactSparse :: Int -> Int -> Matrix Double -> Matrix Double -> Vector Double
 exactSparse m n c b = unsafePerformIO $ do
     s <- createVector (2+n)
-    c_exact_sparse (fi m) (fi n) ## (cmat c) ## (cmat b) ## s #|"c_exact_sparse"
+    ((cmat c) `applyRaw` ((cmat b) `applyRaw` (s `applyRaw` id))) (c_exact_sparse (fi m) (fi n)) #|"c_exact_sparse"
     return s
 
 glpFR, glpLO, glpUP, glpDB, glpFX :: Double
