| | *y* condition | *x* condition | range of result *r* |
|:---:|:--------------|:--------------|:-----------------------------------|
| | *y* = 0.0 | *x* \> 0.0 | 0.0 |
| \* | *y* = + 0.0 | *x* \> 0.0 | + 0.0 |
| \* | *y* = − 0.0 | *x* \> 0.0 | − 0.0 |
| | *y* \> 0.0 | *x* \> 0.0 | $0.0 \< r \< \\frac{\\pi}{2}$ |
| | *y* \> 0.0 | *x* = 0.0 | $\\frac{\\pi}{2}$ |
| | *y* \> 0.0 | *x* \< 0.0 | $\\frac{\\pi}{2} \< r \< \\pi$ |
| | *y* = 0.0 | *x* \< 0 | *π* |
| \* | *y* = + 0.0 | *x* \< 0.0 | *π* |
| \* | *y* = − 0.0 | *x* \< 0.0 | − *π* |
| | *y* \< 0.0 | *x* \< 0.0 | $- \\pi \< r \< - \\frac{\\pi}{2}$ |
| | *y* \< 0.0 | *x* = 0.0 | $- \\frac{\\pi}{2}$ |
| | *y* \< 0.0 | *x* \> 0.0 | $- \\frac{\\pi}{2} \< r \< 0.0$ |
| | *y* = 0.0 | *x* = 0.0 | undefined |
| \* | *y* = + 0.0 | *x* = + 0.0 | + 0.0 |
| \* | *y* = − 0.0 | *x* = + 0.0 | − 0.0 |
| \* | *y* = + 0.0 | *x* = − 0.0 | *π* |
| \* | *y* = − 0.0 | *x* = − 0.0 | − *π* |
| \* | *y* = + 0.0 | *x* = 0 | $\\frac{\\pi}{2}$ |
| \* | *y* = − 0.0 | *x* = 0 | $- \\frac{\\pi}{2}$ |

The above specification follows , which in turn cites ; refer to these sources for more detailed
discussion of branch cuts, boundary conditions, and implementation of
these functions. When it is possible, these procedures produce a real
result from a real argument.
(square **z**) procedure
Returns the square of *z*. This is equivalent to (\* *z* *z*).
```scheme
(square 42) ;; => 1764
(square 2.0) ;; => 4.0
```
(sqrt **z**) inexact library procedure
Returns the principal square root of *z*. The result will have either a
positive real part, or a zero real part and a non-negative imaginary
part.
```scheme
(sqrt 9) ;; => 3
(sqrt -1) ;; => +i
```
(exact-integer-sqrt *k*) procedure
Returns two non-negative exact integers *s* and *r* where $\\hbox{\\it{}k\\/} = s^2 + r$ and $\\hbox{\\it{}k\\/} \< (s+1)^2$.
```scheme
(exact-integer-sqrt 4) ;; => 2 0
(exact-integer-sqrt 5) ;; => 2 1
```
> (expt **z*