Mercurial > octave
annotate scripts/strings/str2num.m @ 29358:0a5b15007766 stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 10 Feb 2021 09:52:15 -0500 |
parents | bd51beb6205e |
children | 7854d5752dd2 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 ######################################################################## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 ## |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
3 ## Copyright (C) 1996-2021 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27898
diff
changeset
|
4 ## |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
2558 | 7 ## |
8 ## This file is part of Octave. | |
9 ## | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
2558 | 11 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
13 ## (at your option) any later version. |
2558 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
18 ## GNU General Public License for more details. |
2558 | 19 ## |
20 ## You should have received a copy of the GNU General Public License | |
7016 | 21 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 ## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 ######################################################################## |
2558 | 25 |
3361 | 26 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
27 ## @deftypefn {} {@var{x} =} str2num (@var{s}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
28 ## @deftypefnx {} {[@var{x}, @var{state}] =} str2num (@var{s}) |
20164
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
29 ## Convert the string (or character array) @var{s} to a number (or an array). |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
30 ## |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
31 ## Examples: |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
32 ## |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
33 ## @example |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
34 ## @group |
13035
8abb190e6cc8
doc: Improve strnum() docstring
Rik <octave@nomad.inbox5.com>
parents:
12945
diff
changeset
|
35 ## str2num ("3.141596") |
8abb190e6cc8
doc: Improve strnum() docstring
Rik <octave@nomad.inbox5.com>
parents:
12945
diff
changeset
|
36 ## @result{} 3.141596 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
37 ## |
14327
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
38 ## str2num (["1, 2, 3"; "4, 5, 6"]) |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
39 ## @result{} 1 2 3 |
13035
8abb190e6cc8
doc: Improve strnum() docstring
Rik <octave@nomad.inbox5.com>
parents:
12945
diff
changeset
|
40 ## 4 5 6 |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
41 ## @end group |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
42 ## @end example |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
43 ## |
12945
0c74237b3479
str2num.m: Add second output indicating state of the conversion.
Ben Abbott <bpabbott@mac.com>
parents:
11587
diff
changeset
|
44 ## The optional second output, @var{state}, is logically true when the |
13931
9de488c6c59c
doc: Spellcheck documentation before 3.6.0 release
Rik <octave@nomad.inbox5.com>
parents:
13315
diff
changeset
|
45 ## conversion is successful. If the conversion fails the numeric output, |
13035
8abb190e6cc8
doc: Improve strnum() docstring
Rik <octave@nomad.inbox5.com>
parents:
12945
diff
changeset
|
46 ## @var{x}, is empty and @var{state} is false. |
12945
0c74237b3479
str2num.m: Add second output indicating state of the conversion.
Ben Abbott <bpabbott@mac.com>
parents:
11587
diff
changeset
|
47 ## |
20164
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
48 ## @strong{Caution:} As @code{str2num} uses the @code{eval} function to do the |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
49 ## conversion, @code{str2num} will execute any code contained in the string |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
50 ## @var{s}. Use @code{str2double} for a safer and faster conversion. |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
51 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
52 ## For cell array of strings use @code{str2double}. |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
53 ## @seealso{str2double, eval} |
3361 | 54 ## @end deftypefn |
2558 | 55 |
12945
0c74237b3479
str2num.m: Add second output indicating state of the conversion.
Ben Abbott <bpabbott@mac.com>
parents:
11587
diff
changeset
|
56 function [m, state] = str2num (s) |
2558 | 57 |
19593
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
17744
diff
changeset
|
58 if (nargin != 1) |
6046 | 59 print_usage (); |
13315
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
60 elseif (! ischar (s)) |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
61 error ("str2num: S must be a string or string array"); |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
62 endif |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
63 |
13315
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
64 s(:, end+1) = ";"; |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
65 s = sprintf ("m = [%s];", reshape (s', 1, numel (s))); |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
66 state = true; |
26961
1a79f289ca33
str2num.m: Don't halt in m-file if debug_on_error is true and error occurs (bug #55939).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
67 ## Swallow any errors from eval (bug #55939). |
1a79f289ca33
str2num.m: Don't halt in m-file if debug_on_error is true and error occurs (bug #55939).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
68 try |
1a79f289ca33
str2num.m: Don't halt in m-file if debug_on_error is true and error occurs (bug #55939).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
69 eval (s); |
1a79f289ca33
str2num.m: Don't halt in m-file if debug_on_error is true and error occurs (bug #55939).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
70 catch |
1a79f289ca33
str2num.m: Don't halt in m-file if debug_on_error is true and error occurs (bug #55939).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
71 m = []; |
1a79f289ca33
str2num.m: Don't halt in m-file if debug_on_error is true and error occurs (bug #55939).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
72 state = false; |
1a79f289ca33
str2num.m: Don't halt in m-file if debug_on_error is true and error occurs (bug #55939).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
73 end_try_catch |
1a79f289ca33
str2num.m: Don't halt in m-file if debug_on_error is true and error occurs (bug #55939).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
74 |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
75 if (ischar (m)) |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
76 m = []; |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
77 state = false; |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
78 endif |
2558 | 79 |
80 endfunction | |
7411 | 81 |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
82 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14327
diff
changeset
|
83 %!assert (str2num ("-1.3e2"), -130) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14327
diff
changeset
|
84 %!assert (str2num ("[1, 2; 3, 4]"), [1, 2; 3, 4]) |
7411 | 85 |
13315
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
86 %!test |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
87 %! [x, state] = str2num ("pi"); |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
88 %! assert (state); |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
89 %! [x, state] = str2num ("Hello World"); |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
90 %! assert (! state); |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
91 |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
92 ## Test input validation |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
93 %!error str2num () |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
94 %!error str2num ("string", 1) |
13315
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
95 %!error <S must be a string> str2num ({"string"}) |