diff libinterp/operators/op-s-cs.cc @ 26596:cc0d942d0e20

Remove inconsistent warning "Octave:divide-by-zero" (bug #46650). * libinterp/corefcn/errwarn.h (warn_divide_by_zero), libinterp/corefcn/errwarn.cc (warn_divide_by_zero): Deprecate function "warn_divide_by_zero", and leave implementation empty for a few releases. * libinterp/corefcn/error.cc: Use different id for test. * examples/code/make_int.cc: No longer advertise "warn_divide_by_zero" in the examples. * libinterp/operators/op-*-*.cc: Remove unused header "errwarn.h". Remove check for scalar zero divisor including the warning. * libinterp/operators/op-dms-template.cc (gripe_if_zero): Remove function. * scripts/general/quadgk.m, scripts/general/quadv.m, scripts/statistics/kurtosis.m, scripts/statistics/mean.m, scripts/statistics/skewness.m: No longer need to turn off unused warning. * scripts/help/warning_ids.m: Remove documentation of "Octave:divide-by-zero". * test/jit.tst, test/mk-sparse-tst.sh, test/prefer.tst: Remove warning "Octave:divide-by-zero".
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Tue, 22 Jan 2019 14:34:08 +0100
parents 00f796120a6d
children b442ec6dda5c
line wrap: on
line diff
--- a/libinterp/operators/op-s-cs.cc	Tue Jan 22 08:07:55 2019 -0500
+++ b/libinterp/operators/op-s-cs.cc	Tue Jan 22 14:34:08 2019 +0100
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -48,12 +47,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.double_value () / d);
+  return octave_value (v1.double_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (pow, scalar, complex, xpow)
@@ -63,12 +57,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_value () / d);
+  return octave_value (v2.complex_value () / v1.double_value ());
 }
 
 DEFCMPLXCMPOP_OP (lt, scalar, complex, <)
@@ -85,12 +74,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.double_value () / d);
+  return octave_value (v1.double_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (el_pow, scalar, complex, xpow)
@@ -100,12 +84,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_value () / d);
+  return octave_value (v2.complex_value () / v1.double_value ());
 }
 
 DEFBINOP (el_and, scalar, complex)