Mercurial > hg > octave-lyh
annotate liboctave/oct-cmplx.h @ 9402:cdfb9ad48080
Add exported symbols
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Fri, 26 Jun 2009 20:49:41 +0100 |
parents | eb63fbe60fab |
children | 7dafdb8b062f |
rev | line source |
---|---|
1648 | 1 /* |
2 | |
8920 | 3 Copyright (C) 1995, 1996, 1997, 2000, 2001, 2004, 2005, 2007, 2008, 2009 |
7017 | 4 John W. Eaton |
1648 | 5 |
6 This file is part of Octave. | |
7 | |
8 Octave is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by the | |
7016 | 10 Free Software Foundation; either version 3 of the License, or (at your |
11 option) any later version. | |
1648 | 12 |
13 Octave is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
7016 | 19 along with Octave; see the file COPYING. If not, see |
20 <http://www.gnu.org/licenses/>. | |
1648 | 21 |
22 */ | |
23 | |
24 #if !defined (octave_oct_cmplx_h) | |
25 #define octave_oct_cmplx_h 1 | |
26 | |
27 #include <complex> | |
28 | |
3504 | 29 typedef std::complex<double> Complex; |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
30 typedef std::complex<float> FloatComplex; |
1648 | 31 |
8751
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
32 // The default comparison of complex number is to compare by abs, then by arg. |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
33 // FIXME: this could be speeded up significantly. |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
34 template <class T> |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
35 inline bool operator < (const std::complex<T>& a, |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
36 const std::complex<T>& b) |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
37 { |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
38 T ax = std::abs (a), bx = std::abs (b); |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
39 return ax < bx || (ax == bx && std::arg (a) < std::arg (b)); |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
40 } |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
41 |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
42 template <class T> |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
43 inline bool operator > (const std::complex<T>& a, |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
44 const std::complex<T>& b) |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
45 { |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
46 T ax = std::abs (a), bx = std::abs (b); |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
47 return ax > bx || (ax == bx && std::arg (a) > std::arg (b)); |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
48 } |
9f7ce4bf7650
optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
49 |
1648 | 50 #endif |
51 | |
52 /* | |
53 ;;; Local Variables: *** | |
54 ;;; mode: C++ *** | |
55 ;;; End: *** | |
56 */ |