Mercurial > octave
annotate liboctave/util/lo-ieee.h @ 33634:4a70f390c85e default tip @
maint: Merge stable to default.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Tue, 28 May 2024 15:25:54 +0200 |
parents | a7ccec7751e5 |
children |
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 // |
32632
2e484f9f1f18
maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
31771
diff
changeset
|
3 // Copyright (C) 1996-2024 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
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/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
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 //////////////////////////////////////////////////////////////////////// |
1967 | 25 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
26 #if ! defined (octave_lo_ieee_h) |
17822
ebb3ef964372
maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
27 #define octave_lo_ieee_h 1 |
1967 | 28 |
30642
b7df783dbe43
Include "octave-config.h" before other headers (bug #61812).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
29 #include "octave-config.h" |
23622
0abe8d85ecce
Use isnan, isinf, isfinite, signbit functions from C++ std lib.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
30 |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
31 #if defined (__cplusplus) |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
32 # include <cmath> |
21244
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
21066
diff
changeset
|
33 |
4072 | 34 extern "C" { |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
35 #else |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
36 # include <math.h> |
4072 | 37 #endif |
38 | |
4102 | 39 /* Octave's idea of infinity. */ |
18540
89bd70fae066
fix initialization problem for Inf, NaN, and NA values (bug #41667)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
40 #define octave_Inf (lo_ieee_inf_value ()) |
4102 | 41 |
42 /* Octave's idea of a missing value. */ | |
18540
89bd70fae066
fix initialization problem for Inf, NaN, and NA values (bug #41667)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
43 #define octave_NA (lo_ieee_na_value ()) |
4102 | 44 |
45 /* Octave's idea of not a number. */ | |
18540
89bd70fae066
fix initialization problem for Inf, NaN, and NA values (bug #41667)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
46 #define octave_NaN (lo_ieee_nan_value ()) |
4102 | 47 |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
48 /* Octave's idea of infinity. */ |
18540
89bd70fae066
fix initialization problem for Inf, NaN, and NA values (bug #41667)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
49 #define octave_Float_Inf (lo_ieee_float_inf_value ()) |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
50 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
51 /* Octave's idea of a missing value. */ |
18540
89bd70fae066
fix initialization problem for Inf, NaN, and NA values (bug #41667)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
52 #define octave_Float_NA (lo_ieee_float_na_value ()) |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
53 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
54 /* Octave's idea of not a number. */ |
18540
89bd70fae066
fix initialization problem for Inf, NaN, and NA values (bug #41667)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
55 #define octave_Float_NaN (lo_ieee_float_nan_value ()) |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
56 |
21066
258c787cd9ce
maint: Use "FIXME:" consistently in code base.
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
57 /* FIXME: This code assumes that a double has twice the |
258c787cd9ce
maint: Use "FIXME:" consistently in code base.
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
58 number of bits as an int */ |
5388 | 59 |
30185
603a83d18107
maint: Backed out changeset 0cd93ca0b237
Rik <rik@octave.org>
parents:
30176
diff
changeset
|
60 typedef union |
30394
f3f3e3793fb5
maint: style check C++ files in liboctave/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30185
diff
changeset
|
61 { |
4075 | 62 double value; |
63 unsigned int word[2]; | |
30185
603a83d18107
maint: Backed out changeset 0cd93ca0b237
Rik <rik@octave.org>
parents:
30176
diff
changeset
|
64 } lo_ieee_double; |
4075 | 65 |
30185
603a83d18107
maint: Backed out changeset 0cd93ca0b237
Rik <rik@octave.org>
parents:
30176
diff
changeset
|
66 typedef union |
30394
f3f3e3793fb5
maint: style check C++ files in liboctave/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30185
diff
changeset
|
67 { |
7814
87865ed7405f
Second set of single precision test code and fix of resulting bugs
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
68 float value; |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
69 unsigned int word; |
30185
603a83d18107
maint: Backed out changeset 0cd93ca0b237
Rik <rik@octave.org>
parents:
30176
diff
changeset
|
70 } lo_ieee_float; |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
71 |
6108 | 72 extern OCTAVE_API void octave_ieee_init (void); |
1967 | 73 |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
74 #if defined (__cplusplus) |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
75 OCTAVE_DEPRECATED (10, "use std::isnan instead") |
23622
0abe8d85ecce
Use isnan, isinf, isfinite, signbit functions from C++ std lib.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
76 inline int __lo_ieee_isnan (double x) { return std::isnan (x); } |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
77 OCTAVE_DEPRECATED (10, "use std::isfinite instead") |
30088
fca57eaad2d4
maint: deprecate lo_ieee_finite and replace with lo_ieee_isfinite.
Rik <rik@octave.org>
parents:
29986
diff
changeset
|
78 inline int __lo_ieee_isfinite (double x) { return std::isfinite (x); } |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
79 OCTAVE_DEPRECATED (10, "use std::isinf instead") |
23622
0abe8d85ecce
Use isnan, isinf, isfinite, signbit functions from C++ std lib.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
80 inline int __lo_ieee_isinf (double x) { return std::isinf (x); } |
4072 | 81 |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
82 OCTAVE_DEPRECATED (10, "use std::signbit instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
83 inline int __lo_ieee_signbit (double x) { return std::signbit (x); } |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
84 |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
85 OCTAVE_DEPRECATED (10, "use std::isnan instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
86 inline int __lo_ieee_float_isnan (float x) { return std::isnan (x); } |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
87 OCTAVE_DEPRECATED (10, "use std::isfinite instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
88 inline int __lo_ieee_float_isfinite (float x) { return std::isfinite (x); } |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
89 OCTAVE_DEPRECATED (10, "use std::isinf instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
90 inline int __lo_ieee_float_isinf (float x) { return std::isinf (x); } |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
91 |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
92 OCTAVE_DEPRECATED (10, "use std::signbit instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
93 inline int __lo_ieee_float_signbit (float x) { return std::signbit (x); } |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
94 #else |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
95 OCTAVE_DEPRECATED (10, "use isnan instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
96 inline int __lo_ieee_isnan (double x) { return isnan (x); } |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
97 OCTAVE_DEPRECATED (10, "use isfinite instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
98 inline int __lo_ieee_isfinite (double x) { return isfinite (x); } |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
99 OCTAVE_DEPRECATED (10, "use isinf instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
100 inline int __lo_ieee_isinf (double x) { return isinf (x); } |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
101 |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
102 OCTAVE_DEPRECATED (10, "use signbit instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
103 inline int __lo_ieee_signbit (double x) { return signbit (x); } |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
104 |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
105 OCTAVE_DEPRECATED (10, "use isnan instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
106 inline int __lo_ieee_float_isnan (float x) { return isnan (x); } |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
107 OCTAVE_DEPRECATED (10, "use isfinite instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
108 inline int __lo_ieee_float_isfinite (float x) { return isfinite (x); } |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
109 OCTAVE_DEPRECATED (10, "use isinf instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
110 inline int __lo_ieee_float_isinf (float x) { return isinf (x); } |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
111 |
32857
00e493a27de2
Deprecate lo_ieee_ functions that are part of C99 or C++11.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32856
diff
changeset
|
112 OCTAVE_DEPRECATED (10, "use signbit instead") |
32855
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
113 inline int __lo_ieee_float_signbit (float x) { return signbit (x); } |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
114 #endif |
47e095a78a97
lo-ieee.h: Restore compatibility with C.
Markus Mützel <markus.muetzel@gmx.de>
parents:
32632
diff
changeset
|
115 |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
116 extern OCTAVE_API int __lo_ieee_is_NA (double); |
4075 | 117 |
6108 | 118 extern OCTAVE_API double lo_ieee_inf_value (void); |
119 extern OCTAVE_API double lo_ieee_na_value (void); | |
120 extern OCTAVE_API double lo_ieee_nan_value (void); | |
4102 | 121 |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
122 extern OCTAVE_API int __lo_ieee_float_is_NA (float); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
123 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
124 extern OCTAVE_API float lo_ieee_float_inf_value (void); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
125 extern OCTAVE_API float lo_ieee_float_na_value (void); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
126 extern OCTAVE_API float lo_ieee_float_nan_value (void); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
127 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21723
diff
changeset
|
128 #if defined (__cplusplus) |
4072 | 129 } |
2522 | 130 #endif |
131 | |
32861
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
132 #define lo_ieee_isnan(x) \ |
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
133 (sizeof (x) == sizeof (float) \ |
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
134 ? __lo_ieee_float_isnan (x) : __lo_ieee_isnan (x)) |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
135 |
32861
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
136 #define lo_ieee_isfinite(x) \ |
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
137 (sizeof (x) == sizeof (float) \ |
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
138 ? __lo_ieee_float_isfinite (x) : __lo_ieee_isfinite (x)) |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
139 |
32861
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
140 #define lo_ieee_isinf(x) \ |
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
141 (sizeof (x) == sizeof (float) \ |
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
142 ? __lo_ieee_float_isinf (x) : __lo_ieee_isinf (x)) |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
143 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
144 #define lo_ieee_is_NA(x) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
145 (sizeof (x) == sizeof (float) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
146 ? __lo_ieee_float_is_NA (x) : __lo_ieee_is_NA (x)) |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
147 |
32861
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
148 #define lo_ieee_signbit(x) \ |
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
149 (sizeof (x) == sizeof (float) \ |
a7ccec7751e5
Backed out changeset e752cf764951
Markus Mützel <markus.muetzel@gmx.de>
parents:
32860
diff
changeset
|
150 ? __lo_ieee_float_signbit (x) : __lo_ieee_signbit (x)) |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
151 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21723
diff
changeset
|
152 #if defined (__cplusplus) |
14810
d40349493d87
provide template version of octave_NA
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
153 |
31605
e88a07dec498
maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents:
30642
diff
changeset
|
154 OCTAVE_BEGIN_NAMESPACE(octave) |
e88a07dec498
maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents:
30642
diff
changeset
|
155 |
31607
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
156 template <typename T> |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
157 struct numeric_limits |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
158 { |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
159 public: |
31771
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
160 static T NA () { return static_cast<T> (0); } |
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
161 static T NaN () { return static_cast<T> (0); } |
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
162 static T Inf () { return static_cast<T> (0); } |
31607
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
163 }; |
14810
d40349493d87
provide template version of octave_NA
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
164 |
31607
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
165 template <> |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
166 struct numeric_limits<double> |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
167 { |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
168 public: |
31771
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
169 static double NA () { return octave_NA; } |
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
170 static double NaN () { return octave_NaN; } |
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
171 static double Inf () { return octave_Inf; } |
31607
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
172 }; |
21723
bae585228161
use namespace for numeric_limits
John W. Eaton <jwe@octave.org>
parents:
21721
diff
changeset
|
173 |
31607
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
174 template <> |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
175 struct numeric_limits<float> |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
176 { |
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
177 public: |
31771
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
178 static float NA () { return octave_Float_NA; } |
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
179 static float NaN () { return octave_Float_NaN; } |
21f9b34eb893
maint: Eliminate "(void)" in C++ function prototypes/declarations.
Rik <rik@octave.org>
parents:
31707
diff
changeset
|
180 static float Inf () { return octave_Float_Inf; } |
31607
aac27ad79be6
maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents:
31605
diff
changeset
|
181 }; |
31605
e88a07dec498
maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents:
30642
diff
changeset
|
182 |
e88a07dec498
maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents:
30642
diff
changeset
|
183 OCTAVE_END_NAMESPACE(octave) |
14810
d40349493d87
provide template version of octave_NA
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
184 |
1967 | 185 #endif |
14810
d40349493d87
provide template version of octave_NA
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
186 |
d40349493d87
provide template version of octave_NA
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
187 #endif |