The signature REAL describes the floating-point numbers in SML. Just as with the integer types there can be multiple structures for reals of different precision. But in the SML/NJ compiler there is just the single structure Real64 and Real and LargeReal are aliases for it. The top-level type real is an alias for Real.real.
The design of the Real structure aims for correctness first and foremost. This means it supports the IEEE 754 standard on Nan and infinity and signed zero. All operations are checked and exceptions, such as Div and Overflow, are raised. See the documentation for details.
What is unusual about the real type is that it does not allow the standard equality operators, "=" and "<>". This is to avoid the usual confusion of equality with inexact values. Instead the Real structure provides a collection of comparison operators. You can use Real.== and Real.!= for equality checking with IEEE semantics. These are prefix functions on pairs so you would have to write (Real.==(x, y)). The top-level "<", "<=", ">" and ">=" are still available as infix operators on the reals.
The Real structure includes a version of a math structure, conforming to the MATH signature, that provides trigonometric and logarithmic functions over the real type in Real. However these functions are implemented directly in SML rather than using an underlying math library such as the C library. This makes them a bit slow.
The Basis definition describes Pack structures to serialise reals but unfortunately they are not implemented in SML/NJ.