GNU Octave
4.4.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
ls-utils.cc
Go to the documentation of this file.
1
/*
2
3
Copyright (C) 2003-2018 John W. Eaton
4
5
This file is part of Octave.
6
7
Octave is free software: you can redistribute it and/or modify it
8
under the terms of the GNU General Public License as published by
9
the Free Software Foundation, either version 3 of the License, or
10
(at your option) any later version.
11
12
Octave is distributed in the hope that it will be useful, but
13
WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with Octave; see the file COPYING. If not, see
19
<https://www.gnu.org/licenses/>.
20
21
*/
22
23
#if defined (HAVE_CONFIG_H)
24
# include "config.h"
25
#endif
26
27
#include "
data-conv.h
"
28
29
#include "
ls-utils.h
"
30
31
// MAX_VAL and MIN_VAL are assumed to have integral values even though
32
// they are stored in doubles.
33
34
save_type
35
get_save_type
(
double
/* max_val */
,
double
/* min_val */
)
36
{
37
save_type
st =
LS_DOUBLE
;
38
39
// Matlab doesn't seem to load the UINT32 type correctly, so let's
40
// avoid it (and the other unsigned types, even though they may not
41
// have the same problem. And apparently, there are problems with
42
// other smaller types as well. If we avoid them all, then maybe we
43
// will avoid problems. Unfortunately, we won't be able to save
44
// space...
45
46
// if (max_val < 256 && min_val > -1)
47
// st = LS_U_CHAR;
48
// else if (max_val < 65536 && min_val > -1)
49
// st = LS_U_SHORT;
50
// else if (max_val < 4294967295UL && min_val > -1)
51
// st = LS_U_INT;
52
// else if (max_val < 128 && min_val >= -128)
53
// st = LS_CHAR;
54
// else if (max_val < 32768 && min_val >= -32768)
55
// st = LS_SHORT;
56
// else if (max_val <= 2147483647L && min_val >= -2147483647L)
57
// st = LS_INT;
58
59
return
st;
60
}
61
62
save_type
63
get_save_type
(
float
/* max_val */
,
float
/* min_val */
)
64
{
65
save_type
st =
LS_FLOAT
;
66
67
// Matlab doesn't seem to load the UINT32 type correctly, so let's
68
// avoid it (and the other unsigned types, even though they may not
69
// have the same problem. And apparently, there are problems with
70
// other smaller types as well. If we avoid them all, then maybe we
71
// will avoid problems. Unfortunately, we won't be able to save
72
// space...
73
74
// if (max_val < 256 && min_val > -1)
75
// st = LS_U_CHAR;
76
// else if (max_val < 65536 && min_val > -1)
77
// st = LS_U_SHORT;
78
// else if (max_val < 4294967295UL && min_val > -1)
79
// st = LS_U_INT;
80
// else if (max_val < 128 && min_val >= -128)
81
// st = LS_CHAR;
82
// else if (max_val < 32768 && min_val >= -32768)
83
// st = LS_SHORT;
84
// else if (max_val <= 2147483647L && min_val >= -2147483647L)
85
// st = LS_INT;
86
87
return
st;
88
}
save_type
save_type
Definition:
data-conv.h:85
get_save_type
save_type get_save_type(double, double)
Definition:
ls-utils.cc:35
ls-utils.h
LS_DOUBLE
Definition:
data-conv.h:94
LS_FLOAT
Definition:
data-conv.h:93
data-conv.h
libinterp
corefcn
ls-utils.cc
Generated on Sat Sep 1 2018 14:01:39 for GNU Octave by
1.8.14