Mercurial > cpython-lru_cache-weakref
annotate Modules/fpetestmodule.c @ 79691:05c8928362ee
Merge __next__ method link fixes with 3.3.
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Fri, 12 Oct 2012 13:46:37 +0300 |
| parents | cab14be0ada1 |
| children |
| rev | line source |
|---|---|
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 /* |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
2 --------------------------------------------------------------------- |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
3 / Copyright (c) 1996. \ |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 | The Regents of the University of California. | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 | All rights reserved. | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 | | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 | Permission to use, copy, modify, and distribute this software for | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 | any purpose without fee is hereby granted, provided that this en- | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 | tire notice is included in all copies of any software which is or | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 | includes a copy or modification of this software and in all | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 | copies of the supporting documentation for such software. | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 | | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 | This work was produced at the University of California, Lawrence | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 | Livermore National Laboratory under contract no. W-7405-ENG-48 | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 | between the U.S. Department of Energy and The Regents of the | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 | University of California for the operation of UC LLNL. | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 | | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 | DISCLAIMER | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 | | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 | This software was prepared as an account of work sponsored by an | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 | agency of the United States Government. Neither the United States | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 | Government nor the University of California nor any of their em- | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 | ployees, makes any warranty, express or implied, or assumes any | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 | liability or responsibility for the accuracy, completeness, or | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 | usefulness of any information, apparatus, product, or process | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 | disclosed, or represents that its use would not infringe | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 | privately-owned rights. Reference herein to any specific commer- | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 | cial products, process, or service by trade name, trademark, | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 | manufacturer, or otherwise, does not necessarily constitute or | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 | imply its endorsement, recommendation, or favoring by the United | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 | States Government or the University of California. The views and | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 | opinions of authors expressed herein do not necessarily state or | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 | reflect those of the United States Government or the University | |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 | of California, and shall not be used for advertising or product | |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
35 \ endorsement purposes. / |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
36 --------------------------------------------------------------------- |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 */ |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 /* |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
40 Floating point exception test module. |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 */ |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 #include "Python.h" |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 static PyObject *fpe_error; |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
47 |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
48 PyMODINIT_FUNC PyInit_fpetest(void); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 static PyObject *test(PyObject *self,PyObject *args); |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
50 static double db0(double); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
51 static double overflow(double); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
52 static double nest1(int, double); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
53 static double nest2(int, double); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 static double nest3(double); |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
55 static void printerr(double); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 static PyMethodDef fpetest_methods[] = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
58 {"test", (PyCFunction) test, METH_VARARGS}, |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 {0,0} |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 }; |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 static PyObject *test(PyObject *self,PyObject *args) |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 { |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
64 double r; |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
66 fprintf(stderr,"overflow"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
67 r = overflow(1.e160); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
68 printerr(r); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
69 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
70 fprintf(stderr,"\ndiv by 0"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
71 r = db0(0.0); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
72 printerr(r); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
73 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
74 fprintf(stderr,"\nnested outer"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
75 r = nest1(0, 0.0); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
76 printerr(r); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
78 fprintf(stderr,"\nnested inner"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
79 r = nest1(1, 1.0); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
80 printerr(r); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
81 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
82 fprintf(stderr,"\ntrailing outer"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
83 r = nest1(2, 2.0); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
84 printerr(r); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
85 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
86 fprintf(stderr,"\nnested prior"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
87 r = nest2(0, 0.0); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
88 printerr(r); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
90 fprintf(stderr,"\nnested interior"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
91 r = nest2(1, 1.0); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
92 printerr(r); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
94 fprintf(stderr,"\nnested trailing"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
95 r = nest2(2, 2.0); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
96 printerr(r); |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
97 |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
98 Py_INCREF (Py_None); |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
99 return Py_None; |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
100 } |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
101 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
102 static void printerr(double r) |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
103 { |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
104 if(r == 3.1416){ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
105 fprintf(stderr,"\tPASS\n"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
106 PyErr_Print(); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
107 }else{ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
108 fprintf(stderr,"\tFAIL\n"); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
109 } |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
110 PyErr_Clear(); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
111 } |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
112 |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
113 static double nest1(int i, double x) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
114 { |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
115 double a = 1.0; |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
116 |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
117 PyFPE_START_PROTECT("Division by zero, outer zone", return 3.1416) |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
118 if(i == 0){ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
119 a = 1./x; |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
120 }else if(i == 1){ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
121 /* This (following) message is never seen. */ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
122 PyFPE_START_PROTECT("Division by zero, inner zone", return 3.1416) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 a = 1./(1. - x); |
|
5197
74c12704a0bd
New form of PyFPE_END_PROTECT macro.
Guido van Rossum <guido@python.org>
parents:
5147
diff
changeset
|
124 PyFPE_END_PROTECT(a) |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
125 }else if(i == 2){ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
126 a = 1./(2. - x); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
127 } |
|
5197
74c12704a0bd
New form of PyFPE_END_PROTECT macro.
Guido van Rossum <guido@python.org>
parents:
5147
diff
changeset
|
128 PyFPE_END_PROTECT(a) |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
129 |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
130 return a; |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
131 } |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
132 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
133 static double nest2(int i, double x) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
134 { |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
135 double a = 1.0; |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
136 PyFPE_START_PROTECT("Division by zero, prior error", return 3.1416) |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
137 if(i == 0){ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
138 a = 1./x; |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
139 }else if(i == 1){ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
140 a = nest3(x); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
141 }else if(i == 2){ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
142 a = 1./(2. - x); |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
143 } |
|
5197
74c12704a0bd
New form of PyFPE_END_PROTECT macro.
Guido van Rossum <guido@python.org>
parents:
5147
diff
changeset
|
144 PyFPE_END_PROTECT(a) |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
145 return a; |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
146 } |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
147 |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
148 static double nest3(double x) |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
149 { |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
150 double result; |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
151 /* This (following) message is never seen. */ |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
152 PyFPE_START_PROTECT("Division by zero, nest3 error", return 3.1416) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
153 result = 1./(1. - x); |
|
5197
74c12704a0bd
New form of PyFPE_END_PROTECT macro.
Guido van Rossum <guido@python.org>
parents:
5147
diff
changeset
|
154 PyFPE_END_PROTECT(result) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
155 return result; |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 } |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
158 static double db0(double x) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
159 { |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
160 double a; |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
161 PyFPE_START_PROTECT("Division by zero", return 3.1416) |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
162 a = 1./x; |
|
5197
74c12704a0bd
New form of PyFPE_END_PROTECT macro.
Guido van Rossum <guido@python.org>
parents:
5147
diff
changeset
|
163 PyFPE_END_PROTECT(a) |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
164 return a; |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
165 } |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
166 |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
167 static double overflow(double b) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
168 { |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
169 double a; |
|
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
170 PyFPE_START_PROTECT("Overflow", return 3.1416) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
171 a = b*b; |
|
5197
74c12704a0bd
New form of PyFPE_END_PROTECT macro.
Guido van Rossum <guido@python.org>
parents:
5147
diff
changeset
|
172 PyFPE_END_PROTECT(a) |
|
5147
b227b9af5f53
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Guido van Rossum <guido@python.org>
parents:
5120
diff
changeset
|
173 return a; |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
174 } |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
175 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
176 static struct PyModuleDef fpetestmodule = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
177 PyModuleDef_HEAD_INIT, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
178 "fpetest", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
179 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
180 -1, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
181 fpetest_methods, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
182 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
183 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
184 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
185 NULL |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
186 }; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
187 |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
188 PyMODINIT_FUNC PyInit_fpetest(void) |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
189 { |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
190 PyObject *m, *d; |
|
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
191 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
192 m = PyModule_Create(&fpetestmodule); |
|
36324
1af7f719ed28
Check return result from Py_InitModule*(). This API can fail.
Neal Norwitz <nnorwitz@gmail.com>
parents:
24471
diff
changeset
|
193 if (m == NULL) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
194 return NULL; |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
195 d = PyModule_GetDict(m); |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5197
diff
changeset
|
196 fpe_error = PyErr_NewException("fpetest.error", NULL, NULL); |
|
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5197
diff
changeset
|
197 if (fpe_error != NULL) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
47580
diff
changeset
|
198 PyDict_SetItemString(d, "error", fpe_error); |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
199 return m; |
|
5120
a48f3678f9e1
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
200 } |
