diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-09-02 09:55:06 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-09-02 09:55:06 -0400 |
commit | 355b6aa24b26fb25f5f266dc14c7cac1a87e255a (patch) | |
tree | cf46da0314a206ceb127844bfef113817bd1e575 | |
parent | 7a9a8c9292f39ad037e60456e83326b77bbae89d (diff) | |
download | vecmathlib-355b6aa24b26fb25f5f266dc14c7cac1a87e255a.zip vecmathlib-355b6aa24b26fb25f5f266dc14c7cac1a87e255a.tar.gz |
Correct SSE frexp()
-rw-r--r-- | vec_sse_double1.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/vec_sse_double1.h b/vec_sse_double1.h index 75ee4c6..9b1e565 100644 --- a/vec_sse_double1.h +++ b/vec_sse_double1.h @@ -433,13 +433,14 @@ namespace vecmathlib { return to_double(_mm_min_sd(from_double(v), from_double(y.v))); } realvec fmod(realvec y) const { return std::fmod(v, y.v); } - realvec frexp(intvec_t* ir) const + realvec frexp(intvec_t* irv) const { int iri; realvec r = std::frexp(v, &iri); - if (isinf()) iri = std::numeric_limits<int_t>::max(); - if (isnan()) iri = std::numeric_limits<int_t>::min(); - ir->v = iri; + int_t ir = iri; + if (isinf()) ir = std::numeric_limits<int_t>::max(); + if (isnan()) ir = std::numeric_limits<int_t>::min(); + irv->v = ir; return r; } realvec hypot(realvec y) const { return MF::vml_hypot(*this, y); } |