On Sun, 2012-02-05 at 13:15 +0000, Iulian Udrea wrote: > Hello. > > It appears that numeric-quest 0.1.1.3 fails[0] to build with GHC 7.4. > The reason for this is because the Num class does no longer imply Eq or > Show. You can find more information in the GHC 7.4 release notes[1]. > > The attached two patches fixes this build failure. We have already > applied these to Debian. If everything looks fine to you, then please > apply them and upload a new version to hackage. > > Ta, > Iulian > > [0] > http://hackage.haskell.org/packages/archive/numeric-quest/0.1.1.3/logs/failure/ghc-7.4 > [1] > http://www.haskell.org/ghc/docs/7.4.1/html/users_guide/release-7-4-1.html > Attached is a patch with minimised Eq constraints. Ta, Iulian
Description: Num does no longer imply Eq or Show. See GHC 7.4.1 release notes. Author: Iulian Udrea <iulian@physics.org> --- a/Roots.hs +++ b/Roots.hs @@ -76,7 +76,7 @@ where u y a b = a + b*y -polynomial_derivative :: Num a => [a] -> [a] +polynomial_derivative :: (Eq a, Num a) => [a] -> [a] polynomial_derivative as -- -- List of coefficients for derivative of polynomial unchanged: --- a/QuantumVector.lhs +++ b/QuantumVector.lhs @@ -1129,7 +1129,7 @@ > showsPrec n (j :<+ k) = showsPrec n j . showString " + " . showsPrec n k -> showsScalar :: (RealFloat t) => Int -> Complex t -> String -> String +> showsScalar :: (Show t, RealFloat t) => Int -> Complex t -> String -> String > showsScalar n x@(a :+ b) > | b == 0 = showsPrec n a . showString " " > | otherwise = showString "(" .showsPrec n x . showString ") " unchanged: --- b/Orthogonals.lhs +++ b/Orthogonals.lhs @@ -641,7 +641,7 @@ <pre> -> orthogonals :: (Scalar a, Fractional a) => [a] -> [[a]] +> orthogonals :: (Eq a, Scalar a, Fractional a) => [a] -> [[a]] > orthogonals x = > -- > -- List of (n-1) linearly independent vectors, @@ -661,7 +661,7 @@ > next i = if (i+1) == k then (i+2) else (i+1) > k = length (takeWhile (== 0) x) -- first non-zero component of x -> gram_schmidt :: (Scalar a, Fractional a) => [[a]] -> [a] -> [a] +> gram_schmidt :: (Eq a, Scalar a, Fractional a) => [[a]] -> [a] -> [a] > gram_schmidt a u = > -- > -- Projection of vector | u > on some direction @@ -757,7 +757,7 @@ Below is a function that does that for any problem size: <pre> -> one_ket_triangle :: (Scalar a, Fractional a) => [[a]] -> [a] -> [([a],a)] +> one_ket_triangle :: (Eq a, Scalar a, Fractional a) => [[a]] -> [a] -> [([a],a)] > one_ket_triangle a b > -- > -- List of pairs: (p, q) representing @@ -880,7 +880,7 @@ It follows that matrix X is an inverse of A; that is X = A<sup>-1</sup>. <pre> -> inverse :: (Scalar a, Fractional a) => [[a]] -> [[a]] +> inverse :: (Eq a, Scalar a, Fractional a) => [[a]] -> [[a]] > inverse a = many_kets_solution a (unit_matrix (length a)) > -- > -- List of columns of inverse of matrix A @@ -951,7 +951,7 @@ <pre> -> factors_QR :: (Fractional a, Scalar a) => [[a]] -> ([[a]],[[a]]) +> factors_QR :: (Eq a, Fractional a, Scalar a) => [[a]] -> ([[a]],[[a]]) > factors_QR a = > -- > -- A pair of matrices (Q, R), such that @@ -1201,7 +1201,7 @@ > where > (q,r) = factors_QR a -> iterated_eigenvalues :: (Scalar a1, Fractional a1, Num a) => [[a1]] -> a -> [[a1]] +> iterated_eigenvalues :: (Eq a1, Scalar a1, Fractional a1, Eq a, Num a) => [[a1]] -> a -> [[a1]] > iterated_eigenvalues a n > -- > -- List of vectors representing @@ -1215,7 +1215,7 @@ > | otherwise = (diagonals a) > : iterated_eigenvalues (similar_to a) (n-1) -> eigenvalues :: (Scalar a1, Fractional a1, Num a) => [[a1]] -> a -> [a1] +> eigenvalues :: (Eq a1, Scalar a1, Fractional a1, Eq a, Num a) => [[a1]] -> a -> [a1] > eigenvalues a n > -- > -- Eigenvalues of matrix A @@ -1586,7 +1586,7 @@ <pre> -> eigenkets :: (Scalar a, Fractional a) => [[a]] -> [a] -> [[a]] +> eigenkets :: (Eq a, Scalar a, Fractional a) => [[a]] -> [a] -> [[a]] > eigenkets a u > -- > -- List of eigenkets of a square matrix A @@ -1784,7 +1784,7 @@ where n = 20, etc. -> unit_matrix :: Num a => Int -> [[a]] +> unit_matrix :: (Eq a, Num a) => Int -> [[a]] > unit_matrix m = > -- > -- Unit square matrix of with dimensions m x m unchanged: --- b/Orthogonals.lhs +++ b/Orthogonals.lhs @@ -783,7 +783,7 @@ <pre> -> one_ket_solution :: (Fractional a, Scalar a) => [[a]] -> [a] -> [a] +> one_ket_solution :: (Eq a, Fractional a, Scalar a) => [[a]] -> [a] -> [a] > one_ket_solution a b = > -- > -- List representing vector |x>, which is @@ -809,7 +809,7 @@ of just one: <pre> -> many_kets_triangle :: (Scalar a, Fractional a) => [[a]] -> [[a]] -> [([a],[a])] +> many_kets_triangle :: (Eq a, Scalar a, Fractional a) => [[a]] -> [[a]] -> [([a],[a])] > many_kets_triangle a b > -- > -- List of pairs: (p, q) representing @@ -838,7 +838,7 @@ several ket-vectors on the right hand side. <pre> -> many_kets_solution :: (Scalar a, Fractional a) => [[a]] -> [[a]] -> [[a]] +> many_kets_solution :: (Eq a, Scalar a, Fractional a) => [[a]] -> [[a]] -> [[a]] > many_kets_solution a b = > -- > -- List of columns of matrix X, which is @@ -979,7 +979,7 @@ <pre> -> determinant :: (Fractional a, Scalar a) => [[a]] -> a +> determinant :: (Eq a, Fractional a, Scalar a) => [[a]] -> a > determinant a = > let (q,r) = factors_QR a > -- matrix Q is not normed so we have to respect the norms of its rows @@ -1188,7 +1188,7 @@ <pre> -> similar_to :: (Fractional a, Scalar a) => [[a]] -> [[a]] +> similar_to :: (Eq a, Fractional a, Scalar a) => [[a]] -> [[a]] > similar_to a = > -- > -- List of columns of matrix A1 similar to A @@ -1683,7 +1683,7 @@ follows. <pre> -> eigenket' :: (Scalar a, Fractional a) => [[a]] -> a -> a -> [a] -> [a] +> eigenket' :: (Eq a, Scalar a, Fractional a) => [[a]] -> a -> a -> [a] -> [a] > eigenket' a alpha eps x' = > -- > -- Eigenket of matrix A corresponding to eigenvalue alpha only in patch2: unchanged: --- a/EigensystemNum.hs +++ b/EigensystemNum.hs @@ -27,7 +27,7 @@ specRadApprox :: (Fractional a, Ord a) => [[a]] -> [a] specRadApprox = map getGrowth . powerIter -eigenValuesApprox :: (Scalar a, Fractional a) => [[a]] -> [[a]] +eigenValuesApprox :: (Eq a, Scalar a, Fractional a) => [[a]] -> [[a]] eigenValuesApprox = map diagonals . iterate similar_to limit :: (Num a, Ord a) => a -> [a] -> a
Attachment:
signature.asc
Description: This is a digitally signed message part