Translating Fortran mixed mode arithmetic expressions into Haskell is quite a challenge. Believe it or not c=10.**(11-int(alog10(r)+10)) translates to let c = (**) 10.0 $ fromIntegral $ subtract 11 $ truncate $ (+) (logBase 10.0 r) 10.0 I finally broke the expression below into two parts (k1 & k2) to ease translation. I get it that Haskell is expecting to subtract two Integers and is instead being given an Integer and a Double. What must I do to make this work? Are there any guidelines for doing this kind of translation work? Michael ================ Prelude> let mm = 2 Prelude> let k1 = 3*mm+2 Prelude> let k2 = (/) 150 119 Prelude> let k = k1 - k2 <interactive>:1:13: Couldn't match expected type `Integer' against inferred type `Double' In the second argument of `(-)', namely `k2' In the expression: k1 - k2 In the definition of `k': k = k1 - k2 Prelude> :t 150/119 150/119 :: (Fractional t) => t Prelude> |