heads up - Qt qreal difference on ARM

Kevin Kofler kevin.kofler at chello.at
Mon Aug 12 00:51:02 UTC 2013


Orion Poplawski wrote:
> http://doc.qt.digia.com/4.6/qtglobal.html#qreal-typedef
> 
> typedef qreal
> 
> Typedef for double on all platforms except for those using CPUs with ARM
> architectures. On ARM-based platforms, qreal is a typedef for float for
> performance reasons.
> 
> This still seems to be the case for 4.8 as well.
> 
> This lead to the following compile error on arm in kst:
> 
> /builddir/build/BUILD/kst-2.0.7/src/libkstapp/plotrenderitem.cpp:561:33:
> error: no matching function for call to 'qMin(double&, qreal)'
>     y = qMin(y, plotItem()->yMax());
>                                   ^
> 
> If there is scientific type codes using qreal this might lead to some
> precision issues as well.
> 
> Is double really that much slower on arm?

This mess is yet another reason why ARM is totally unsuitable as a primary 
architecture.

If your package is affected, I recommend to just:
ExcludeArch: %{arm}
and put it on the ExcludeArch tracker with a bug closed as WONTFIX or 
CANTFIX. It is just not practical to make scientific code work with 
ridiculously-low-precision floats.

As for why we can't just change this stupidity in Fedora, the thing is that 
there are a lot of hardcoded #ifdefs out there which assume that qreal is 
float on ARM, so we'd probably break just as many packages as we'd fix.

And this has been discussed over and over again upstream, they refused to 
fix this nonsense. So ARM will always be an unsupportable platform for 
anything Qt.

        Kevin Kofler



More information about the kde mailing list