Re: [eigen] fix double-promotion in 3.3 Core/SpecialFunctions.h

[ Thread Index | Date Index | More Archives ]


Thanks, the patch looks good, I pushed it. The first cast was not really necessary, I guess, but it does not hurt either.

I will also add the -Wdouble-promotion to our standard compile-flags. It looks like our code was mostly clean with regard to that (except some test-code which I will fix now).

I guess -Wconversion would also make sense (we already enable -Wshorten-64-to-32 on clang), but at the moment it generates too much noise. I'll probably add a bugzilla entry for that.


On 2016-05-04 10:57, Ola Røer Thorsen wrote:

I'm trying out the current Eigen default branch ("almost-3.3"), compiling
code that has been using Eigen 3.2 until now.

I'm using the GCC warnings -Wdouble-promotion and -Wfloat-conversion as
these are really helpful to uncover performance bugs on some of the ARM
CPUs I am using (only single-precision FPU, use of double is very slow).

This uncovered some slight bugs in Core/SpecialFunctions.h where some
expressions were using double-precision when they should use floats, such as

extern/eigen3/Eigen/src/Core/SpecialFunctions.h:762:13: error: implicit
conversion from 'float' to 'double' to match other operand of binary
expression [-Werror=double-promotion]
        c *= x/r;

extern/eigen3/Eigen/src/Core/SpecialFunctions.h:767:25: error: conversion
to 'float' from 'double' may alter its value [-Werror=float-conversion]
      return (ans * ax / a);

Attached here is a small patch that fixes the issues I found. It was
created against the default branch as of this morning. I'm not experienced
with Mercurial so I hope i made the file correctly - please let me know if
it should be done differently.

Best regards,

 Dipl. Inf., Dipl. Math. Christoph Hertzberg

 Universität Bremen
 FB 3 - Mathematik und Informatik
 AG Robotik
 Robert-Hooke-Straße 1
 28359 Bremen, Germany

 Zentrale: +49 421 178 45-6611

 Besuchsadresse der Nebengeschäftsstelle:
 Robert-Hooke-Straße 5
 28359 Bremen, Germany

 Tel.:    +49 421 178 45-4021
 Empfang: +49 421 178 45-6600
 Fax:     +49 421 178 45-4150
 E-Mail:  chtz@xxxxxxxxxxxxxxxxxxxxxxxx

 Weitere Informationen:

Mail converted by MHonArc 2.6.19+