[pypy-svn] pypy cmath: (lac, arigo)

arigo commits-noreply at bitbucket.org
Tue Jan 18 15:45:27 CET 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: cmath
Changeset: r40864:9ccf5d0c6555
Date: 2011-01-18 15:45 +0100
http://bitbucket.org/pypy/pypy/changeset/9ccf5d0c6555/

Log:	(lac, arigo)

	Change the way we write 0.0 and -0.0 in this file to make sure the
	file loads correctly also in pypy 1.4.1, in which the compiler is a
	bit broken in this respect.

diff --git a/pypy/module/cmath/special_value.py b/pypy/module/cmath/special_value.py
--- a/pypy/module/cmath/special_value.py
+++ b/pypy/module/cmath/special_value.py
@@ -43,6 +43,8 @@
 INF = 1e200 * 1e200
 N   = INF / INF
 U   = -9.5426319407711027e33   # unlikely value, used as placeholder
+Z   = 0.0    # defined here instead of in the tuples below, because of a bug
+             # in pypy releases < 1.5
 NAN = N
 
 def build_table(lst):
@@ -58,111 +60,113 @@
     return table
 
 acos_special_values = build_table([
-    (P34,INF), (P,INF),  (P,INF),  (P,-INF),  (P,-INF),  (P34,-INF), (N,INF),
-    (P12,INF), (U,U),    (U,U),    (U,U),     (U,U),     (P12,-INF), (N,N),
-    (P12,INF), (U,U),    (P12,0.), (P12,-0.), (U,U),     (P12,-INF), (P12,N),
-    (P12,INF), (U,U),    (P12,0.), (P12,-0.), (U,U),     (P12,-INF), (P12,N),
-    (P12,INF), (U,U),    (U,U),    (U,U),     (U,U),     (P12,-INF), (N,N),
-    (P14,INF), (0.,INF), (0.,INF), (0.,-INF), (0.,-INF), (P14,-INF), (N,INF),
-    (N,INF),   (N,N),    (N,N),    (N,N),     (N,N),     (N,-INF),   (N,N),
+    (P34,INF), (P,INF), (P,INF), (P,-INF), (P,-INF), (P34,-INF), (N,INF),
+    (P12,INF), (U,U),   (U,U),   (U,U),    (U,U),    (P12,-INF), (N,N),
+    (P12,INF), (U,U),   (P12,Z), (P12,-Z), (U,U),    (P12,-INF), (P12,N),
+    (P12,INF), (U,U),   (P12,Z), (P12,-Z), (U,U),    (P12,-INF), (P12,N),
+    (P12,INF), (U,U),   (U,U),   (U,U),    (U,U),    (P12,-INF), (N,N),
+    (P14,INF), (Z,INF), (Z,INF), (Z,-INF), (Z,-INF), (P14,-INF), (N,INF),
+    (N,INF),   (N,N),   (N,N),   (N,N),    (N,N),    (N,-INF),   (N,N),
     ])
 
 acosh_special_values = build_table([
-    (INF,-P34), (INF,-P),  (INF,-P),  (INF,P),  (INF,P),  (INF,P34), (INF,N),
-    (INF,-P12), (U,U),     (U,U),     (U,U),    (U,U),    (INF,P12), (N,N),
-    (INF,-P12), (U,U),     (0.,-P12), (0.,P12), (U,U),    (INF,P12), (N,N),
-    (INF,-P12), (U,U),     (0.,-P12), (0.,P12), (U,U),    (INF,P12), (N,N),
-    (INF,-P12), (U,U),     (U,U),     (U,U),    (U,U),    (INF,P12), (N,N),
-    (INF,-P14), (INF,-0.), (INF,-0.), (INF,0.), (INF,0.), (INF,P14), (INF,N),
-    (INF,N),    (N,N),     (N,N),     (N,N),    (N,N),    (INF,N),   (N,N),
+    (INF,-P34), (INF,-P), (INF,-P), (INF,P), (INF,P), (INF,P34), (INF,N),
+    (INF,-P12), (U,U),    (U,U),    (U,U),   (U,U),   (INF,P12), (N,N),
+    (INF,-P12), (U,U),    (Z,-P12), (Z,P12), (U,U),   (INF,P12), (N,N),
+    (INF,-P12), (U,U),    (Z,-P12), (Z,P12), (U,U),   (INF,P12), (N,N),
+    (INF,-P12), (U,U),    (U,U),    (U,U),   (U,U),   (INF,P12), (N,N),
+    (INF,-P14), (INF,-Z), (INF,-Z), (INF,Z), (INF,Z), (INF,P14), (INF,N),
+    (INF,N),    (N,N),    (N,N),    (N,N),   (N,N),   (INF,N),   (N,N),
     ])
 
 asinh_special_values = build_table([
-    (-INF,-P14),(-INF,-0.),(-INF,-0.),(-INF,0.),(-INF,0.),(-INF,P14),(-INF,N),
-    (-INF,-P12),(U,U),     (U,U),     (U,U),    (U,U),    (-INF,P12),(N,N),
-    (-INF,-P12),(U,U),     (-0.,-0.), (-0.,0.), (U,U),    (-INF,P12),(N,N),
-    (INF,-P12), (U,U),     (0.,-0.),  (0.,0.),  (U,U),    (INF,P12), (N,N),
-    (INF,-P12), (U,U),     (U,U),     (U,U),    (U,U),    (INF,P12), (N,N),
-    (INF,-P14), (INF,-0.), (INF,-0.), (INF,0.), (INF,0.), (INF,P14), (INF,N),
-    (INF,N),    (N,N),     (N,-0.),   (N,0.),   (N,N),    (INF,N),   (N,N),
+    (-INF,-P14), (-INF,-Z), (-INF,-Z),(-INF,Z), (-INF,Z), (-INF,P14), (-INF,N),
+    (-INF,-P12), (U,U),     (U,U),    (U,U),    (U,U),    (-INF,P12), (N,N),
+    (-INF,-P12), (U,U),     (-Z,-Z),  (-Z,Z),   (U,U),    (-INF,P12), (N,N),
+    (INF,-P12),  (U,U),     (Z,-Z),   (Z,Z),    (U,U),    (INF,P12),  (N,N),
+    (INF,-P12),  (U,U),     (U,U),    (U,U),    (U,U),    (INF,P12),  (N,N),
+    (INF,-P14),  (INF,-Z),  (INF,-Z), (INF,Z),  (INF,Z),  (INF,P14),  (INF,N),
+    (INF,N),     (N,N),     (N,-Z),   (N,Z),    (N,N),    (INF,N),    (N,N),
     ])
 
 atanh_special_values = build_table([
-    (-0.,-P12),(-0.,-P12),(-0.,-P12),(-0.,P12),(-0.,P12),(-0.,P12),(-0.,N),
-    (-0.,-P12),(U,U),     (U,U),     (U,U),    (U,U),    (-0.,P12),(N,N),
-    (-0.,-P12),(U,U),     (-0.,-0.), (-0.,0.), (U,U),    (-0.,P12),(-0.,N),
-    (0.,-P12), (U,U),     (0.,-0.),  (0.,0.),  (U,U),    (0.,P12), (0.,N),
-    (0.,-P12), (U,U),     (U,U),     (U,U),    (U,U),    (0.,P12), (N,N),
-    (0.,-P12), (0.,-P12), (0.,-P12), (0.,P12), (0.,P12), (0.,P12), (0.,N),
-    (0.,-P12), (N,N),     (N,N),     (N,N),    (N,N),    (0.,P12), (N,N),
+    (-Z,-P12), (-Z,-P12), (-Z,-P12), (-Z,P12), (-Z,P12), (-Z,P12), (-Z,N),
+    (-Z,-P12), (U,U),     (U,U),     (U,U),    (U,U),    (-Z,P12), (N,N),
+    (-Z,-P12), (U,U),     (-Z,-Z),   (-Z,Z),   (U,U),    (-Z,P12), (-Z,N),
+    (Z,-P12),  (U,U),     (Z,-Z),    (Z,Z),    (U,U),    (Z,P12),  (Z,N),
+    (Z,-P12),  (U,U),     (U,U),     (U,U),    (U,U),    (Z,P12),  (N,N),
+    (Z,-P12),  (Z,-P12),  (Z,-P12),  (Z,P12),  (Z,P12),  (Z,P12),  (Z,N),
+    (Z,-P12),  (N,N),     (N,N),     (N,N),    (N,N),    (Z,P12),  (N,N),
     ])
 
 log_special_values = build_table([
-    (INF,-P34), (INF,-P),  (INF,-P),   (INF,P),   (INF,P),  (INF,P34), (INF,N),
-    (INF,-P12), (U,U),     (U,U),      (U,U),     (U,U),    (INF,P12), (N,N),
-    (INF,-P12), (U,U),     (-INF,-P),  (-INF,P),  (U,U),    (INF,P12), (N,N),
-    (INF,-P12), (U,U),     (-INF,-0.), (-INF,0.), (U,U),    (INF,P12), (N,N),
-    (INF,-P12), (U,U),     (U,U),      (U,U),     (U,U),    (INF,P12), (N,N),
-    (INF,-P14), (INF,-0.), (INF,-0.),  (INF,0.),  (INF,0.), (INF,P14), (INF,N),
-    (INF,N),    (N,N),     (N,N),      (N,N),     (N,N),    (INF,N),   (N,N),
+    (INF,-P34), (INF,-P), (INF,-P),  (INF,P),  (INF,P), (INF,P34), (INF,N),
+    (INF,-P12), (U,U),    (U,U),     (U,U),    (U,U),   (INF,P12), (N,N),
+    (INF,-P12), (U,U),    (-INF,-P), (-INF,P), (U,U),   (INF,P12), (N,N),
+    (INF,-P12), (U,U),    (-INF,-Z), (-INF,Z), (U,U),   (INF,P12), (N,N),
+    (INF,-P12), (U,U),    (U,U),     (U,U),    (U,U),   (INF,P12), (N,N),
+    (INF,-P14), (INF,-Z), (INF,-Z),  (INF,Z),  (INF,Z), (INF,P14), (INF,N),
+    (INF,N),    (N,N),    (N,N),     (N,N),    (N,N),   (INF,N),   (N,N),
     ])
 
 sqrt_special_values = build_table([
-    (INF,-INF), (0.,-INF), (0.,-INF), (0.,INF), (0.,INF), (INF,INF), (N,INF),
-    (INF,-INF), (U,U),     (U,U),     (U,U),    (U,U),    (INF,INF), (N,N),
-    (INF,-INF), (U,U),     (0.,-0.),  (0.,0.),  (U,U),    (INF,INF), (N,N),
-    (INF,-INF), (U,U),     (0.,-0.),  (0.,0.),  (U,U),    (INF,INF), (N,N),
-    (INF,-INF), (U,U),     (U,U),     (U,U),    (U,U),    (INF,INF), (N,N),
-    (INF,-INF), (INF,-0.), (INF,-0.), (INF,0.), (INF,0.), (INF,INF), (INF,N),
-    (INF,-INF), (N,N),     (N,N),     (N,N),    (N,N),    (INF,INF), (N,N),
+    (INF,-INF), (Z,-INF), (Z,-INF), (Z,INF), (Z,INF), (INF,INF), (N,INF),
+    (INF,-INF), (U,U),    (U,U),    (U,U),   (U,U),   (INF,INF), (N,N),
+    (INF,-INF), (U,U),    (Z,-Z),   (Z,Z),   (U,U),   (INF,INF), (N,N),
+    (INF,-INF), (U,U),    (Z,-Z),   (Z,Z),   (U,U),   (INF,INF), (N,N),
+    (INF,-INF), (U,U),    (U,U),    (U,U),   (U,U),   (INF,INF), (N,N),
+    (INF,-INF), (INF,-Z), (INF,-Z), (INF,Z), (INF,Z), (INF,INF), (INF,N),
+    (INF,-INF), (N,N),    (N,N),    (N,N),   (N,N),   (INF,INF), (N,N),
     ])
 
 exp_special_values = build_table([
-    (0.,0.), (U,U), (0.,-0.),  (0.,0.),  (U,U), (0.,0.), (0.,0.),
-    (N,N),   (U,U), (U,U),     (U,U),    (U,U), (N,N),   (N,N),
-    (N,N),   (U,U), (1.,-0.),  (1.,0.),  (U,U), (N,N),   (N,N),
-    (N,N),   (U,U), (1.,-0.),  (1.,0.),  (U,U), (N,N),   (N,N),
-    (N,N),   (U,U), (U,U),     (U,U),    (U,U), (N,N),   (N,N),
-    (INF,N), (U,U), (INF,-0.), (INF,0.), (U,U), (INF,N), (INF,N),
-    (N,N),   (N,N), (N,-0.),   (N,0.),   (N,N), (N,N),   (N,N),
+    (Z,Z),   (U,U), (Z,-Z),   (Z,Z),   (U,U), (Z,Z),   (Z,Z),
+    (N,N),   (U,U), (U,U),    (U,U),   (U,U), (N,N),   (N,N),
+    (N,N),   (U,U), (1.,-Z),  (1.,Z),  (U,U), (N,N),   (N,N),
+    (N,N),   (U,U), (1.,-Z),  (1.,Z),  (U,U), (N,N),   (N,N),
+    (N,N),   (U,U), (U,U),    (U,U),   (U,U), (N,N),   (N,N),
+    (INF,N), (U,U), (INF,-Z), (INF,Z), (U,U), (INF,N), (INF,N),
+    (N,N),   (N,N), (N,-Z),   (N,Z),   (N,N), (N,N),   (N,N),
     ])
 
 cosh_special_values = build_table([
-    (INF,N), (U,U), (INF,0.),  (INF,-0.), (U,U), (INF,N), (INF,N),
-    (N,N),   (U,U), (U,U),     (U,U),     (U,U), (N,N),   (N,N),
-    (N,0.),  (U,U), (1.,0.),   (1.,-0.),  (U,U), (N,0.),  (N,0.),
-    (N,0.),  (U,U), (1.,-0.),  (1.,0.),   (U,U), (N,0.),  (N,0.),
-    (N,N),   (U,U), (U,U),     (U,U),     (U,U), (N,N),   (N,N),
-    (INF,N), (U,U), (INF,-0.), (INF,0.),  (U,U), (INF,N), (INF,N),
-    (N,N),   (N,N), (N,0.),    (N,0.),    (N,N), (N,N),   (N,N),
+    (INF,N), (U,U), (INF,Z),  (INF,-Z), (U,U), (INF,N), (INF,N),
+    (N,N),   (U,U), (U,U),    (U,U),    (U,U), (N,N),   (N,N),
+    (N,Z),   (U,U), (1.,Z),   (1.,-Z),  (U,U), (N,Z),   (N,Z),
+    (N,Z),   (U,U), (1.,-Z),  (1.,Z),   (U,U), (N,Z),   (N,Z),
+    (N,N),   (U,U), (U,U),    (U,U),    (U,U), (N,N),   (N,N),
+    (INF,N), (U,U), (INF,-Z), (INF,Z),  (U,U), (INF,N), (INF,N),
+    (N,N),   (N,N), (N,Z),    (N,Z),    (N,N), (N,N),   (N,N),
     ])
 
 sinh_special_values = build_table([
-    (INF,N), (U,U), (-INF,-0.), (-INF,0.), (U,U), (INF,N), (INF,N),
-    (N,N),   (U,U), (U,U),      (U,U),     (U,U), (N,N),   (N,N),
-    (0.,N),  (U,U), (-0.,-0.),  (-0.,0.),  (U,U), (0.,N),  (0.,N),
-    (0.,N),  (U,U), (0.,-0.),   (0.,0.),   (U,U), (0.,N),  (0.,N),
-    (N,N),   (U,U), (U,U),      (U,U),     (U,U), (N,N),   (N,N),
-    (INF,N), (U,U), (INF,-0.),  (INF,0.),  (U,U), (INF,N), (INF,N),
-    (N,N),   (N,N), (N,-0.),    (N,0.),    (N,N), (N,N),   (N,N),
+    (INF,N), (U,U), (-INF,-Z), (-INF,Z), (U,U), (INF,N), (INF,N),
+    (N,N),   (U,U), (U,U),     (U,U),    (U,U), (N,N),   (N,N),
+    (Z,N),   (U,U), (-Z,-Z),   (-Z,Z),   (U,U), (Z,N),   (Z,N),
+    (Z,N),   (U,U), (Z,-Z),    (Z,Z),    (U,U), (Z,N),   (Z,N),
+    (N,N),   (U,U), (U,U),     (U,U),    (U,U), (N,N),   (N,N),
+    (INF,N), (U,U), (INF,-Z),  (INF,Z),  (U,U), (INF,N), (INF,N),
+    (N,N),   (N,N), (N,-Z),    (N,Z),    (N,N), (N,N),   (N,N),
     ])
 
 tanh_special_values = build_table([
-    (-1.,0.), (U,U), (-1.,-0.), (-1.,0.), (U,U), (-1.,0.), (-1.,0.),
-    (N,N),    (U,U), (U,U),     (U,U),    (U,U), (N,N),    (N,N),
-    (N,N),    (U,U), (-0.,-0.), (-0.,0.), (U,U), (N,N),    (N,N),
-    (N,N),    (U,U), (0.,-0.),  (0.,0.),  (U,U), (N,N),    (N,N),
-    (N,N),    (U,U), (U,U),     (U,U),    (U,U), (N,N),    (N,N),
-    (1.,0.),  (U,U), (1.,-0.),  (1.,0.),  (U,U), (1.,0.),  (1.,0.),
-    (N,N),    (N,N), (N,-0.),   (N,0.),   (N,N), (N,N),    (N,N),
+    (-1.,Z), (U,U), (-1.,-Z), (-1.,Z), (U,U), (-1.,Z), (-1.,Z),
+    (N,N),   (U,U), (U,U),    (U,U),   (U,U), (N,N),   (N,N),
+    (N,N),   (U,U), (-Z,-Z),  (-Z,Z),  (U,U), (N,N),   (N,N),
+    (N,N),   (U,U), (Z,-Z),   (Z,Z),   (U,U), (N,N),   (N,N),
+    (N,N),   (U,U), (U,U),    (U,U),   (U,U), (N,N),   (N,N),
+    (1.,Z),  (U,U), (1.,-Z),  (1.,Z),  (U,U), (1.,Z),  (1.,Z),
+    (N,N),   (N,N), (N,-Z),   (N,Z),   (N,N), (N,N),   (N,N),
     ])
 
 rect_special_values = build_table([
-    (INF,N), (U,U), (-INF,0.), (-INF,-0.), (U,U), (INF,N), (INF,N),
-    (N,N),   (U,U), (U,U),     (U,U),      (U,U), (N,N),   (N,N),
-    (0.,0.), (U,U), (-0.,0.),  (-0.,-0.),  (U,U), (0.,0.), (0.,0.),
-    (0.,0.), (U,U), (0.,-0.),  (0.,0.),    (U,U), (0.,0.), (0.,0.),
-    (N,N),   (U,U), (U,U),     (U,U),      (U,U), (N,N),   (N,N),
-    (INF,N), (U,U), (INF,-0.), (INF,0.),   (U,U), (INF,N), (INF,N),
-    (N,N),   (N,N), (N,0.),    (N,0.),     (N,N), (N,N),   (N,N),
+    (INF,N), (U,U), (-INF,Z), (-INF,-Z), (U,U), (INF,N), (INF,N),
+    (N,N),   (U,U), (U,U),    (U,U),     (U,U), (N,N),   (N,N),
+    (Z,Z),   (U,U), (-Z,Z),   (-Z,-Z),   (U,U), (Z,Z),   (Z,Z),
+    (Z,Z),   (U,U), (Z,-Z),   (Z,Z),     (U,U), (Z,Z),   (Z,Z),
+    (N,N),   (U,U), (U,U),    (U,U),     (U,U), (N,N),   (N,N),
+    (INF,N), (U,U), (INF,-Z), (INF,Z),   (U,U), (INF,N), (INF,N),
+    (N,N),   (N,N), (N,Z),    (N,Z),     (N,N), (N,N),   (N,N),
     ])
+
+assert copysign(1., acosh_special_values[5][2][1]) == -1.


More information about the Pypy-commit mailing list