Blastall core dump on Alpha running Redhat 7.2

cdwan <[email protected]>
Newsgroups gmane.science.biology.informatics.devel
Message-ID <[email protected]>
The bug I reported before turns out to have a pretty simple resolution: 
  gcc needs the "-mieee" flag on this platform to correctly perform this 
bit of math on my particular platform.  I added the flag to 
"platform/linux.ncbi.mk" and have created a set of binaries which can 
successfully align my sequences.

Here's the rest of the story, for the interested:  I took Joe and 
Iddo's advice, and made a little test program with my lethal values, 
which generate the underflow.

[cdwan@alpha alpha]$ more test.c
#include <math.h>
#include <stdio.h>

int main () {
   double Lambda, searchsp, score, logK;

   Lambda   = 1.374063;
   score    = 518;
   searchsp = 351649;
   logK     = -0.341642;

   printf ("Hello world\n");

   printf ("(-Lambda * score):        %e\n", -Lambda * score);
   printf ("(-Lambda * score) + logK: %e\n", (-Lambda * score) + logK);
   printf ("exp(that):                %e\n", exp((-Lambda * score) + 
logK));
   printf ("searchsp * exp(that):     %e\n", searchsp * exp((-Lambda * 
score) + logK
));

   printf("Goodbye world\n");
}

Then I built it in a very minimal way:

[cdwan@alpha alpha]$ /usr/local/bin/gcc -o test test.c -lm
[cdwan@alpha alpha]$ ./test
Hello world
(-Lambda * score):        -7.117646e+02
(-Lambda * score) + logK: -7.121063e+02
exp(that):                5.447206e-310
Floating exception (core dumped)

It's interesting to me that the underflow happens on a multiplication 
step which should make the number in question *larger*.  My guess is 
that somewhere in the guts of the multiplication routine for floating 
point numbers, they do something clever and fast which can result in a 
smaller number as an intermediate value.

I'll skip all the incorrect compiler flags I tried, and go right to 
this:

[cdwan@alpha alpha]$ /usr/local/bin/gcc -o test test.c -mieee -lm
[cdwan@alpha alpha]$ ./test
Hello world
(-Lambda * score):        -7.117646e+02
(-Lambda * score) + logK: -7.121063e+02
exp(that):                5.447206e-310
searchsp * exp(that):     1.915505e-304
Goodbye world

I suggest that NCBI add the "-mieee" flag to their DEC makefiles.

I also suggest that (as usual), everybody should check all their 
results, look for core files, and never ever trust a computer.  
Sometimes, "no hits" doesn't really mean "no hits."

-Chris Dwan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.