On Wed, Mar 6, 2013 at 10:19 AM,  <pa...@free.fr> wrote:
[snip]
> Is this really true? I would expect that Valgrind does all calculations at 
> 64bit double precision and converts. This will result in truncation and/or 
> under/overflow.
>
> My feeling is that unless the usually small numerical differences change your 
> control flow, then just ignore the differences. The aim of testing with 
> Valgrind isn't to validate numerical results, it is to validate memory use or 
> performance or threading.

Erm... the problem is that this can cause major issues in numerical
simulations... ;-((

Below is a small example (yes yes... I know it's not 100% portable...
it should use at least |LDBL_DECIMAL_DIG| ... but I'm not going to
twist my mind for that unless there is demand for it) for AMD64/64bit:
-- snip --
#include <math.h>
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>

int main(int ac, char *av[])
{
        long double i;
        unsigned long long numiterations=0ULL;

        puts("# start.");

        for(i=1.L ; i < 1.00000000001L ; i=nextafterl(i, 5.L))
        {
                numiterations++;
        }

        printf("# done (after %llu/0x%llx iterations).\n",
                numiterations, numiterations);

        return EXIT_SUCCESS;
}
-- snip --
(this is more or less reduced from real-world simulation code which
uses |nextafterl()|&co. to iterate over some variations of the input
values to weed-out stuff like singularities etc.)

The expected output looks like this:
-- snip --
# start.
# done (after 92233720/0x57f5ff8 iterations)
-- snip --

On valgrind it just hangs (e.g. if you pass in a |double| casted to
|long double| into |nextafterl()|'s first argument and then cast the
|long double| result to |double| then the result is usually identical
to the input value... as result the algorithm is stuck in an endless
loop).

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) roland.ma...@nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)

------------------------------------------------------------------------------
Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester  
Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the  
endpoint security space. For insight on selecting the right partner to 
tackle endpoint security challenges, access the full report. 
http://p.sf.net/sfu/symantec-dev2dev
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to