From: SourceForge.net <no...@so...> - 2011-02-24 21:18:39
|
Patches item #3191625, was opened at 2011-02-24 16:18 Message generated for change (Tracker Item Submitted) made by stevengj You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=301645&aid=3191625&group_id=1645 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Steven G. Johnson (stevengj) Assigned to: Nobody/Anonymous (nobody) Summary: fix broken integer? test in Guile typemap Initial Comment: The SWIG_TYPECHECK_INTEGER typecheck for Guile is too weak. It considers integral floating-point values like 1.0 and 0.0 to be of an integer type, whereas for consistency with C/C++ they should be considered to be floating-point values. To test for an integer type in Scheme, one uses a combination of integer? and exact?, and in C the equivalents are scm_integer_p and scm_exact_p. The attached patch fixes this, passes the guile 'make check' tests, and works in my tests of this particular feature. (I noticed this problem because I had a swig-wrapped overloaded C++ function to do communication in an MPI parallel program, and in MPI all processors have to call communication routines with the same type to succeed. It was suddenly failing to add numbers from different processors because one processor called with an argument of 1.5 and another with 0.0, and the latter was falling through to the integer communication routine instead of the floating-point one.) Note that, in Scheme if the user has a value of 1.0 and wants to call an integer-only routine, they can still convert it to a pure integer type by (inexact->exact 1.0), so this patch does not prevent the user from calling subroutines expecting integers with integral floating-point values. Regards, Steven G. Johnson ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=301645&aid=3191625&group_id=1645 |