##### Returning a Float from a Foreign Function
```     Prolog:  -float
C:       float *x;
*x = ...
Pascal:  var x: real
x := ...
FORTRAN: real x
x = ...
```

A pointer to a single-precision float is passed to the function. It is assumed that the function will overwrite this float with its result. When the foreign function returns, the float is converted to a Prolog float and unified with the corresponding argument of the Prolog call. The argument can be of any type; if it cannot be unified with the returned float, the call fails. If the foreign function does not overwrite the float, the result is undefined.

```     Prolog:  -single
C:       float *x;
*x = ...
Pascal:  var x: real
x := ...
FORTRAN: real x
x = ...
```

A pointer to a single-precision float is passed to the function. It is assumed that the function will overwrite this float with its result. When the foreign function returns, the float is converted to a Prolog float and unified with the corresponding argument of the Prolog call. The argument can be of any type; if it cannot be unified with the returned float, the call fails. If the foreign function does not overwrite the float, the result is undefined.

```     Prolog:  -double
C:       double *x;
*x = ...
Pascal:  var x: real
x := ...
```

A pointer to a double-precision float is passed to the function. It is assumed that the function will overwrite this float with its result. When the foreign function returns, the float is converted to a Prolog float and unified with the corresponding argument of the Prolog call. The argument can be of any type; if it cannot be unified with the returned float, the call fails. If the foreign function does not overwrite the float, the result is undefined.