|
From: | John W. Eaton |
Subject: | [Octave-bug-tracker] [bug #55682] round(X,N) and round(X,N,type) |
Date: | Sat, 25 May 2019 08:07:01 -0400 (EDT) |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 |
Follow-up Comment #9, bug #55682 (project octave): I would try to limit the code in the Fround function to just doing argument parsing. Something like: { int nargin = args.length (); if (nargin < 1 || nargin > 3) print_usage (); if (nargin == 1) return ovl (args(0).ceil ()); int n = args(1).xint_value ("N must be an integer value"); enum octave::rounding_mode = octave::round_normal; if (nargin == 3) { std::string mode = xstring_value ("MODE must be a string"); // Case insensitive compare? Abbreviations? if (mode == "significant") mode = octave::round_significant; else if (mode == "decimals") mode = octave::round_decimals; else error ("round: MODE must be either \"decimals\" or \"significant\""); } return ovl (args(0).round (n, mode); } This change will require the definition of a new octave::rounding_mode enum and new two-argument round functions in octave_base_value and any class that needs them. Using template functions at that point may help avoid some duplication. Doing it this way eliminates the explicit checks on data types, which is something I would like to avoid. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?55682> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/
[Prev in Thread] | Current Thread | [Next in Thread] |