[Openmcl-devel] Bug receiving floats or doubles in callbacks

Luis Oliveira luismbo at gmail.com
Thu Aug 4 21:28:22 PDT 2005


Hello,

Callbacks in OpenMCL seem to receive single- or double-float
arguments incorrectly. Here's an example:

  #include <stdio.h>

  void expect_float(float (*f)(float))
  {
      printf("f(42.0f) => %f\n", f(42.0f));
  }

  void expect_double(double (*f)(double))
  {
      printf("f(42.0) => %f\n", f(42.0));
  }


Having compiled and loaded the above C code:

  ? (defcallback return-float (:single-float n :single-float)
      (format t "Lisp side got: ~A~%" n)
      42.0)
  RETURN-FLOAT

  ? (external-call "_expect_float" :address return-float)
  f(42.0f) => 42.000000
  Lisp side got: 1.4814527E-39
  NIL

  ? (defcallback return-double (:double-float n :double-float)
      (format t "Lisp side got: ~A~%" n)
      42.0d0)
  RETURN-DOUBLE

  ? (external-call "_expect_double" :address return-double)
  f(42.0) => 42.000000
  Lisp side got: 2.2434418562267333D-308
  NIL


I hope this report helps.

-- 
Luis Oliveira
luismbo (@) gmail (.) com
Equipa Portuguesa do Translation Project
http://www2.iro.umontreal.ca/~pinard/po/registry.cgi?team=pt




More information about the Openmcl-devel mailing list