Skip to content

Commit 171c20e

Browse files
authored
Merge pull request #3202 from martin-frbg/issue3201
Fix division by zero in the non-x86 codepath of C/ZROTG
2 parents 9a36a28 + c5fb91f commit 171c20e

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

interface/zrotg.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,12 @@ void NAME(FLOAT *DA, FLOAT *DB, FLOAT *C, FLOAT *S){
7979
aa_i = fabs(da_r);
8080
}
8181

82-
scale = (aa_i / aa_r);
83-
ada = aa_r * sqrt(ONE + scale * scale);
82+
if (aa_r == ZERO) {
83+
ada = 0.;
84+
} else {
85+
scale = (aa_i / aa_r);
86+
ada = aa_r * sqrt(ONE + scale * scale);
87+
}
8488

8589
bb_r = fabs(db_r);
8690
bb_i = fabs(db_i);
@@ -90,9 +94,12 @@ void NAME(FLOAT *DA, FLOAT *DB, FLOAT *C, FLOAT *S){
9094
bb_i = fabs(bb_r);
9195
}
9296

93-
scale = (bb_i / bb_r);
94-
adb = bb_r * sqrt(ONE + scale * scale);
95-
97+
if (bb_r == ZERO) {
98+
adb = 0.;
99+
} else {
100+
scale = (bb_i / bb_r);
101+
adb = bb_r * sqrt(ONE + scale * scale);
102+
}
96103
scale = ada + adb;
97104

98105
aa_r = da_r / scale;

0 commit comments

Comments
 (0)