sqrt0150 sqrt 1.7976931348623157e+308 0.0 -> 1.3407807929942596355e+154 0.0
sqrt0151 sqrt 2.2250738585072014e-308 0.0 -> 1.4916681462400413487e-154 0.0
sqrt0152 sqrt 5e-324 0.0 -> 2.2227587494850774834e-162 0.0
+sqrt0153 sqrt 5e-324 1.0 -> 0.7071067811865476 0.7071067811865476
-- special values
sqrt1000 sqrt 0.0 0.0 -> 0.0 0.0
-- large real part
cosh0030 cosh 710.5 2.3519999999999999 -> -1.2967465239355998e+308 1.3076707908857333e+308
cosh0031 cosh -710.5 0.69999999999999996 -> 1.4085466381392499e+308 -1.1864024666450239e+308
+cosh0032 cosh 720.0 0.0 -> inf 0.0 overflow
-- Additional real values (mpmath)
cosh0050 cosh 1e-150 0.0 -> 1.0 0.0
-- large real part
sinh0030 sinh 710.5 -2.3999999999999999 -> -1.3579970564885919e+308 -1.24394470907798e+308
sinh0031 sinh -710.5 0.80000000000000004 -> -1.2830671601735164e+308 1.3210954193997678e+308
+sinh0032 sinh 720.0 0.0 -> inf 0.0 overflow
-- Additional real values (mpmath)
sinh0050 sinh 1e-100 0.0 -> 1.00000000000000002e-100 0.0
self.assertIsClose(0.001-0.001j, 0.001+0.001j, abs_tol=2e-03)
self.assertIsNotClose(0.001-0.001j, 0.001+0.001j, abs_tol=1e-03)
+ def test_complex_special(self):
+ self.assertIsNotClose(INF, INF*1j)
+ self.assertIsNotClose(INF*1j, INF)
+ self.assertIsNotClose(INF, -INF)
+ self.assertIsNotClose(-INF, INF)
+ self.assertIsNotClose(0, INF)
+ self.assertIsNotClose(0, INF*1j)
+
if __name__ == "__main__":
unittest.main()
ax = fabs(z.real);
ay = fabs(z.imag);
- if (ax < DBL_MIN && ay < DBL_MIN && (ax > 0. || ay > 0.)) {
+ if (ax < DBL_MIN && ay < DBL_MIN) {
/* here we catch cases where hypot(ax, ay) is subnormal */
ax = ldexp(ax, CM_SCALE_UP);
s = ldexp(sqrt(ax + hypot(ax, ldexp(ay, CM_SCALE_UP))),
double phi;
errno = 0;
- phi = c_atan2(z);
+ phi = c_atan2(z); /* should not cause any exception */
if (errno != 0)
return math_error();
else