A Floating-point Function Return Value
     Prolog:  [-float]
     C:       double f(...)
                {
                  double x;
                  return x;
                }
     Pascal:  function f(...): real;
                var x: real;
                begin
                  f := x;
                end
     FORTRAN: real function f(...)
                real x
                f = x
              end
     

No argument is passed to the foreign function. The return value from the function is assumed to be a single-precision (FORTRAN) or double-precision (C and Pascal) floating point number. It 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.

Many C compilers will allow the function return value to be float instead of double because they always convert single-precision floating-point arguments to double-precision. However, C compilers conforming to the new ANSI standard will not do this, so it is recommended that double be used.

     Prolog:  [-single]
     ANSI C:  float f(...)
                {
                  float x;
                  return x;
                }
     Pascal:  function f(...): real;
                var x: real;
                begin
                  f := x;
                end
     FORTRAN: real function f(...)
                real x
                f = x
              end
     

No argument is passed to the foreign function. The return value from the function is assumed to be a single-precision (FORTRAN) or double-precision (C and Pascal) floating point number. It 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.

     Prolog:  [-double]
     C:       double f(...)
                {
                  double x;
                  return x;
                }
     Pascal:  function f(...): real;
                var x: real;
                begin
                  f := x;
                end
     FORTRAN: real function f(...)
                real x
                f = x
              end
     

No argument is passed to the foreign function. The return value from the function is assumed to be a single-precision (FORTRAN) or double-precision (C and Pascal) floating point number. It 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.