Mercurial > octave
annotate scripts/miscellaneous/cast.m @ 30875:5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
For new users of Octave it is best to show explicit calling forms
in the documentation and to show a return argument when it exists.
* bp-table.cc, shift.m, accumarray.m, accumdim.m, bincoeff.m, bitcmp.m,
bitget.m, bitset.m, blkdiag.m, celldisp.m, cplxpair.m, dblquad.m, flip.m,
fliplr.m, flipud.m, idivide.m, int2str.m, interpft.m, logspace.m, num2str.m,
polyarea.m, postpad.m, prepad.m, randi.m, repmat.m, rng.m, rot90.m, rotdim.m,
structfun.m, triplequad.m, uibuttongroup.m, uicontrol.m, uipanel.m,
uipushtool.m, uitoggletool.m, uitoolbar.m, waitforbuttonpress.m, help.m,
__additional_help_message__.m, hsv.m, im2double.m, im2frame.m, javachk.m,
usejava.m, argnames.m, char.m, formula.m, inline.m, __vectorize__.m, findstr.m,
flipdim.m, strmatch.m, vectorize.m, commutation_matrix.m, cond.m, cross.m,
duplication_matrix.m, expm.m, orth.m, rank.m, rref.m, trace.m, vech.m, cast.m,
compare_versions.m, delete.m, dir.m, fileattrib.m, grabcode.m, gunzip.m,
inputname.m, license.m, list_primes.m, ls.m, mexext.m, movefile.m,
namelengthmax.m, nargoutchk.m, nthargout.m, substruct.m, swapbytes.m, ver.m,
verLessThan.m, what.m, fminunc.m, fsolve.m, fzero.m, optimget.m, __fdjac__.m,
matlabroot.m, savepath.m, campos.m, camroll.m, camtarget.m, camup.m, camva.m,
camzoom.m, clabel.m, diffuse.m, legend.m, orient.m, rticks.m, specular.m,
thetaticks.m, xlim.m, xtickangle.m, xticklabels.m, xticks.m, ylim.m,
ytickangle.m, yticklabels.m, yticks.m, zlim.m, ztickangle.m, zticklabels.m,
zticks.m, ellipsoid.m, isocolors.m, isonormals.m, stairs.m, surfnorm.m,
__actual_axis_position__.m, __pltopt__.m, close.m, graphics_toolkit.m, pan.m,
print.m, printd.m, __ghostscript__.m, __gnuplot_print__.m, __opengl_print__.m,
rotate3d.m, subplot.m, zoom.m, compan.m, conv.m, poly.m, polyaffine.m,
polyder.m, polyint.m, polyout.m, polyreduce.m, polyvalm.m, roots.m, prefdir.m,
prefsfile.m, profexplore.m, profexport.m, profshow.m, powerset.m, unique.m,
arch_rnd.m, arma_rnd.m, autoreg_matrix.m, bartlett.m, blackman.m, detrend.m,
durbinlevinson.m, fftconv.m, fftfilt.m, fftshift.m, fractdiff.m, hamming.m,
hanning.m, hurst.m, ifftshift.m, rectangle_lw.m, rectangle_sw.m, triangle_lw.m,
sinc.m, sinetone.m, sinewave.m, spectral_adf.m, spectral_xdf.m, spencer.m,
ilu.m, __sprand__.m, sprand.m, sprandn.m, sprandsym.m, treelayout.m, beta.m,
betainc.m, betaincinv.m, betaln.m, cosint.m, expint.m, factorial.m, gammainc.m,
gammaincinv.m, lcm.m, nthroot.m, perms.m, reallog.m, realpow.m, realsqrt.m,
sinint.m, hadamard.m, hankel.m, hilb.m, invhilb.m, magic.m, pascal.m, rosser.m,
toeplitz.m, vander.m, wilkinson.m, center.m, corr.m, cov.m, discrete_cdf.m,
discrete_inv.m, discrete_pdf.m, discrete_rnd.m, empirical_cdf.m,
empirical_inv.m, empirical_pdf.m, empirical_rnd.m, kendall.m, kurtosis.m,
mad.m, mean.m, meansq.m, median.m, mode.m, moment.m, range.m, ranks.m,
run_count.m, skewness.m, spearman.m, statistics.m, std.m, base2dec.m,
bin2dec.m, blanks.m, cstrcat.m, deblank.m, dec2base.m, dec2bin.m, dec2hex.m,
hex2dec.m, index.m, regexptranslate.m, rindex.m, strcat.m, strjust.m,
strtrim.m, strtrunc.m, substr.m, untabify.m, __have_feature__.m,
__prog_output_assert__.m, __run_test_suite__.m, example.m, fail.m, asctime.m,
calendar.m, ctime.m, date.m, etime.m:
Add return arguments to @deftypefn macros where they were missing. Rename
variables in functions (particularly generic "retval") to match documentation.
Rename some return variables for (hopefully) better clarity (e.g., 'ax' to 'hax'
to indicate it is a graphics handle to an axes object).
author | Rik <rik@octave.org> |
---|---|
date | Wed, 30 Mar 2022 20:40:27 -0700 |
parents | 796f54d4ddbf |
children | 597f3ee61a48 |
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 ## |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30383
diff
changeset
|
3 ## Copyright (C) 2007-2022 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/>. |
6403 | 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 |
6403 | 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. |
6403 | 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. |
6403 | 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 ######################################################################## |
6403 | 25 |
26 ## -*- texinfo -*- | |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
27 ## @deftypefn {} {@var{y} =} cast (@var{x}, "@var{type}") |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
28 ## @deftypefnx {} {@var{y} =} cast (@var{x}, "@var{like}", @var{var}) |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
29 ## Convert @var{x} to data type @var{type}. |
18291 | 30 ## |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
31 ## The input @var{x} may be a scalar, vector, or matrix of a class that is |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
32 ## convertible to the target class (see below). |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
33 ## |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
34 ## If a variable @var{var} is specified after @qcode{"like"}, @var{x} is |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
35 ## converted to the same data type and sparsity attribute. If @var{var} is |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
36 ## complex, @var{x} will be complex, too. |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
37 ## |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
38 ## @var{var} may be and @var{type} may name any of the following built-in |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
39 ## numeric classes: |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19173
diff
changeset
|
40 ## |
19173 | 41 ## @example |
42 ## @group | |
43 ## "double" | |
44 ## "single" | |
45 ## "logical" | |
46 ## "char" | |
47 ## "int8" | |
48 ## "int16" | |
49 ## "int32" | |
50 ## "int64" | |
51 ## "uint8" | |
52 ## "uint16" | |
53 ## "uint32" | |
54 ## "uint64" | |
55 ## @end group | |
56 ## @end example | |
57 ## | |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
58 ## The value @var{x} may be modified to fit within the range of the new type. |
18291 | 59 ## |
60 ## Examples: | |
61 ## | |
62 ## @example | |
63 ## @group | |
64 ## cast (-5, "uint8") | |
65 ## @result{} 0 | |
66 ## cast (300, "int8") | |
67 ## @result{} 127 | |
68 ## @end group | |
69 ## @end example | |
70 ## | |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
71 ## Programming Note: This function relies on the object @var{x} having a |
23134
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
72 ## conversion method named @var{type}. User-defined classes may implement only |
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
73 ## a subset of the full list of types shown above. In that case, it may be |
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
74 ## necessary to call cast twice in order to reach the desired type. |
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
75 ## For example, the conversion to double is nearly always implemented, but |
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
76 ## the conversion to uint8 might not be. In that case, the following code will |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
77 ## work: |
23134
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
78 ## |
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
79 ## @example |
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
80 ## cast (cast (@var{user_defined_val}, "double"), "uint8") |
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
81 ## @end example |
01bf5c733de7
doc: Expand documentation for cast() (bug #50201).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
82 ## |
30329
81d26e8481a6
maint: Shorten @seealso lines to less than 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
83 ## @seealso{typecast, int8, uint8, int16, uint16, int32, uint32, int64, uint64, |
81d26e8481a6
maint: Shorten @seealso lines to less than 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
84 ## double, single, logical, char, class, typeinfo} |
6403 | 85 ## @end deftypefn |
86 | |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
87 function y = cast (x, type, var) |
6403 | 88 |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
89 if (nargin < 2 || nargin > 3) |
18291 | 90 print_usage (); |
91 endif | |
92 | |
19173 | 93 if (! ischar (type)) |
94 error ("cast: TYPE must be a string"); | |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
95 endif |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
96 |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
97 if (strcmp (type, "like")) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
98 is_like = true; |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
99 type = class (var); |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
100 else |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
101 is_like = false; |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
102 endif |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
103 |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
104 if ((! is_like && nargin != 2) || (is_like && nargin != 3)) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
105 print_usage (); |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
106 endif |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
107 |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
108 if (! isnumeric (x) && ! islogical (x) && ! ischar (x)) |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
109 error ("cast: type conversion from '%s' is not supported", class (x)); |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
110 endif |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
111 |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
112 if (! any (strcmp (type, {"int8"; "uint8"; "int16"; "uint16"; "int32"; |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
113 "uint32"; "int64"; "uint64"; "double"; "single"; |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
114 "logical"; "char"}))) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
115 error ("cast: type conversion to '%s' is not supported", type); |
6403 | 116 endif |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19173
diff
changeset
|
117 |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
118 y = feval (type, x); |
6403 | 119 |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
120 if (is_like) |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
121 if (issparse (var) && ! issparse (y)) |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
122 ## y is of the same type as var, so it must be convertible to sparse |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
123 y = sparse (y); |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
124 elseif (! issparse (var) && issparse (y)) |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
125 y = full (y); |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
126 endif |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
127 if (iscomplex (var) || iscomplex (x)) |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
128 y = complex (y); |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
129 endif |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
130 endif |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
131 |
6403 | 132 endfunction |
17338
1c89599167a6
maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents:
15466
diff
changeset
|
133 |
19173 | 134 |
135 %!assert (cast (single (2.5), "double"), 2.5) | |
136 %!assert (cast (2.5, "single"), single (2.5)) | |
137 %!assert (cast ([5 0 -5], "logical"), [true false true]) | |
138 %!assert (cast ([65 66 67], "char"), "ABC") | |
139 %!assert (cast ([-2.5 1.1 2.5], "int8"), int8 ([-3 1 3])) | |
140 %!assert (cast ([-2.5 1.1 2.5], "uint8"), uint8 ([0 1 3])) | |
141 %!assert (cast ([-2.5 1.1 2.5], "int16"), int16 ([-3 1 3])) | |
142 %!assert (cast ([-2.5 1.1 2.5], "uint16"), uint16 ([0 1 3])) | |
143 %!assert (cast ([-2.5 1.1 2.5], "int32"), int32 ([-3 1 3])) | |
144 %!assert (cast ([-2.5 1.1 2.5], "uint32"), uint32 ([0 1 3])) | |
145 %!assert (cast ([-2.5 1.1 2.5], "int64"), int64 ([-3 1 3])) | |
146 %!assert (cast ([-2.5 1.1 2.5], "uint64"), uint64 ([0 1 3])) | |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
147 %!assert (cast (1, "like", 2), 1) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
148 %!assert (cast (1, "like", 2i), complex (1)) |
30383
8afdeac24ba4
maint: Use space after function name and before opening parenthesis.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
149 %!assert (cast (1, "like", speye (2)), sparse (1)) |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
150 %!assert (cast (1, "like", sparse (2i)), complex (sparse (1))) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
151 %!assert (cast (single (1), "like", speye (2)), sparse (1)) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
152 %!assert (cast (sparse (1), "like", 2), 1) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
153 %!assert (cast (sparse (1), "like", 2i), complex (1)) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
154 %!assert (cast (complex (1), "like", 2), complex (1)) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
155 %!assert (cast (complex (1), "like", single (2)), complex (single (1))) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
156 %!assert (cast ("a", "like", "octave"), "a") |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
157 %!assert (cast ("a", "like", 1i), complex (97)) |
19173 | 158 |
159 ## Test input validation | |
28886
d8318c12d903
test: remove unnecessary BIST tests in m-files checking for excessive number of inputs.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
160 %!error <Invalid call> cast () |
d8318c12d903
test: remove unnecessary BIST tests in m-files checking for excessive number of inputs.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
161 %!error <Invalid call> cast (1) |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
162 %!error <Invalid call> cast (1, "double", 2) |
19173 | 163 %!error <TYPE must be a string> cast (1, {"foobar"}) |
29087
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
164 %!error <type conversion from .* not supported> cast ({}, "double"); |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
165 %!error <type conversion from .* not supported> cast (struct (), "double") |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
166 %!error <type conversion to .* not supported> cast (1, "foobar") |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
167 %!error <type conversion to .* not supported> cast (1, "cell") |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
168 %!error <type conversion to .* not supported> cast (1, "like", {}) |
944fd6fca864
cast.m: Implement syntax with "like" (bug #50854).
Guillaume Flandin <guillaume.offline@gmail.com>
parents:
28886
diff
changeset
|
169 %!error <type conversion to .* not supported> cast (1, "like", struct ()) |