summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-09-02 09:55:06 -0400
committerErik Schnetter <schnetter@gmail.com>2013-09-02 09:55:06 -0400
commit355b6aa24b26fb25f5f266dc14c7cac1a87e255a (patch)
treecf46da0314a206ceb127844bfef113817bd1e575
parent7a9a8c9292f39ad037e60456e83326b77bbae89d (diff)
downloadvecmathlib-355b6aa24b26fb25f5f266dc14c7cac1a87e255a.zip
vecmathlib-355b6aa24b26fb25f5f266dc14c7cac1a87e255a.tar.gz
Correct SSE frexp()
-rw-r--r--vec_sse_double1.h9
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); }
OpenPOWER on IntegriCloud