annotate Python/hypot.c @ 5758:bfe9ba74c19e legacy-trunk

Fix problem discovered by Greg McFarlane: when an imported module replaces its own entry in sys.module, reference count errors ensue; even if there is no reference count problem, it would be preferable for the import to yield the new thing in sys.modules anyway (if only because that's what later imports will yield). This opens the road to an official hack to implement a __getattr__ like feature for modules: stick an instance in sys.modules[__name__].
author Guido van Rossum <guido@python.org>
date Thu, 10 Jul 1997 18:00:45 +0000
parents 37d009b1bf45
children f79434ee41fa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4176
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 /* hypot() replacement */
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 #include "config.h"
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 #include "myproto.h"
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 #include "mymath.h"
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 double hypot(x, y)
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 double x;
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 double y;
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 {
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 double yx;
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 x = fabs(x);
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 y = fabs(y);
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 if (x < y) {
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 double temp = x;
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 x = y;
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 y = temp;
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 }
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 if (x == 0.)
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 return 0.;
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 else {
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 yx = y/x;
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 return x*sqrt(1.+yx*yx);
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 }
37d009b1bf45 *** empty log message ***
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 }