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.