Bug#836844: eigen3: autopkgtests fail on ppc64el - solution
TFAUCK
tfauck at free.fr
Wed Dec 7 06:31:23 UTC 2016
Hello,
I found the missing information in POWER ISA
/To use a multiply-add to perform an IEEE or Java//
//compliant multiply, the addend must be -0.0. This//
//is necessary to insure that the sign of a zero result//
//will be correct when the product is -0.0 (+0.0 + -0.0//
// +0.0, and -0.0 + -0.0 -0.0). When the sign of a//
//resulting 0.0 is not important, then +0.0 can be//
//used as an addend which may, in some cases,//
//avoid the need for a second register to hold a -0.0//
//in addition to the integer 0/floating-point +0.0 that//
//may already be available./
so the example shows it:
$ cat t2.c
#include "stdio.h"
#include "altivec.h"
int main() {
vector float X={ -1, 0, 0, 0 };
vector float Y={ -1, -1, -1, -2 };
vector float Z, V;
* vector float p4f_ZERO={ 0, 0, 0, 0 };**
** vector float p4f_mZERO={ -0.0, -0.0, -0.0, -0.0 };*
Z = vec_madd(X, Y, p4f_ZERO);
V = vec_madd(X, Y, p4f_mZERO);
printf("%f %f %f %f \n",Z[0], Z[1], Z[2], Z[3]);
printf("%f %f %f %f \n",V[0], V[1], V[2], V[3]);
vector float U;
U= X * Y ;
printf("%f %f %f %f \n",U[0], U[1], U[2], U[3]);
return(0);
}
$ gcc t2.c
debian at vm18:~$ ./a.out
1.000000 0.000000 0.000000 0.000000
*1.000000 -0.000000 -0.000000 -0.000000 *
1.000000 -0.000000 -0.000000 -0.000000
So the vector p4f_ZERO must be modified with a signed value of -0.0 in
order to have that function to work.
--
__________________________________________________________________________
thf - Thierry Fauck - tfauck at free.fr>
/pubkey: 4096R/FCC181CE/
/fingerprint: 5CCF 6B82 DE4E E72A A40B B63E A153 BF4F FCC1 81CE/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/debian-science-maintainers/attachments/20161207/1ba93fd4/attachment.html>
More information about the debian-science-maintainers
mailing list