Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
05bc4af4
Commit
05bc4af4
authored
Feb 21, 1997
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Lee's next version. Careful: this now dumps core for me on SGI IRIX 5.3.
Lee is wondering whether to withdraw his patchs. Sigh.
parent
ad183bbf
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
76 additions
and
118 deletions
+76
-118
Modules/fpetestmodule.c
Modules/fpetestmodule.c
+76
-118
No files found.
Modules/fpetestmodule.c
View file @
05bc4af4
...
...
@@ -46,11 +46,12 @@
static
PyObject
*
fpe_error
;
void
initfpetest
(
void
);
static
PyObject
*
test
(
PyObject
*
self
,
PyObject
*
args
);
static
int
db0
(
void
);
static
int
overflow
(
void
);
static
int
nest1
(
double
);
static
int
nest2
(
double
);
static
double
db0
(
double
);
static
double
overflow
(
double
);
static
double
nest1
(
int
,
double
);
static
double
nest2
(
int
,
double
);
static
double
nest3
(
double
);
static
void
printerr
(
double
);
static
PyMethodDef
fpetest_methods
[]
=
{
{
"test"
,
(
PyCFunction
)
test
,
1
},
...
...
@@ -59,159 +60,116 @@ static PyMethodDef fpetest_methods[] = {
static
PyObject
*
test
(
PyObject
*
self
,
PyObject
*
args
)
{
int
i
=
0
,
r
;
double
r
;
fprintf
(
stderr
,
"Test trapping overflow
\n
"
);
r
=
overflow
();
if
(
r
){
fprintf
(
stderr
,
"(Note: No exception was raised.)
\n
"
);
PyErr_Clear
();
}
else
{
fprintf
(
stderr
,
"Trapped:: "
);
PyErr_Print
();
PyErr_Clear
();
}
i
+=
r
;
fprintf
(
stderr
,
"overflow"
);
r
=
overflow
(
1.e160
);
printerr
(
r
);
fprintf
(
stderr
,
"Test trapping division by zero
\n
"
);
r
=
db0
();
if
(
r
){
fprintf
(
stderr
,
"(Note: No exception was raised.)
\n
"
);
PyErr_Clear
();
}
else
{
fprintf
(
stderr
,
"Trapped:: "
);
PyErr_Print
();
PyErr_Clear
();
}
i
+=
r
;
fprintf
(
stderr
,
"
\n
div by 0"
);
r
=
db0
(
0
.
0
);
printerr
(
r
);
fprintf
(
stderr
,
"Test nested protection zones, outer zone
\n
"
);
r
=
nest1
(
0
.
0
);
if
(
r
){
fprintf
(
stderr
,
"(Note: No exception was raised.)
\n
"
);
PyErr_Clear
();
}
else
{
fprintf
(
stderr
,
"Trapped:: "
);
PyErr_Print
();
PyErr_Clear
();
}
i
+=
r
;
fprintf
(
stderr
,
"Test nested protection zones, inner zone
\n
"
);
fprintf
(
stderr
,
"(Note: Return will apparently come from outer zone.)
\n
"
);
r
=
nest1
(
1
.
0
);
if
(
r
){
fprintf
(
stderr
,
"(Note: No exception was raised.)
\n
"
);
PyErr_Clear
();
}
else
{
fprintf
(
stderr
,
"Trapped:: "
);
PyErr_Print
();
PyErr_Clear
();
}
i
+=
r
;
fprintf
(
stderr
,
"
\n
nested outer"
);
r
=
nest1
(
0
,
0
.
0
);
printerr
(
r
);
fprintf
(
stderr
,
"Test nested protection zones, trailing outer zone
\n
"
);
r
=
nest1
(
2
.
0
);
if
(
r
){
fprintf
(
stderr
,
"(Note: No exception was raised.)
\n
"
);
PyErr_Clear
();
}
else
{
fprintf
(
stderr
,
"Trapped:: "
);
PyErr_Print
();
PyErr_Clear
();
}
i
+=
r
;
fprintf
(
stderr
,
"
\n
nested inner"
);
r
=
nest1
(
1
,
1
.
0
);
printerr
(
r
);
fprintf
(
stderr
,
"Test nested function calls, prior error
\n
"
);
r
=
nest2
(
0
.
0
);
if
(
r
){
fprintf
(
stderr
,
"(Note: No exception was raised.)
\n
"
);
PyErr_Clear
();
}
else
{
fprintf
(
stderr
,
"Trapped:: "
);
PyErr_Print
();
PyErr_Clear
();
}
i
+=
r
;
fprintf
(
stderr
,
"
\n
trailing outer"
);
r
=
nest1
(
2
,
2
.
0
);
printerr
(
r
);
fprintf
(
stderr
,
"Test nested function calls, interior error
\n
"
);
r
=
nest2
(
1
.
0
);
if
(
r
){
fprintf
(
stderr
,
"(Note: No exception was raised.)
\n
"
);
PyErr_Clear
();
}
else
{
fprintf
(
stderr
,
"Trapped:: "
);
PyErr_Print
();
PyErr_Clear
();
}
i
+=
r
;
fprintf
(
stderr
,
"
\n
nested prior"
);
r
=
nest2
(
0
,
0
.
0
);
printerr
(
r
);
fprintf
(
stderr
,
"Test nested function calls, trailing error
\n
"
);
r
=
nest2
(
2
.
0
);
if
(
r
){
fprintf
(
stderr
,
"(Note: No exception was raised.)
\n
"
);
PyErr_Clear
();
}
else
{
fprintf
(
stderr
,
"Trapped:: "
);
PyErr_Print
();
PyErr_Clear
();
}
i
+=
r
;
fprintf
(
stderr
,
"
\n
nested interior"
);
r
=
nest2
(
1
,
1
.
0
);
printerr
(
r
);
fprintf
(
stderr
,
"
\n
nested trailing"
);
r
=
nest2
(
2
,
2
.
0
);
printerr
(
r
);
fprintf
(
stderr
,
"Number of tests failed: %d
\n
"
,
i
);
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
int
nest1
(
double
x
)
static
void
printerr
(
double
r
)
{
if
(
r
==
3
.
1416
){
fprintf
(
stderr
,
"
\t
PASS
\n
"
);
PyErr_Print
();
}
else
{
fprintf
(
stderr
,
"
\t
FAIL
\n
"
);
}
PyErr_Clear
();
}
static
double
nest1
(
int
i
,
double
x
)
{
double
a
=
1
.
0
;
PyFPE_START_PROTECT
(
"Division by zero, outer zone"
,
return
0
)
a
=
1
.
/
x
;
PyFPE_START_PROTECT
(
"Division by zero, inner zone"
,
return
0
)
PyFPE_START_PROTECT
(
"Division by zero, outer zone"
,
return
3
.
1416
)
if
(
i
==
0
){
a
=
1
.
/
x
;
}
else
if
(
i
==
1
){
/* This (following) message is never seen. */
PyFPE_START_PROTECT
(
"Division by zero, inner zone"
,
return
3
.
1416
)
a
=
1
.
/
(
1
.
-
x
);
PyFPE_END_PROTECT
a
=
1
.
/
(
2
.
-
x
);
}
else
if
(
i
==
2
){
a
=
1
.
/
(
2
.
-
x
);
}
PyFPE_END_PROTECT
return
(
1
);
return
a
;
}
static
int
nest2
(
double
x
)
static
double
nest2
(
int
i
,
double
x
)
{
double
a
=
1
.
0
;
PyFPE_START_PROTECT
(
"Division by zero, prior error"
,
return
0
)
a
=
1
.
/
x
;
a
=
nest3
(
x
);
a
=
1
.
/
(
2
.
-
x
);
PyFPE_START_PROTECT
(
"Division by zero, prior error"
,
return
3
.
1416
)
if
(
i
==
0
){
a
=
1
.
/
x
;
}
else
if
(
i
==
1
){
a
=
nest3
(
x
);
}
else
if
(
i
==
2
){
a
=
1
.
/
(
2
.
-
x
);
}
PyFPE_END_PROTECT
return
(
1
)
;
return
a
;
}
static
double
nest3
(
double
x
)
{
double
result
;
PyFPE_START_PROTECT
(
"Division by zero, nest3 error"
,
return
0
)
/* This (following) message is never seen. */
PyFPE_START_PROTECT
(
"Division by zero, nest3 error"
,
return
3
.
1416
)
result
=
1
.
/
(
1
.
-
x
);
PyFPE_END_PROTECT
return
result
;
}
static
int
db0
(
void
)
static
double
db0
(
double
x
)
{
double
a
=
1
.
0
;
PyFPE_START_PROTECT
(
"Division by zero"
,
return
0
)
a
=
1
.
/
(
a
-
1
.)
;
double
a
;
PyFPE_START_PROTECT
(
"Division by zero"
,
return
3
.
1416
)
a
=
1
.
/
x
;
PyFPE_END_PROTECT
return
(
1
)
;
return
a
;
}
static
int
overflow
(
void
)
static
double
overflow
(
double
b
)
{
double
a
,
b
=
1.e200
;
PyFPE_START_PROTECT
(
"Overflow"
,
return
0
)
double
a
;
PyFPE_START_PROTECT
(
"Overflow"
,
return
3
.
1416
)
a
=
b
*
b
;
PyFPE_END_PROTECT
return
(
1
)
;
return
a
;
}
void
initfpetest
(
void
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment