Mercurial > hg > octave-nkf
annotate liboctave/numeric/Quad.h @ 20830:b65888ec820e draft default tip gccjit
dmalcom gcc jit import
author | Stefan Mahr <dac922@gmx.de> |
---|---|
date | Fri, 27 Feb 2015 16:59:36 +0100 |
parents | 4197fc428c7d |
children |
rev | line source |
---|---|
3 | 1 /* |
2 | |
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
3 Copyright (C) 1993-2015 John W. Eaton |
3 | 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 the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
3 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
3 | 20 |
21 */ | |
22 | |
382 | 23 #if !defined (octave_Quad_h) |
24 #define octave_Quad_h 1 | |
25 | |
1536 | 26 #include <cfloat> |
27 | |
1296 | 28 #include "dColVector.h" |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
29 #include "fColVector.h" |
7231 | 30 #include "lo-math.h" |
3 | 31 |
32 typedef double (*integrand_fcn) (double x); | |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
33 typedef float (*float_integrand_fcn) (float x); |
3 | 34 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
35 // FIXME: would be nice to not have to have this global variable. |
260 | 36 // Nonzero means an error occurred in the calculation of the integrand |
37 // function, and the user wants us to quit. | |
6108 | 38 extern OCTAVE_API int quad_integration_error; |
260 | 39 |
3998 | 40 #include "Quad-opts.h" |
289 | 41 |
1859 | 42 class |
6108 | 43 OCTAVE_API |
1859 | 44 Quad : public Quad_options |
3 | 45 { |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
46 public: |
3 | 47 |
1859 | 48 Quad (integrand_fcn fcn) |
11501
331fcc41ca23
data member initialization fixes
John W. Eaton <jwe@octave.org>
parents:
10312
diff
changeset
|
49 : Quad_options (), f (fcn), ff () { } |
1859 | 50 |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
51 Quad (float_integrand_fcn fcn) |
11501
331fcc41ca23
data member initialization fixes
John W. Eaton <jwe@octave.org>
parents:
10312
diff
changeset
|
52 : Quad_options (), f (), ff (fcn) { } |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
53 |
2425 | 54 virtual ~Quad (void) { } |
2424 | 55 |
1528 | 56 virtual double integrate (void) |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
57 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
58 octave_idx_type ier, neval; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
59 double abserr; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
60 return do_integrate (ier, neval, abserr); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
61 } |
3 | 62 |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
63 virtual float float_integrate (void) |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
64 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
65 octave_idx_type ier, neval; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
66 float abserr; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
67 return do_integrate (ier, neval, abserr); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
68 } |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
69 |
5275 | 70 virtual double integrate (octave_idx_type& ier) |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
71 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
72 octave_idx_type neval; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
73 double abserr; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
74 return do_integrate (ier, neval, abserr); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
75 } |
1528 | 76 |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
77 virtual float float_integrate (octave_idx_type& ier) |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
78 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
79 octave_idx_type neval; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
80 float abserr; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
81 return do_integrate (ier, neval, abserr); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
82 } |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
83 |
5275 | 84 virtual double integrate (octave_idx_type& ier, octave_idx_type& neval) |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
85 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
86 double abserr; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
87 return do_integrate (ier, neval, abserr); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
88 } |
1528 | 89 |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
90 virtual float float_integrate (octave_idx_type& ier, octave_idx_type& neval) |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
91 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
92 float abserr; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
93 return do_integrate (ier, neval, abserr); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
94 } |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
95 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
96 virtual double integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
97 double& abserr) |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
98 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
99 return do_integrate (ier, neval, abserr); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
100 } |
3511 | 101 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
102 virtual float float_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
103 float& abserr) |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
104 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
105 return do_integrate (ier, neval, abserr); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
106 } |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
107 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
108 virtual double do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
109 double& abserr) = 0; |
3 | 110 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
111 virtual float do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
112 float& abserr) = 0; |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
113 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
114 protected: |
3 | 115 |
116 integrand_fcn f; | |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
117 float_integrand_fcn ff; |
3 | 118 }; |
119 | |
1859 | 120 class |
6108 | 121 OCTAVE_API |
1859 | 122 DefQuad : public Quad |
3 | 123 { |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
124 public: |
3 | 125 |
1859 | 126 DefQuad (integrand_fcn fcn) |
127 : Quad (fcn), lower_limit (0.0), upper_limit (1.0), singularities () { } | |
1528 | 128 |
1859 | 129 DefQuad (integrand_fcn fcn, double ll, double ul) |
130 : Quad (fcn), lower_limit (ll), upper_limit (ul), singularities () { } | |
1528 | 131 |
132 DefQuad (integrand_fcn fcn, double ll, double ul, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
133 const ColumnVector& sing) |
1859 | 134 : Quad (fcn), lower_limit (ll), upper_limit (ul), |
135 singularities (sing) { } | |
1528 | 136 |
1859 | 137 DefQuad (integrand_fcn fcn, const ColumnVector& sing) |
138 : Quad (fcn), lower_limit (0.0), upper_limit (1.0), | |
139 singularities (sing) { } | |
1528 | 140 |
2424 | 141 ~DefQuad (void) { } |
142 | |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
143 double do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
144 double& abserr); |
3 | 145 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
146 float do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
147 float& abserr); |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
148 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
149 private: |
3 | 150 |
151 double lower_limit; | |
152 double upper_limit; | |
153 | |
1528 | 154 ColumnVector singularities; |
3 | 155 }; |
156 | |
1859 | 157 class |
6108 | 158 OCTAVE_API |
1859 | 159 IndefQuad : public Quad |
3 | 160 { |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
161 public: |
3 | 162 |
163 enum IntegralType { bound_to_inf, neg_inf_to_bound, doubly_infinite }; | |
164 | |
1859 | 165 IndefQuad (integrand_fcn fcn) |
11501
331fcc41ca23
data member initialization fixes
John W. Eaton <jwe@octave.org>
parents:
10312
diff
changeset
|
166 : Quad (fcn), bound (0.0), type (bound_to_inf), integration_error (0) { } |
1528 | 167 |
1859 | 168 IndefQuad (integrand_fcn fcn, double b, IntegralType t) |
11501
331fcc41ca23
data member initialization fixes
John W. Eaton <jwe@octave.org>
parents:
10312
diff
changeset
|
169 : Quad (fcn), bound (b), type (t), integration_error (0) { } |
1528 | 170 |
2424 | 171 ~IndefQuad (void) { } |
172 | |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
173 double do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
174 double& abserr); |
3 | 175 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
176 float do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
177 float& abserr); |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
178 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
179 private: |
3 | 180 |
181 double bound; | |
182 IntegralType type; | |
1859 | 183 int integration_error; |
3 | 184 }; |
185 | |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
186 class |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
187 OCTAVE_API |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
188 FloatDefQuad : public Quad |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
189 { |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
190 public: |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
191 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
192 FloatDefQuad (float_integrand_fcn fcn) |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
193 : Quad (fcn), lower_limit (0.0), upper_limit (1.0), singularities () { } |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
194 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
195 FloatDefQuad (float_integrand_fcn fcn, float ll, float ul) |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
196 : Quad (fcn), lower_limit (ll), upper_limit (ul), singularities () { } |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
197 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
198 FloatDefQuad (float_integrand_fcn fcn, float ll, float ul, |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
199 const FloatColumnVector& sing) |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
200 : Quad (fcn), lower_limit (ll), upper_limit (ul), |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
201 singularities (sing) { } |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
202 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
203 FloatDefQuad (float_integrand_fcn fcn, const FloatColumnVector& sing) |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
204 : Quad (fcn), lower_limit (0.0), upper_limit (1.0), |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
205 singularities (sing) { } |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
206 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
207 ~FloatDefQuad (void) { } |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
208 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
209 double do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
210 double& abserr); |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
211 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
212 float do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
213 float& abserr); |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
214 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
215 private: |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
216 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
217 float lower_limit; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
218 float upper_limit; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
219 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
220 FloatColumnVector singularities; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
221 }; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
222 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
223 class |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
224 OCTAVE_API |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
225 FloatIndefQuad : public Quad |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
226 { |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
227 public: |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
228 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
229 enum IntegralType { bound_to_inf, neg_inf_to_bound, doubly_infinite }; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
230 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
231 FloatIndefQuad (float_integrand_fcn fcn) |
11501
331fcc41ca23
data member initialization fixes
John W. Eaton <jwe@octave.org>
parents:
10312
diff
changeset
|
232 : Quad (fcn), bound (0.0), type (bound_to_inf), integration_error (0) { } |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
233 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
234 FloatIndefQuad (float_integrand_fcn fcn, double b, IntegralType t) |
11501
331fcc41ca23
data member initialization fixes
John W. Eaton <jwe@octave.org>
parents:
10312
diff
changeset
|
235 : Quad (fcn), bound (b), type (t), integration_error (0) { } |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
236 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
237 ~FloatIndefQuad (void) { } |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
238 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
239 double do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
240 double& abserr); |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
241 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
242 float do_integrate (octave_idx_type& ier, octave_idx_type& neval, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
243 float& abserr); |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
244 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
245 private: |
7805
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
246 |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
247 float bound; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
248 IntegralType type; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
249 int integration_error; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
250 }; |
62affb34e648
Make quad work with single precision
David Bateman <dbateman@free.fr>
parents:
7231
diff
changeset
|
251 |
3 | 252 #endif |