annotate Include/floatobject.h @ 64158:ea0decd2acfb

Fix typo
author Éric Araujo <merwok@netwok.org>
date Wed, 18 Aug 2010 22:35:23 +0000
parents eafe07d40eb7
children 62b61abd02b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
853b736a6a9e Added copyright notice.
Guido van Rossum <guido@python.org>
parents: 6
diff changeset
1
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 /* Float object interface */
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 /*
2129
05360cd616ae The great renaming, phase two: all header files have been updated to
Guido van Rossum <guido@python.org>
parents: 2058
diff changeset
5 PyFloatObject represents a (double precision) floating point number.
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 */
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
13444
5709ddba423c ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 13256
diff changeset
8 #ifndef Py_FLOATOBJECT_H
5709ddba423c ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 13256
diff changeset
9 #define Py_FLOATOBJECT_H
5709ddba423c ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 13256
diff changeset
10 #ifdef __cplusplus
5709ddba423c ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 13256
diff changeset
11 extern "C" {
5709ddba423c ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 13256
diff changeset
12 #endif
5709ddba423c ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 13256
diff changeset
13
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 typedef struct {
13444
5709ddba423c ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 13256
diff changeset
15 PyObject_HEAD
5709ddba423c ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 13256
diff changeset
16 double ob_fval;
2129
05360cd616ae The great renaming, phase two: all header files have been updated to
Guido van Rossum <guido@python.org>
parents: 2058
diff changeset
17 } PyFloatObject;
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 19839
diff changeset
19 PyAPI_DATA(PyTypeObject) PyFloat_Type;
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20
19550
19d271f297dc Make the PyXXX_Check() macros for the numeric types inheritance-aware.
Guido van Rossum <guido@python.org>
parents: 17707
diff changeset
21 #define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
44351
86a2679dca46 #1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT.
Christian Heimes <christian@cheimes.de>
parents: 44260
diff changeset
22 #define PyFloat_CheckExact(op) (Py_TYPE(op) == &PyFloat_Type)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
24 #ifdef Py_NAN
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
25 #define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN)
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
26 #endif
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
27
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
28 #define Py_RETURN_INF(sign) do \
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
29 if (copysign(1., sign) == 1.) { \
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
30 return PyFloat_FromDouble(Py_HUGE_VAL); \
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
31 } else { \
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
32 return PyFloat_FromDouble(-Py_HUGE_VAL); \
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
33 } while(0)
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45145
diff changeset
34
44086
110ff614ec28 Merged revisions 59245-59254 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42334
diff changeset
35 PyAPI_FUNC(double) PyFloat_GetMax(void);
110ff614ec28 Merged revisions 59245-59254 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42334
diff changeset
36 PyAPI_FUNC(double) PyFloat_GetMin(void);
110ff614ec28 Merged revisions 59245-59254 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42334
diff changeset
37 PyAPI_FUNC(PyObject *) PyFloat_GetInfo(void);
110ff614ec28 Merged revisions 59245-59254 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42334
diff changeset
38
41229
1f843890a4e6 Remove the deprecated and useless "pend" argument from
Georg Brandl <georg@python.org>
parents: 40527
diff changeset
39 /* Return Python float from string PyObject. */
1f843890a4e6 Remove the deprecated and useless "pend" argument from
Georg Brandl <georg@python.org>
parents: 40527
diff changeset
40 PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*);
17707
fe4c1034b480 SF bug #422177: Results from .pyc differs from .py
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
41
fe4c1034b480 SF bug #422177: Results from .pyc differs from .py
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
42 /* Return Python float from C double. */
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 19839
diff changeset
43 PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double);
17707
fe4c1034b480 SF bug #422177: Results from .pyc differs from .py
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
44
fe4c1034b480 SF bug #422177: Results from .pyc differs from .py
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
45 /* Extract C double from Python float. The macro version trades safety for
fe4c1034b480 SF bug #422177: Results from .pyc differs from .py
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
46 speed. */
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 19839
diff changeset
47 PyAPI_FUNC(double) PyFloat_AsDouble(PyObject *);
17707
fe4c1034b480 SF bug #422177: Results from .pyc differs from .py
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
48 #define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49
28335
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
50 /* _PyFloat_{Pack,Unpack}{4,8}
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
51 *
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
52 * The struct and pickle (at least) modules need an efficient platform-
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
53 * independent way to store floating-point values as byte strings.
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
54 * The Pack routines produce a string from a C double, and the Unpack
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
55 * routines produce a C double from such a string. The suffix (4 or 8)
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
56 * specifies the number of bytes in the string.
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
57 *
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
58 * On platforms that appear to use (see _PyFloat_Init()) IEEE-754 formats
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
59 * these functions work by copying bits. On other platforms, the formats the
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
60 * 4- byte format is identical to the IEEE-754 single precision format, and
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
61 * the 8-byte format to the IEEE-754 double precision format, although the
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
62 * packing of INFs and NaNs (if such things exist on the platform) isn't
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
63 * handled correctly, and attempting to unpack a string containing an IEEE
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
64 * INF or NaN will raise an exception.
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
65 *
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
66 * On non-IEEE platforms with more precision, or larger dynamic range, than
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
67 * 754 supports, not all values can be packed; on non-IEEE platforms with less
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
68 * precision, or smaller dynamic range, not all values can be unpacked. What
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
69 * happens in such cases is partly accidental (alas).
28335
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
70 */
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
71
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
72 /* The pack routines write 4 or 8 bytes, starting at p. le is a bool
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
73 * argument, true if you want the string in little-endian format (exponent
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
74 * last, at p+3 or p+7), false if you want big-endian format (exponent
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
75 * first, at p).
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
76 * Return value: 0 if all is OK, -1 if error (and an exception is
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
77 * set, most likely OverflowError).
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
78 * There are two problems on non-IEEE platforms:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
79 * 1): What this does is undefined if x is a NaN or infinity.
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
80 * 2): -0.0 and +0.0 produce the same string.
28335
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
81 */
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
82 PyAPI_FUNC(int) _PyFloat_Pack4(double x, unsigned char *p, int le);
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
83 PyAPI_FUNC(int) _PyFloat_Pack8(double x, unsigned char *p, int le);
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
84
40527
195f689af5af Remove PyFloat_AsReprString() and PyFloat_AsString() which should not
Neal Norwitz <nnorwitz@gmail.com>
parents: 34972
diff changeset
85 /* Needed for the old way for marshal to store a floating point number.
195f689af5af Remove PyFloat_AsReprString() and PyFloat_AsString() which should not
Neal Norwitz <nnorwitz@gmail.com>
parents: 34972
diff changeset
86 Returns the string length copied into p, -1 on error.
195f689af5af Remove PyFloat_AsReprString() and PyFloat_AsString() which should not
Neal Norwitz <nnorwitz@gmail.com>
parents: 34972
diff changeset
87 */
195f689af5af Remove PyFloat_AsReprString() and PyFloat_AsString() which should not
Neal Norwitz <nnorwitz@gmail.com>
parents: 34972
diff changeset
88 PyAPI_FUNC(int) _PyFloat_Repr(double x, char *p, size_t len);
195f689af5af Remove PyFloat_AsReprString() and PyFloat_AsString() which should not
Neal Norwitz <nnorwitz@gmail.com>
parents: 34972
diff changeset
89
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 44086
diff changeset
90 /* Used to get the important decimal digits of a double */
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 44086
diff changeset
91 PyAPI_FUNC(int) _PyFloat_Digits(char *buf, double v, int *signum);
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 44086
diff changeset
92 PyAPI_FUNC(void) _PyFloat_DigitsInit(void);
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 44086
diff changeset
93
28335
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
94 /* The unpack routines read 4 or 8 bytes, starting at p. le is a bool
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
95 * argument, true if the string is in little-endian format (exponent
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
96 * last, at p+3 or p+7), false if big-endian (exponent first, at p).
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
97 * Return value: The unpacked double. On error, this is -1.0 and
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
98 * PyErr_Occurred() is true (and an exception is set, most likely
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
99 * OverflowError). Note that on a non-IEEE platform this will refuse
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents: 28335
diff changeset
100 * to unpack a string that represents a NaN or infinity.
28335
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
101 */
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
102 PyAPI_FUNC(double) _PyFloat_Unpack4(const unsigned char *p, int le);
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
103 PyAPI_FUNC(double) _PyFloat_Unpack8(const unsigned char *p, int le);
70003b0cb837 New private API functions _PyFloat_{Pack,Unpack}(4,8}. This is a
Tim Peters <tim.peters@gmail.com>
parents: 24752
diff changeset
104
45145
3d7b84daa34a Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44351
diff changeset
105 /* free list api */
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48364
diff changeset
106 PyAPI_FUNC(int) PyFloat_ClearFreeList(void);
45145
3d7b84daa34a Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44351
diff changeset
107
47393
0da27fdf0192 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 46477
diff changeset
108 /* Format the object based on the format_spec, as defined in PEP 3101
0da27fdf0192 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 46477
diff changeset
109 (Advanced String Formatting). */
0da27fdf0192 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 46477
diff changeset
110 PyAPI_FUNC(PyObject *) _PyFloat_FormatAdvanced(PyObject *obj,
0da27fdf0192 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 46477
diff changeset
111 Py_UNICODE *format_spec,
0da27fdf0192 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 46477
diff changeset
112 Py_ssize_t format_spec_len);
0da27fdf0192 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 46477
diff changeset
113
1329
519c25039c6a * Added support for X11 modules.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
114 #ifdef __cplusplus
519c25039c6a * Added support for X11 modules.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
115 }
519c25039c6a * Added support for X11 modules.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
116 #endif
519c25039c6a * Added support for X11 modules.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
117 #endif /* !Py_FLOATOBJECT_H */