* Fix for complex tan function if the argument has a large negative imaginary part
@ 2012-02-23 10:03 Frank Reininghaus
0 siblings, 0 replies; only message in thread
From: Frank Reininghaus @ 2012-02-23 10:03 UTC (permalink / raw)
To: gsl-discuss
[-- Attachment #1: Type: text/plain, Size: 1303 bytes --]
Hi,
I've noticed that the complex tan and cot functions return NaN if the
argument z=x+i*y has a large negative imaginary part y, such as
y=-1e7. However, the functions should either return -i or i in that
case.
I noticed that the corresponding hyperbolic functions do not have this
problem, so I propose to fix this bug by using
tan(z)=-i*tanh(i*z)
and using the same algorithm for the calculation of the complex tan
and tanh functions, see attached patch.
I would also like to add unit tests for that (and also for the complex
tan and cot functions for arguments with large positive imaginary
part, and also for the complex tanh and coth functions for large real
parts). I tried to understand how the Lisp file complex/test.el works
and modified it (see the patch). However, it seems that emacs refuses
to evaluate the functions for the arguments I've added, it leaves
lines like
{FN (tan), ARG(-3.45266983001243932001e-04,8.3886080e+06),
RES(tan(-3.452669830012439320e-4, 8.388608e6), 60)},
which are then removed by the 'clean' function in test.el and never
get written to results.h.
Therefore, I've temporarily added the expected results as hardcoded
values to results.h. I would appreciate any comments on how to improve
this from people who know Lisp better then me.
Best regards,
Frank
[-- Attachment #2: gsl_complex_tan.diff --]
[-- Type: text/x-patch, Size: 16505 bytes --]
=== modified file 'complex/math.c'
--- complex/math.c 2010-05-07 11:53:23 +0000
+++ complex/math.c 2012-02-23 09:40:14 +0000
@@ -489,14 +489,10 @@
}
else
{
- double u = exp (-I);
- double C = 2 * u / (1 - pow (u, 2.0));
- double D = 1 + pow (cos (R), 2.0) * pow (C, 2.0);
-
- double S = pow (C, 2.0);
- double T = 1.0 / tanh (I);
-
- GSL_SET_COMPLEX (&z, 0.5 * sin (2 * R) * S / D, T / D);
+ double D = pow (cos (R), 2.0) + pow (sinh (I), 2.0);
+ double F = 1 + pow (cos (R) / sinh (I), 2.0);
+
+ GSL_SET_COMPLEX (&z, 0.5 * sin (2 * R) / D, 1.0 / (tanh (I) * F));
}
return z;
=== modified file 'complex/test.c'
--- complex/test.c 2010-05-06 20:07:31 +0000
+++ complex/test.c 2012-02-23 09:46:58 +0000
@@ -93,6 +93,199 @@
struct fz listz[] =
{
#include "results.h"
+ /* The following data can in principle be generated by making the following
+ * additions to test.el:
+ *
+ * (setq zcirc_large_imag (append (combine circ inf)))
+ * (setq zicirc_large_real (append (combine inf circ)))
+ *
+ * then later on, in the function test2 (), add
+ *
+ * (loop1 "tan" zcirc_large_imag)
+ * (loop1 "cot" zcirc_large_imag)
+ * (loop1 "tanh" zicirc_large_real)
+ * (loop1 "coth" zicirc_large_real)
+ *
+ * The problem is that emacs refuses to evaluate the tan, cot, tanh,
+ * and coth functions for these values, such that the clean () function
+ * removes them from the output.
+ */
+ {FN (tan), ARG(-3.45266983001243932001e-04,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-3.45266983001243932001e-04,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(3.45266983001243932001e-04,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(3.45266983001243932001e-04,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(1.57045105981189525579e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(1.57045105981189525579e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-1.57045105981189525579e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-1.57045105981189525579e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(1.57114159377789786021e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(1.57114159377789786021e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-1.57114159377789786021e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-1.57114159377789786021e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(3.14124738660679181379e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(3.14124738660679181379e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-3.14124738660679181379e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-3.14124738660679181379e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(3.14193792057279441821e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(3.14193792057279441821e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-3.14193792057279441821e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-3.14193792057279441821e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(4.71204371340168837179e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(4.71204371340168837179e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-4.71204371340168837179e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-4.71204371340168837179e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(4.71273424736769097620e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(4.71273424736769097620e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-4.71273424736769097620e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-4.71273424736769097620e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(6.28284004019658492979e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(6.28284004019658492979e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-6.28284004019658492979e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-6.28284004019658492979e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(6.28353057416258753420e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(6.28353057416258753420e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-6.28353057416258753420e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-6.28353057416258753420e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(9.42443269378637893396e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(9.42443269378637893396e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-9.42443269378637893396e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-9.42443269378637893396e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(9.42512322775237976202e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(9.42512322775237976202e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (tan), ARG(-9.42512322775237976202e+00,8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tan), ARG(-9.42512322775237976202e+00,-8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-3.45266983001243932001e-04,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-3.45266983001243932001e-04,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(3.45266983001243932001e-04,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(3.45266983001243932001e-04,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(1.57045105981189525579e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(1.57045105981189525579e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-1.57045105981189525579e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-1.57045105981189525579e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(1.57114159377789786021e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(1.57114159377789786021e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-1.57114159377789786021e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-1.57114159377789786021e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(3.14124738660679181379e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(3.14124738660679181379e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-3.14124738660679181379e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-3.14124738660679181379e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(3.14193792057279441821e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(3.14193792057279441821e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-3.14193792057279441821e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-3.14193792057279441821e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(4.71204371340168837179e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(4.71204371340168837179e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-4.71204371340168837179e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-4.71204371340168837179e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(4.71273424736769097620e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(4.71273424736769097620e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-4.71273424736769097620e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-4.71273424736769097620e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(6.28284004019658492979e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(6.28284004019658492979e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-6.28284004019658492979e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-6.28284004019658492979e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(6.28353057416258753420e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(6.28353057416258753420e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-6.28353057416258753420e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-6.28353057416258753420e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(9.42443269378637893396e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(9.42443269378637893396e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-9.42443269378637893396e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-9.42443269378637893396e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(9.42512322775237976202e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(9.42512322775237976202e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (cot), ARG(-9.42512322775237976202e+00,8.3886080e+06), RES(0.0, -1.0)},
+ {FN (cot), ARG(-9.42512322775237976202e+00,-8.3886080e+06), RES(0.0, 1.0)},
+ {FN (tanh), ARG(8.3886080e+06,-3.45266983001243932001e-04), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,3.45266983001243932001e-04), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-3.45266983001243932001e-04), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,3.45266983001243932001e-04), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,1.57045105981189525579e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-1.57045105981189525579e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,1.57045105981189525579e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-1.57045105981189525579e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,1.57114159377789786021e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-1.57114159377789786021e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,1.57114159377789786021e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-1.57114159377789786021e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,3.14124738660679181379e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-3.14124738660679181379e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,3.14124738660679181379e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-3.14124738660679181379e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,3.14193792057279441821e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-3.14193792057279441821e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,3.14193792057279441821e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-3.14193792057279441821e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,4.71204371340168837179e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-4.71204371340168837179e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,4.71204371340168837179e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-4.71204371340168837179e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,4.71273424736769097620e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-4.71273424736769097620e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,4.71273424736769097620e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-4.71273424736769097620e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,6.28284004019658492979e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-6.28284004019658492979e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,6.28284004019658492979e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-6.28284004019658492979e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,6.28353057416258753420e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-6.28353057416258753420e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,6.28353057416258753420e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-6.28353057416258753420e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,9.42443269378637893396e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-9.42443269378637893396e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,9.42443269378637893396e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-9.42443269378637893396e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,9.42512322775237976202e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(8.3886080e+06,-9.42512322775237976202e+00), RES(1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,9.42512322775237976202e+00), RES(-1.0, 0.0)},
+ {FN (tanh), ARG(-8.3886080e+06,-9.42512322775237976202e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-3.45266983001243932001e-04), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,3.45266983001243932001e-04), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-3.45266983001243932001e-04), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,3.45266983001243932001e-04), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,1.57045105981189525579e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-1.57045105981189525579e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,1.57045105981189525579e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-1.57045105981189525579e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,1.57114159377789786021e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-1.57114159377789786021e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,1.57114159377789786021e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-1.57114159377789786021e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,3.14124738660679181379e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-3.14124738660679181379e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,3.14124738660679181379e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-3.14124738660679181379e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,3.14193792057279441821e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-3.14193792057279441821e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,3.14193792057279441821e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-3.14193792057279441821e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,4.71204371340168837179e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-4.71204371340168837179e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,4.71204371340168837179e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-4.71204371340168837179e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,4.71273424736769097620e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-4.71273424736769097620e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,4.71273424736769097620e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-4.71273424736769097620e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,6.28284004019658492979e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-6.28284004019658492979e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,6.28284004019658492979e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-6.28284004019658492979e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,6.28353057416258753420e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-6.28353057416258753420e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,6.28353057416258753420e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-6.28353057416258753420e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,9.42443269378637893396e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-9.42443269378637893396e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,9.42443269378637893396e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-9.42443269378637893396e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,9.42512322775237976202e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(8.3886080e+06,-9.42512322775237976202e+00), RES(1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,9.42512322775237976202e+00), RES(-1.0, 0.0)},
+ {FN (coth), ARG(-8.3886080e+06,-9.42512322775237976202e+00), RES(-1.0, 0.0)},
{"", 0, 0, 0, 0, 0}
};
=== modified file 'complex/test.el'
--- complex/test.el 2010-05-06 20:07:31 +0000
+++ complex/test.el 2012-02-23 09:44:04 +0000
@@ -244,6 +244,8 @@
(setq zcirc (append (combine circ zfinite)))
(setq zicirc (append (combine zfinite circ)))
+(setq zcirc_large_imag (append (combine circ inf)))
+(setq zicirc_large_real (append (combine inf circ)))
(defun test1 ()
(loop1 "arg" z0)
@@ -262,6 +264,7 @@
(loop1 "sin" zcirc)
(loop1 "cos" zcirc)
(loop1 "tan" zcirc)
+ (loop1 "tan" zcirc_large_imag)
(loop1 "arcsin" z0)
(loop1 "arccos" z0)
@@ -270,6 +273,7 @@
(loop1 "sinh" zicirc)
(loop1 "cosh" zicirc)
(loop1 "tanh" zicirc)
+ (loop1 "tanh" zicirc_large_real)
(loop1 "arcsinh" z0)
(loop1 "arccosh" z0)
@@ -278,6 +282,7 @@
(loop1 "csc" zcirc)
(loop1 "sec" zcirc)
(loop1 "cot" zcirc)
+ (loop1 "cot" zcirc_large_imag)
(loop1 "arccsc" z0)
(loop1 "arcsec" z0)
@@ -286,6 +291,7 @@
(loop1 "csch" zicirc)
(loop1 "sech" zicirc)
(loop1 "coth" zicirc)
+ (loop1 "coth" zicirc_large_real)
(loop1 "arccsch" z0)
(loop1 "arcsech" z0)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2012-02-23 10:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-23 10:03 Fix for complex tan function if the argument has a large negative imaginary part Frank Reininghaus
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).