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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
7 ##
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
8 ## This file is part of Octave.
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
14 ##
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
19 ##
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6403
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
25
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
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
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
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
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
41 ## @example
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
42 ## @group
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
43 ## "double"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
44 ## "single"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
45 ## "logical"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
46 ## "char"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
47 ## "int8"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
48 ## "int16"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
49 ## "int32"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
50 ## "int64"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
51 ## "uint8"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
52 ## "uint16"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
53 ## "uint32"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
54 ## "uint64"
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
55 ## @end group
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
56 ## @end example
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
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
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
59 ##
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
60 ## Examples:
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
61 ##
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
62 ## @example
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
63 ## @group
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
64 ## cast (-5, "uint8")
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
65 ## @result{} 0
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
66 ## cast (300, "int8")
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
67 ## @result{} 127
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
68 ## @end group
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
69 ## @end example
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
85 ## @end deftypefn
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
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
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
90 print_usage ();
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
91 endif
9b163d6c1de7 cast.m: Improve documentation.
Rik <rik@octave.org>
parents: 17744
diff changeset
92
19173
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
93 if (! ischar (type))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
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
5011ac2fc23d [project @ 2007-03-13 14:45:51 by jwe]
jwe
parents:
diff changeset
132 endfunction
17338
1c89599167a6 maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents: 15466
diff changeset
133
19173
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
134
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
135 %!assert (cast (single (2.5), "double"), 2.5)
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
136 %!assert (cast (2.5, "single"), single (2.5))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
137 %!assert (cast ([5 0 -5], "logical"), [true false true])
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
138 %!assert (cast ([65 66 67], "char"), "ABC")
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
139 %!assert (cast ([-2.5 1.1 2.5], "int8"), int8 ([-3 1 3]))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
140 %!assert (cast ([-2.5 1.1 2.5], "uint8"), uint8 ([0 1 3]))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
141 %!assert (cast ([-2.5 1.1 2.5], "int16"), int16 ([-3 1 3]))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
142 %!assert (cast ([-2.5 1.1 2.5], "uint16"), uint16 ([0 1 3]))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
143 %!assert (cast ([-2.5 1.1 2.5], "int32"), int32 ([-3 1 3]))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
144 %!assert (cast ([-2.5 1.1 2.5], "uint32"), uint32 ([0 1 3]))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
145 %!assert (cast ([-2.5 1.1 2.5], "int64"), int64 ([-3 1 3]))
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
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
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
158
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
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
3d24778a8b12 cast.m: Overhaul function.
Rik <rik@octave.org>
parents: 18291
diff changeset
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 ())