Skip to content

Instantly share code, notes, and snippets.

@choupi
Created January 23, 2015 03:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save choupi/ccc55fb3b508e82c83d3 to your computer and use it in GitHub Desktop.
Save choupi/ccc55fb3b508e82c83d3 to your computer and use it in GitHub Desktop.
mpla :: [[Float]] -> [Float] -> [Float] -> (Bool, [Float])
mpla [] [] c = (False, c)
mpla (a:ax) (b:by) (c:cc) = (fl&&(s<0), rc)
where
s = b*(c+(mdot a cc))
nc = case (s<0) of
True -> [c+(b*head a)] ++ (vadd a cc b)
False -> [c] ++ cc
(fl, rc) = mpla ax by nc
vadd :: [Float] -> [Float] -> Float -> [Float]
vadd [] [] _ = []
vadd (a:ax) (b:bx) c = [a+b*c] ++ (vadd ax bx c)
mdot :: [Float] -> [Float] -> Float
mdot [] [] = 0
mdot (a:ax) (b:bx) = a*b + (mdot ax bx)
main = print (mpla [[-1,1],[-2,-1],[3,3],[4,-4]] [1,1,-1,-1] [0,1,2])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment