# Haskell question

**Mike Gunter
**
m@ryangunter.com

*28 Dec 2000 16:02:39 -0800*

This is fairly subtle. The fact that the numbers are printed with a
decimal point hints that they are floating point numbers.
Floating-point arithmetic's inexactness makes equality tests less
valuable than for, e.g., Integer arithmetic. If you change the "**"s
to "^"s you'll get [3,4], etc. (or [3,4,5] if you change "[x,y]" to
"[x,y,z]").
mike gunter
E.g.:
Main> [[x,y,z] | x<-[1..50],y<-[1..50],z<-[1..50],x^2+y^2==z^2]
[[3,4,5],[4,3,5],[5,12,13],[6,8,10],[7,24,25], ... ]
>* Hello!
*>* I am reading Discrete Mathematics Using a computer by Hall and O'Donnell
*>* and in the introduction to hugs section, they give this example:
*>* [[x,y] | x<-[1..50],y<-[1..50],z<-[1..50],x**2+y**2==z**2]
*>* now I type it in and expect it to return a number of results, but it
*>* doesn't, it shows:
*>* [[8.0,15.0,17.0],[14.0,48.0,50.0],[15.0,8.0,17.0],[15.0,20.0,25.0],[20.0,15.0,25.0],[21.0,28.0,35.0],[27.0,36.0,45.0],[28.0,21.0,35.0],[30.0,40.0,50.0],[36.0,27.0,45.0],[40.0,30.0,50.0],[48.0,14.0,50.0]]
*>* My question is where is [3.0,4.0,5.0],[5.0,12.0,13.0]?
*>* I have looked everywhere I could think of to see what I am doing wrong, but
*>* I have no idea. Maybe a rounding error somewhere?
*>* Thank you,
*>* Scott Anderson
*