changeset 19118:9c5a17d5fc19

Deprecate fmod function. * NEWS: Announce deprecation. * scripts/deprecated/fmod.m: New m-file to replace C++ function and issue deprecated warning. * scripts/deprecated/module.mk: Add fmod.m to build system. * data.cc: Remove DEFALIAS of fmod to rem. Replace fmod with rem in %!tests. * datetick.m: Replace fmod usage with rem.
author Rik <rik@octave.org>
date Sat, 20 Sep 2014 20:31:16 -0700
parents a4c226a963c5
children f506de9089e8
files NEWS libinterp/corefcn/data.cc scripts/deprecated/fmod.m scripts/deprecated/module.mk scripts/plot/appearance/datetick.m
diffstat 5 files changed, 60 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/NEWS	Sat Sep 20 20:20:41 2014 -0700
+++ b/NEWS	Sat Sep 20 20:31:16 2014 -0700
@@ -95,6 +95,7 @@
       bicubic            | interp2
       find_dir_in_path   | dir_in_loadpath
       finite             | isfinite
+      fmod               | rem
       nfields            | numfields
       syl                | sylvester
       usage              | print_usage
--- a/libinterp/corefcn/data.cc	Sat Sep 20 20:20:41 2014 -0700
+++ b/libinterp/corefcn/data.cc	Sat Sep 20 20:31:16 2014 -0700
@@ -576,8 +576,7 @@
 
 DEFUN (rem, args, ,
        "-*- texinfo -*-\n\
-@deftypefn  {Mapping Function} {} rem (@var{x}, @var{y})\n\
-@deftypefnx {Mapping Function} {} fmod (@var{x}, @var{y})\n\
+@deftypefn {Mapping Function} {} rem (@var{x}, @var{y})\n\
 Return the remainder of the division @code{@var{x} / @var{y}}, computed\n\
 using the expression\n\
 \n\
@@ -677,11 +676,11 @@
 }
 
 /*
-%!assert (size (fmod (zeros (0, 2), zeros (0, 2))), [0, 2])
-%!assert (size (fmod (rand (2, 3, 4), zeros (2, 3, 4))), [2, 3, 4])
-%!assert (size (fmod (rand (2, 3, 4), 1)), [2, 3, 4])
-%!assert (size (fmod (1, rand (2, 3, 4))), [2, 3, 4])
-%!assert (size (fmod (1, 2)), [1, 1])
+%!assert (size (rem (zeros (0, 2), zeros (0, 2))), [0, 2])
+%!assert (size (rem (rand (2, 3, 4), zeros (2, 3, 4))), [2, 3, 4])
+%!assert (size (rem (rand (2, 3, 4), 1)), [2, 3, 4])
+%!assert (size (rem (1, rand (2, 3, 4))), [2, 3, 4])
+%!assert (size (rem (1, 2)), [1, 1])
 
 %!assert (rem ([1, 2, 3; -1, -2, -3], 2), [1, 0, 1; -1, 0, -1])
 %!assert (rem ([1, 2, 3; -1, -2, -3], 2 * ones (2, 3)),[1, 0, 1; -1, 0, -1])
@@ -727,8 +726,6 @@
 %!assert (rem (0.94, 0.01), 0.0);
 */
 
-DEFALIAS (fmod, rem)
-
 DEFUN (mod, args, ,
        "-*- texinfo -*-\n\
 @deftypefn {Mapping Function} {} mod (@var{x}, @var{y})\n\
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/deprecated/fmod.m	Sat Sep 20 20:31:16 2014 -0700
@@ -0,0 +1,51 @@
+## Copyright (C) 2014 John W. Eaton
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {Mapping Function} {} fmod (@var{x}, @var{y})
+##
+## @code{fmod} is deprecated and will be removed in Octave version 4.6.
+## Please use @code{rem} in all new code.
+##
+## Return the remainder of the division @code{@var{x} / @var{y}}, computed
+## using the expression
+## 
+## @example
+## x - y .* fix (x ./ y)
+## @end example
+## 
+## An error message is printed if the dimensions of the arguments do not
+## agree, or if either of the arguments is complex.
+## @seealso{rem, mod}
+## @end deftypefn
+
+## Deprecated in version 4.2
+
+function retval = fmod (varargin)
+
+  persistent warned = false;
+  if (! warned)
+    warned = true;
+    warning ("Octave:deprecated-function",
+             "fmod is obsolete and will be removed from a future version of Octave, please use rem instead");
+  endif
+
+  retval = rem (varargin{:});
+
+endfunction
+
--- a/scripts/deprecated/module.mk	Sat Sep 20 20:20:41 2014 -0700
+++ b/scripts/deprecated/module.mk	Sat Sep 20 20:31:16 2014 -0700
@@ -4,6 +4,7 @@
   deprecated/bicubic.m \
   deprecated/find_dir_in_path.m \
   deprecated/finite.m \
+  deprecated/fmod.m \
   deprecated/isstr.m \
   deprecated/nfields.m \
   deprecated/strmatch.m \
--- a/scripts/plot/appearance/datetick.m	Sat Sep 20 20:20:41 2014 -0700
+++ b/scripts/plot/appearance/datetick.m	Sat Sep 20 20:31:16 2014 -0700
@@ -271,7 +271,7 @@
     b = 0;
   else
     l = log10 (abs (x));
-    r = fmod (l, 1);
+    r = rem (l, 1);
     a = 10 .^ r;
     b = fix (l - r);
     if (a < 1)