std.math: fix feqrel for ibmExtended floats.

cast(double*)(&x)[MANTISSA_MSB] is of type double*. Moving the
opening parenthesis gives the right result.
This commit is contained in:
Kai Nacke 2018-03-13 22:56:22 +01:00
parent 90fcb5ab0b
commit cbf4d44e19

View file

@ -7093,16 +7093,16 @@ if (isFloatingPoint!(X))
alias F = floatTraits!(X); alias F = floatTraits!(X);
static if (F.realFormat == RealFormat.ibmExtended) static if (F.realFormat == RealFormat.ibmExtended)
{ {
if (cast(double*)(&x)[MANTISSA_MSB] == cast(double*)(&y)[MANTISSA_MSB]) if ((cast(double*)&x)[MANTISSA_MSB] == (cast(double*)&y)[MANTISSA_MSB])
{ {
return double.mant_dig return double.mant_dig
+ feqrel(cast(double*)(&x)[MANTISSA_LSB], + feqrel((cast(double*)&x)[MANTISSA_LSB],
cast(double*)(&y)[MANTISSA_LSB]); (cast(double*)&y)[MANTISSA_LSB]);
} }
else else
{ {
return feqrel(cast(double*)(&x)[MANTISSA_MSB], return feqrel((cast(double*)&x)[MANTISSA_MSB],
cast(double*)(&y)[MANTISSA_MSB]); (cast(double*)&y)[MANTISSA_MSB]);
} }
} }
else else