annotate libinterp/corefcn/hex2num.cc @ 20939:b17fda023ca6

maint: Use new C++ archetype in more files. Place input validation first in files. Move declaration of retval down in function to be closer to point of usage. Eliminate else clause after if () error. Use "return ovl()" where it makes sense. * find.cc, gammainc.cc, gcd.cc, getgrent.cc, getpwent.cc, givens.cc, graphics.cc, help.cc, hess.cc, hex2num.cc, input.cc, kron.cc, load-path.cc, load-save.cc, lookup.cc, mappers.cc, matrix_type.cc, mgorth.cc, nproc.cc, ordschur.cc, pager.cc, pinv.cc, pr-output.cc, profiler.cc, psi.cc, quad.cc, rcond.cc, regexp.cc, schur.cc, sighandlers.cc, sparse.cc, str2double.cc, strfind.cc, strfns.cc, sub2ind.cc, svd.cc, sylvester.cc, symtab.cc, syscalls.cc, sysdep.cc, time.cc, toplev.cc, tril.cc, tsearch.cc, typecast.cc, urlwrite.cc, utils.cc, variables.cc, __delaunayn__.cc, __eigs__.cc, __glpk__.cc, __magick_read__.cc, __osmesa_print__.cc, __voronoi__.cc, amd.cc, audiodevinfo.cc, audioread.cc, chol.cc, colamd.cc, dmperm.cc, fftw.cc, qr.cc, symbfact.cc, symrcm.cc, ov-bool-mat.cc, ov-cell.cc, ov-class.cc, ov-classdef.cc, ov-fcn-handle.cc, ov-fcn-inline.cc, ov-flt-re-mat.cc, ov-java.cc, ov-null-mat.cc, ov-oncleanup.cc, ov-re-mat.cc, ov-struct.cc, ov-typeinfo.cc, ov-usr-fcn.cc, ov.cc, octave.cc: Use new C++ archetype in more files.
author Rik <rik@octave.org>
date Fri, 18 Dec 2015 15:37:22 -0800
parents 1142cf6abc0d
children 48b2ad5ee801
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
1 /*
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
2
19697
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 17787
diff changeset
3 Copyright (C) 2008-2015 David Bateman
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
4
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
5 This file is part of Octave.
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
6
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
10 option) any later version.
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
11
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
15 for more details.
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
16
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, see
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
19 <http://www.gnu.org/licenses/>.
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
20
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
21 */
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
22
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
23 #ifdef HAVE_CONFIG_H
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
24 #include <config.h>
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
25 #endif
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
26
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
27 #include <algorithm>
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
28
15039
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14501
diff changeset
29 #include "defun.h"
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
30 #include "error.h"
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
31 #include "gripes.h"
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
32 #include "oct-obj.h"
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
33 #include "utils.h"
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
34
15039
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14501
diff changeset
35 DEFUN (hex2num, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
36 "-*- texinfo -*-\n\
20853
1142cf6abc0d 2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents: 20819
diff changeset
37 @deftypefn {} {@var{n} =} hex2num (@var{s})\n\
1142cf6abc0d 2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents: 20819
diff changeset
38 @deftypefnx {} {@var{n} =} hex2num (@var{s}, @var{class})\n\
11553
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
39 Typecast the 16 character hexadecimal character string to an IEEE 754\n\
20172
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
40 double precision number.\n\
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
41 \n\
20172
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
42 If fewer than 16 characters are given the strings are right padded with\n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
43 @qcode{'0'} characters.\n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
44 \n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
45 Given a string matrix, @code{hex2num} treats each row as a separate number.\n\
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
46 \n\
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
47 @example\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9036
diff changeset
48 @group\n\
14360
97883071e8e4 doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
49 hex2num ([\"4005bf0a8b145769\"; \"4024000000000000\"])\n\
97883071e8e4 doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
50 @result{} [2.7183; 10.000]\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9036
diff changeset
51 @end group\n\
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
52 @end example\n\
17178
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
53 \n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17178
diff changeset
54 The optional argument @var{class} can be passed as the string\n\
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17178
diff changeset
55 @qcode{\"single\"} to specify that the given string should be interpreted as\n\
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17178
diff changeset
56 a single precision number. In this case, @var{s} should be an 8 character\n\
20172
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
57 hexadecimal string. For example:\n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17178
diff changeset
58 \n\
17178
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
59 @example\n\
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
60 @group\n\
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
61 hex2num ([\"402df854\"; \"41200000\"], \"single\")\n\
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
62 @result{} [2.7183; 10.000]\n\
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
63 @end group\n\
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
64 @end example\n\
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
65 @seealso{num2hex, hex2dec, dec2hex}\n\
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
66 @end deftypefn")
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
67 {
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
68 int nargin = args.length ();
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
69
17178
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
70 if (nargin < 1 || nargin > 2)
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
71 print_usage ();
20802
8bb38ba1bad6 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20678
diff changeset
72
8bb38ba1bad6 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20678
diff changeset
73 if (nargin == 2 && ! args(1).is_string ())
17178
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
74 error ("hex2num: CLASS must be a string");
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
75
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
76 const charMatrix cmat = args(0).char_matrix_value ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
77 std::string prec = (nargin == 2) ? args(1).string_value () : "double";
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
78 bool is_single = (prec == "single");
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
79 octave_idx_type nchars = (is_single) ? 8 : 16;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
80
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
81 if (cmat.columns () > nchars)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
82 error ("hex2num: S must be no more than %d characters", nchars);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
83 else if (prec != "double" && prec != "single")
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
84 error ("hex2num: CLASS must be either \"double\" or \"single\"");
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
85
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
86 octave_value retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
87 octave_idx_type nr = cmat.rows ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
88 octave_idx_type nc = cmat.columns ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
89
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
90 if (is_single)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
91 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
92 FloatColumnVector m (nr);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
93
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
94 for (octave_idx_type i = 0; i < nr; i++)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
95 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
96 union
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
97 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
98 uint32_t ival;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
99 float dval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
100 } num;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
101
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
102 num.ival = 0;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
103
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
104 for (octave_idx_type j = 0; j < nc; j++)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
105 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
106 unsigned char ch = cmat.elem (i, j);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
107
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
108 if (isxdigit (ch))
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
109 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
110 num.ival <<= 4;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
111 if (ch >= 'a')
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
112 num.ival += static_cast<uint32_t> (ch - 'a' + 10);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
113 else if (ch >= 'A')
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
114 num.ival += static_cast<uint32_t> (ch - 'A' + 10);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
115 else
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
116 num.ival += static_cast<uint32_t> (ch - '0');
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
117 }
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
118 else
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
119 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
120 error ("hex2num: illegal character found in string S");
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
121 break;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
122 }
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
123 }
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
124
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
125 if (nc < nchars)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
126 num.ival <<= (nchars - nc) * 4;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
127
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
128 m(i) = num.dval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
129 }
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
130
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
131 retval = m;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
132 }
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
133 else
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
134 {
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
135 ColumnVector m (nr);
8808
d724487d2c4b hex2num.cc: use union to avoid cast and GCC warning
John W. Eaton <jwe@octave.org>
parents: 8807
diff changeset
136
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
137 for (octave_idx_type i = 0; i < nr; i++)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
138 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
139 union
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
140 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
141 uint64_t ival;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
142 double dval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
143 } num;
13222
82f3a0c27569 fix warnings for uninitialized variables
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
144
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
145 num.ival = 0;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
146
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
147 for (octave_idx_type j = 0; j < nc; j++)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
148 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
149 unsigned char ch = cmat.elem (i, j);
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
150
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
151 if (isxdigit (ch))
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
152 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
153 num.ival <<= 4;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
154 if (ch >= 'a')
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
155 num.ival += static_cast<uint64_t> (ch - 'a' + 10);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
156 else if (ch >= 'A')
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
157 num.ival += static_cast<uint64_t> (ch - 'A' + 10);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
158 else
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
159 num.ival += static_cast<uint64_t> (ch - '0');
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9689
diff changeset
160 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
161 else
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
162 error ("hex2num: illegal character found in string S");
17178
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
163 }
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
164
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
165 if (nc < nchars)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
166 num.ival <<= (nchars - nc) * 4;
17178
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
167
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
168 m(i) = num.dval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
169 }
17178
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
170
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
171 retval = m;
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
172 }
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
173
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
174 return retval;
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
175 }
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
176
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
177 /*
14501
60e5cf354d80 Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14360
diff changeset
178 %!assert (hex2num (["c00";"bff";"000";"3ff";"400"]), [-2:2]')
17178
f010db8b710c hex2num: Add single precision conversion option (bug #39608)
Mike Miller <mtmiller@ieee.org>
parents: 17177
diff changeset
179 %!assert (hex2num (["c00";"bf8";"000";"3f8";"400"], "single"), single([-2:2])')
8808
d724487d2c4b hex2num.cc: use union to avoid cast and GCC warning
John W. Eaton <jwe@octave.org>
parents: 8807
diff changeset
180 */
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
181
15039
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14501
diff changeset
182 DEFUN (num2hex, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
183 "-*- texinfo -*-\n\
20853
1142cf6abc0d 2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents: 20819
diff changeset
184 @deftypefn {} {@var{s} =} num2hex (@var{n})\n\
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
185 Typecast a double or single precision number or vector to a 8 or 16\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
186 character hexadecimal string of the IEEE 754 representation of the number.\n\
20172
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
187 \n\
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
188 For example:\n\
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
189 \n\
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
190 @example\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9036
diff changeset
191 @group\n\
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
192 num2hex ([-1, 1, e, Inf])\n\
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
193 @result{} \"bff0000000000000\n\
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
194 3ff0000000000000\n\
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
195 4005bf0a8b145769\n\
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
196 7ff0000000000000\"\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
197 @end group\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
198 @end example\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
199 \n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
200 If the argument @var{n} is a single precision number or vector, the returned\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
201 string has a length of 8. For example:\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
202 \n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
203 @example\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
204 @group\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
205 num2hex (single ([-1, 1, e, Inf]))\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
206 @result{} \"bf800000\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
207 3f800000\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
208 402df854\n\
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
209 7f800000\"\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9036
diff changeset
210 @end group\n\
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
211 @end example\n\
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
212 @seealso{hex2num, hex2dec, dec2hex}\n\
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
213 @end deftypefn")
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
214 {
20819
f428cbe7576f eliminate unnecessary uses of nargin
John W. Eaton <jwe@octave.org>
parents: 20812
diff changeset
215 if (args.length () != 1)
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
216 print_usage ();
20802
8bb38ba1bad6 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20678
diff changeset
217
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
218 octave_value retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20853
diff changeset
219
20802
8bb38ba1bad6 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20678
diff changeset
220 if (args(0).is_single_type ())
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
221 {
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
222 const FloatColumnVector v (args(0).float_vector_value ());
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
223
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
224 octave_idx_type nchars = 8;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
225 octave_idx_type nr = v.numel ();
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
226 charMatrix m (nr, nchars);
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
227 const float *pv = v.fortran_vec ();
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
228
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
229 for (octave_idx_type i = 0; i < nr; i++)
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
230 {
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
231 union
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
232 {
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
233 uint32_t ival;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
234 float dval;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
235 } num;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
236
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
237 num.dval = *pv++;
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
238
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
239 for (octave_idx_type j = 0; j < nchars; j++)
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
240 {
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
241 unsigned char ch =
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
242 static_cast<char>(num.ival >> ((nchars - 1 - j) * 4) & 0xF);
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
243 if (ch >= 10)
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
244 ch += 'a' - 10;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
245 else
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
246 ch += '0';
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
247
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
248 m.elem (i, j) = ch;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
249 }
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
250 }
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
251
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
252 retval = m;
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
253 }
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
254 else
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
255 {
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
256 const ColumnVector v (args(0).vector_value ());
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
257
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
258 octave_idx_type nchars = 16;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
259 octave_idx_type nr = v.numel ();
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
260 charMatrix m (nr, nchars);
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
261 const double *pv = v.fortran_vec ();
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
262
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
263 for (octave_idx_type i = 0; i < nr; i++)
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
264 {
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
265 union
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
266 {
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
267 uint64_t ival;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
268 double dval;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
269 } num;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
270
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
271 num.dval = *pv++;
8808
d724487d2c4b hex2num.cc: use union to avoid cast and GCC warning
John W. Eaton <jwe@octave.org>
parents: 8807
diff changeset
272
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
273 for (octave_idx_type j = 0; j < nchars; j++)
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
274 {
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
275 unsigned char ch =
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
276 static_cast<char>(num.ival >> ((nchars - 1 - j) * 4) & 0xF);
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
277 if (ch >= 10)
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
278 ch += 'a' - 10;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
279 else
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
280 ch += '0';
8808
d724487d2c4b hex2num.cc: use union to avoid cast and GCC warning
John W. Eaton <jwe@octave.org>
parents: 8807
diff changeset
281
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
282 m.elem (i, j) = ch;
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
283 }
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
284 }
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
285
20678
4b00afb5e9c3 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
286 retval = m;
7639
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
287 }
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
288
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
289 return retval;
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
290 }
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
291
b2fbb393a072 Add the num2hex and hex2num functions
David Bateman <dbateman@free.fr>
parents:
diff changeset
292 /*
14501
60e5cf354d80 Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14360
diff changeset
293 %!assert (num2hex (-2:2), ["c000000000000000";"bff0000000000000";"0000000000000000";"3ff0000000000000";"4000000000000000"])
17177
81d3c4409645 num2hex: Handle single precision argument correctly (bug #39607)
Mike Miller <mtmiller@ieee.org>
parents: 15195
diff changeset
294 %!assert (num2hex (single (-2:2)), ["c0000000";"bf800000";"00000000";"3f800000";"40000000"])
8808
d724487d2c4b hex2num.cc: use union to avoid cast and GCC warning
John W. Eaton <jwe@octave.org>
parents: 8807
diff changeset
295 */