summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/complex.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/complex.c')
-rw-r--r--src/pkg/runtime/complex.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/pkg/runtime/complex.c b/src/pkg/runtime/complex.c
index eeb943940..395e70fe3 100644
--- a/src/pkg/runtime/complex.c
+++ b/src/pkg/runtime/complex.c
@@ -13,28 +13,30 @@ runtime·complex128div(Complex128 n, Complex128 d, Complex128 q)
float64 a, b, ratio, denom;
// Special cases as in C99.
- ninf = runtime·isInf(n.real, 0) || runtime·isInf(n.imag, 0);
- dinf = runtime·isInf(d.real, 0) || runtime·isInf(d.imag, 0);
+ ninf = n.real == runtime·posinf || n.real == runtime·neginf ||
+ n.imag == runtime·posinf || n.imag == runtime·neginf;
+ dinf = d.real == runtime·posinf || d.real == runtime·neginf ||
+ d.imag == runtime·posinf || d.imag == runtime·neginf;
- nnan = !ninf && (runtime·isNaN(n.real) || runtime·isNaN(n.imag));
- dnan = !dinf && (runtime·isNaN(d.real) || runtime·isNaN(d.imag));
+ nnan = !ninf && (ISNAN(n.real) || ISNAN(n.imag));
+ dnan = !dinf && (ISNAN(d.real) || ISNAN(d.imag));
if(nnan || dnan) {
- q.real = runtime·NaN();
- q.imag = runtime·NaN();
- } else if(ninf && !dinf && !dnan) {
- q.real = runtime·Inf(0);
- q.imag = runtime·Inf(0);
- } else if(!ninf && !nnan && dinf) {
+ q.real = runtime·nan;
+ q.imag = runtime·nan;
+ } else if(ninf && !dinf) {
+ q.real = runtime·posinf;
+ q.imag = runtime·posinf;
+ } else if(!ninf && dinf) {
q.real = 0;
q.imag = 0;
} else if(d.real == 0 && d.imag == 0) {
if(n.real == 0 && n.imag == 0) {
- q.real = runtime·NaN();
- q.imag = runtime·NaN();
+ q.real = runtime·nan;
+ q.imag = runtime·nan;
} else {
- q.real = runtime·Inf(0);
- q.imag = runtime·Inf(0);
+ q.real = runtime·posinf;
+ q.imag = runtime·posinf;
}
} else {
// Standard complex arithmetic, factored to avoid unnecessary overflow.