From c5fb91f1bc19baac6c874e6a41fd107c40187278 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 29 Apr 2021 09:47:18 +0200 Subject: [PATCH] Fix division by zero in the non-x86 codepath --- interface/zrotg.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/interface/zrotg.c b/interface/zrotg.c index 8caa411..bc4f064 100644 --- a/interface/zrotg.c +++ b/interface/zrotg.c @@ -79,8 +79,12 @@ void NAME(FLOAT *DA, FLOAT *DB, FLOAT *C, FLOAT *S){ aa_i = fabs(da_r); } - scale = (aa_i / aa_r); - ada = aa_r * sqrt(ONE + scale * scale); + if (aa_r == ZERO) { + ada = 0.; + } else { + scale = (aa_i / aa_r); + ada = aa_r * sqrt(ONE + scale * scale); + } bb_r = fabs(db_r); bb_i = fabs(db_i); @@ -90,9 +94,12 @@ void NAME(FLOAT *DA, FLOAT *DB, FLOAT *C, FLOAT *S){ bb_i = fabs(bb_r); } - scale = (bb_i / bb_r); - adb = bb_r * sqrt(ONE + scale * scale); - + if (bb_r == ZERO) { + adb = 0.; + } else { + scale = (bb_i / bb_r); + adb = bb_r * sqrt(ONE + scale * scale); + } scale = ada + adb; aa_r = da_r / scale; -- 2.7.4