summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuw Pascoe <huw.pascoe@gmail.com>2017-09-22 16:37:42 +0200
committerHuw Pascoe <huw.pascoe@gmail.com>2017-09-25 01:54:02 +0200
commit903906da3b9b274836510adcabf8adf8e2c15954 (patch)
treedb271240137bfa4d2d3912a00469fbba32932af6
parentMerge pull request #2921 from jroweboy/batch-fix-2 (diff)
downloadyuzu-903906da3b9b274836510adcabf8adf8e2c15954.tar
yuzu-903906da3b9b274836510adcabf8adf8e2c15954.tar.gz
yuzu-903906da3b9b274836510adcabf8adf8e2c15954.tar.bz2
yuzu-903906da3b9b274836510adcabf8adf8e2c15954.tar.lz
yuzu-903906da3b9b274836510adcabf8adf8e2c15954.tar.xz
yuzu-903906da3b9b274836510adcabf8adf8e2c15954.tar.zst
yuzu-903906da3b9b274836510adcabf8adf8e2c15954.zip
-rw-r--r--src/video_core/pica_types.h18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/video_core/pica_types.h b/src/video_core/pica_types.h
index 5d7e10066..2eafa7e9e 100644
--- a/src/video_core/pica_types.h
+++ b/src/video_core/pica_types.h
@@ -58,11 +58,12 @@ public:
}
Float<M, E> operator*(const Float<M, E>& flt) const {
- if ((this->value == 0.f && !std::isnan(flt.value)) ||
- (flt.value == 0.f && !std::isnan(this->value)))
- // PICA gives 0 instead of NaN when multiplying by inf
- return Zero();
- return Float<M, E>::FromFloat32(ToFloat32() * flt.ToFloat32());
+ float result = value * flt.ToFloat32();
+ // PICA gives 0 instead of NaN when multiplying by inf
+ if (!std::isnan(value) && !std::isnan(flt.ToFloat32()))
+ if (std::isnan(result))
+ result = 0.f;
+ return Float<M, E>::FromFloat32(result);
}
Float<M, E> operator/(const Float<M, E>& flt) const {
@@ -78,12 +79,7 @@ public:
}
Float<M, E>& operator*=(const Float<M, E>& flt) {
- if ((this->value == 0.f && !std::isnan(flt.value)) ||
- (flt.value == 0.f && !std::isnan(this->value)))
- // PICA gives 0 instead of NaN when multiplying by inf
- *this = Zero();
- else
- value *= flt.ToFloat32();
+ value = operator*(flt).value;
return *this;
}