From 020b3e168279873ce462d09420479ca9f2606a38 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 1 Jun 2024 00:51:18 +0200 Subject: [PATCH] fix handling of INF arguments --- kernel/x86_64/dscal.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/kernel/x86_64/dscal.c b/kernel/x86_64/dscal.c index 05c5c7f16..0b028b782 100644 --- a/kernel/x86_64/dscal.c +++ b/kernel/x86_64/dscal.c @@ -169,8 +169,12 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS while(j < n1) { - x[i]=0.0; - x[i+inc_x]=0.0; + if (isinf(x[i])||isnan(x[i])) + x[i]=NAN; + else x[i]=0.0; + if (isinf(x[i+inc_x])||isnan(x[i+inc_x])) + x[i+inc_x]=NAN; + else x[i+inc_x]=0.0; i += 2*inc_x ; j+=2; @@ -179,7 +183,9 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS while(j < n) { - x[i]=0.0; + if (isinf(x[i])||isnan(x[i])) + x[i]=NAN; + else x[i]=0.0; i += inc_x ; j++; @@ -213,9 +219,9 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS BLASLONG n1 = n & -8; if ( n1 > 0 ) { - if ( da == 0.0 ) - dscal_kernel_8_zero(n1 , &da , x); - else +// if ( da == 0.0 ) +// dscal_kernel_8_zero(n1 , &da , x); +// else dscal_kernel_8(n1 , &da , x); } @@ -223,7 +229,9 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS { for ( i=n1 ; i