| 35226 |
ripley |
1 |
|
| 85252 |
maechler |
2 |
R Under development (unstable) (2023-09-28 r85227) -- "Unsuffered Consequences"
|
|
|
3 |
Copyright (C) 2023 The R Foundation for Statistical Computing
|
|
|
4 |
Platform: x86_64-pc-linux-gnu
|
| 35226 |
ripley |
5 |
|
|
|
6 |
R is free software and comes with ABSOLUTELY NO WARRANTY.
|
|
|
7 |
You are welcome to redistribute it under certain conditions.
|
|
|
8 |
Type 'license()' or 'licence()' for distribution details.
|
|
|
9 |
|
|
|
10 |
R is a collaborative project with many contributors.
|
|
|
11 |
Type 'contributors()' for more information and
|
|
|
12 |
'citation()' on how to cite R or R packages in publications.
|
|
|
13 |
|
|
|
14 |
Type 'demo()' for some demos, 'help()' for on-line help, or
|
| 42031 |
ripley |
15 |
'help.start()' for an HTML browser interface to help.
|
| 35226 |
ripley |
16 |
Type 'q()' to quit R.
|
|
|
17 |
|
| 88200 |
smeyer |
18 |
> ### Tests of complex arithmetic.
|
| 35226 |
ripley |
19 |
>
|
| 49068 |
maechler |
20 |
> Meps <- .Machine$double.eps
|
| 35226 |
ripley |
21 |
> ## complex
|
|
|
22 |
> z <- 0i ^ (-3:3)
|
|
|
23 |
> stopifnot(Re(z) == 0 ^ (-3:3))
|
|
|
24 |
>
|
|
|
25 |
>
|
|
|
26 |
> ## powers, including complex ones
|
|
|
27 |
> a <- -4:12
|
|
|
28 |
> m <- outer(a +0i, b <- seq(-.5,2, by=.5), "^")
|
|
|
29 |
> dimnames(m) <- list(paste(a), "^" = sapply(b,format))
|
|
|
30 |
> round(m,3)
|
|
|
31 |
^
|
|
|
32 |
-0.5 0 0.5 1 1.5 2
|
|
|
33 |
-4 0.000-0.500i 1+0i 0.000+2.000i -4+0i 0.000-8.000i 16+0i
|
|
|
34 |
-3 0.000-0.577i 1+0i 0.000+1.732i -3+0i 0.000-5.196i 9+0i
|
|
|
35 |
-2 0.000-0.707i 1+0i 0.000+1.414i -2+0i 0.000-2.828i 4+0i
|
|
|
36 |
-1 0.000-1.000i 1+0i 0.000+1.000i -1+0i 0.000-1.000i 1+0i
|
| 55619 |
ripley |
37 |
|
| 35226 |
ripley |
38 |
1 1.000+0.000i 1+0i 1.000+0.000i 1+0i 1.000+0.000i 1+0i
|
|
|
39 |
2 0.707+0.000i 1+0i 1.414+0.000i 2+0i 2.828+0.000i 4+0i
|
|
|
40 |
3 0.577+0.000i 1+0i 1.732+0.000i 3+0i 5.196+0.000i 9+0i
|
|
|
41 |
4 0.500+0.000i 1+0i 2.000+0.000i 4+0i 8.000+0.000i 16+0i
|
|
|
42 |
5 0.447+0.000i 1+0i 2.236+0.000i 5+0i 11.180+0.000i 25+0i
|
|
|
43 |
6 0.408+0.000i 1+0i 2.449+0.000i 6+0i 14.697+0.000i 36+0i
|
|
|
44 |
7 0.378+0.000i 1+0i 2.646+0.000i 7+0i 18.520+0.000i 49+0i
|
|
|
45 |
8 0.354+0.000i 1+0i 2.828+0.000i 8+0i 22.627+0.000i 64+0i
|
|
|
46 |
9 0.333+0.000i 1+0i 3.000+0.000i 9+0i 27.000+0.000i 81+0i
|
|
|
47 |
10 0.316+0.000i 1+0i 3.162+0.000i 10+0i 31.623+0.000i 100+0i
|
|
|
48 |
11 0.302+0.000i 1+0i 3.317+0.000i 11+0i 36.483+0.000i 121+0i
|
|
|
49 |
12 0.289+0.000i 1+0i 3.464+0.000i 12+0i 41.569+0.000i 144+0i
|
| 49068 |
maechler |
50 |
> stopifnot(m[,as.character(0:2)] == cbind(1,a,a*a),
|
|
|
51 |
+ # latter were only approximate
|
|
|
52 |
+ all.equal(unname(m[,"0.5"]),
|
|
|
53 |
+ sqrt(abs(a))*ifelse(a < 0, 1i, 1),
|
| 64891 |
ripley |
54 |
+ tolerance = 20*Meps))
|
| 54249 |
ripley |
55 |
>
|
|
|
56 |
> ## 2.10.0-2.12.1 got z^n wrong in the !HAVE_C99_COMPLEX case
|
|
|
57 |
> z <- 0.2853725+0.3927816i
|
|
|
58 |
> z2 <- z^(1:20)
|
|
|
59 |
> z3 <- z^-(1:20)
|
|
|
60 |
> z0 <- cumprod(rep(z, 20))
|
|
|
61 |
> stopifnot(all.equal(z2, z0), all.equal(z3, 1/z0))
|
|
|
62 |
> ## was z^3 had value z^2 ....
|
|
|
63 |
>
|
| 35253 |
ripley |
64 |
> ## fft():
|
|
|
65 |
> for(n in 1:30) cat("\nn=",n,":", round(fft(1:n), 8),"\n")
|
|
|
66 |
|
|
|
67 |
n= 1 : 1+0i
|
|
|
68 |
|
|
|
69 |
n= 2 : 3+0i -1+0i
|
|
|
70 |
|
| 85252 |
maechler |
71 |
n= 3 : 6+0i -1.5+0.8660254i -1.5-0.8660254i
|
| 35253 |
ripley |
72 |
|
|
|
73 |
n= 4 : 10+0i -2+2i -2+0i -2-2i
|
|
|
74 |
|
| 85252 |
maechler |
75 |
n= 5 : 15+0i -2.5+3.440955i -2.5+0.8122992i -2.5-0.8122992i -2.5-3.440955i
|
| 35253 |
ripley |
76 |
|
|
|
77 |
n= 6 : 21+0i -3+5.196152i -3+1.732051i -3+0i -3-1.732051i -3-5.196152i
|
|
|
78 |
|
| 85252 |
maechler |
79 |
n= 7 : 28+0i -3.5+7.267825i -3.5+2.791157i -3.5+0.7988522i -3.5-0.7988522i -3.5-2.791157i -3.5-7.267825i
|
| 35253 |
ripley |
80 |
|
|
|
81 |
n= 8 : 36+0i -4+9.656854i -4+4i -4+1.656854i -4+0i -4-1.656854i -4-4i -4-9.656854i
|
|
|
82 |
|
| 85252 |
maechler |
83 |
n= 9 : 45+0i -4.5+12.36365i -4.5+5.362891i -4.5+2.598076i -4.5+0.7934714i -4.5-0.7934714i -4.5-2.598076i -4.5-5.362891i -4.5-12.36365i
|
| 35253 |
ripley |
84 |
|
|
|
85 |
n= 10 : 55+0i -5+15.38842i -5+6.88191i -5+3.632713i -5+1.624598i -5+0i -5-1.624598i -5-3.632713i -5-6.88191i -5-15.38842i
|
|
|
86 |
|
| 85252 |
maechler |
87 |
n= 11 : 66+0i -5.5+18.73128i -5.5+8.558167i -5.5+4.765777i -5.5+2.511766i -5.5+0.7907806i -5.5-0.7907806i -5.5-2.511766i -5.5-4.765777i -5.5-8.558167i -5.5-18.73128i
|
| 35253 |
ripley |
88 |
|
|
|
89 |
n= 12 : 78+0i -6+22.3923i -6+10.3923i -6+6i -6+3.464102i -6+1.607695i -6+0i -6-1.607695i -6-3.464102i -6-6i -6-10.3923i -6-22.3923i
|
|
|
90 |
|
| 85252 |
maechler |
91 |
n= 13 : 91+0i -6.5+26.37154i -6.5+12.38472i -6.5+7.336983i -6.5+4.486626i -6.5+2.465125i -6.5+0.7892429i -6.5-0.7892429i -6.5-2.465125i -6.5-4.486626i -6.5-7.336983i -6.5-12.38472i -6.5-26.37154i
|
| 35253 |
ripley |
92 |
|
|
|
93 |
n= 14 : 105+0i -7+30.669i -7+14.53565i -7+8.777722i -7+5.582314i -7+3.371022i -7+1.597704i -7+0i -7-1.597704i -7-3.371022i -7-5.582314i -7-8.777722i -7-14.53565i -7-30.669i
|
|
|
94 |
|
| 85252 |
maechler |
95 |
n= 15 : 120+0i -7.5+35.28473i -7.5+16.84528i -7.5+10.32286i -7.5+6.75303i -7.5+4.330127i -7.5+2.436898i -7.5+0.7882818i -7.5-0.7882818i -7.5-2.436898i -7.5-4.330127i -7.5-6.75303i -7.5-10.32286i -7.5-16.84528i -7.5-35.28473i
|
| 35253 |
ripley |
96 |
|
|
|
97 |
n= 16 : 136+0i -8+40.21872i -8+19.31371i -8+11.97285i -8+8i -8+5.345429i -8+3.313709i -8+1.591299i -8+0i -8-1.591299i -8-3.313709i -8-5.345429i -8-8i -8-11.97285i -8-19.31371i -8-40.21872i
|
|
|
98 |
|
|
|
99 |
n= 17 : 153+0i -8.5+45.47098i -8.5+21.94103i -8.5+13.72797i -8.5+9.324056i -8.5+6.418902i -8.5+4.232497i -8.5+2.418459i -8.5+0.787641i -8.5-0.787641i -8.5-2.418459i -8.5-4.232497i -8.5-6.418902i -8.5-9.324056i -8.5-13.72797i -8.5-21.94103i -8.5-45.47098i
|
|
|
100 |
|
|
|
101 |
n= 18 : 171+0i -9+51.04154i -9+24.7273i -9+15.58846i -9+10.72578i -9+7.551897i -9+5.196152i -9+3.275732i -9+1.586943i -9+0i -9-1.586943i -9-3.275732i -9-5.196152i -9-7.551897i -9-10.72578i -9-15.58846i -9-24.7273i -9-51.04154i
|
|
|
102 |
|
| 85252 |
maechler |
103 |
n= 19 : 190+0i -9.5+56.93038i -9.5+27.67255i -9.5+17.55446i -9.5+12.2056i -9.5+8.745366i -9.5+6.20666i -9.5+4.167086i -9.5+2.405727i -9.5+0.7871924i -9.5-0.7871924i -9.5-2.405727i -9.5-4.167086i -9.5-6.20666i -9.5-8.745366i -9.5-12.2056i -9.5-17.55446i -9.5-27.67255i -9.5-56.93038i
|
| 35253 |
ripley |
104 |
|
| 85252 |
maechler |
105 |
n= 20 : 210+0i -10+63.13752i -10+30.77684i -10+19.62611i -10+13.76382i -10+10i -10+7.265425i -10+5.095254i -10+3.249197i -10+1.583844i -10+0i -10-1.583844i -10-3.249197i -10-5.095254i -10-7.265425i -10-10i -10-13.76382i -10-19.62611i -10-30.77684i -10-63.13752i
|
| 35253 |
ripley |
106 |
|
| 85252 |
maechler |
107 |
n= 21 : 231+0i -10.5+69.66295i -10.5+34.04016i -10.5+21.80347i -10.5+15.40067i -10.5+11.31631i -10.5+8.373471i -10.5+6.062178i -10.5+4.120946i -10.5+2.396556i -10.5+0.7868662i -10.5-0.7868662i -10.5-2.396556i -10.5-4.120946i -10.5-6.062178i -10.5-8.373471i -10.5-11.31631i -10.5-15.40067i -10.5-21.80347i -10.5-34.04016i -10.5-69.66295i
|
| 35253 |
ripley |
108 |
|
| 85252 |
maechler |
109 |
n= 22 : 253+0i -11+76.50668i -11+37.46256i -11+24.08664i -11+17.11633i -11+12.69468i -11+9.531554i -11+7.069271i -11+5.023532i -11+3.229891i -11+1.581561i -11+0i -11-1.581561i -11-3.229891i -11-5.023532i -11-7.069271i -11-9.531554i -11-12.69468i -11-17.11633i -11-24.08664i -11-37.46256i -11-76.50668i
|
| 35253 |
ripley |
110 |
|
| 85252 |
maechler |
111 |
n= 23 : 276+0i -11.5+83.66871i -11.5+41.04404i -11.5+26.47566i -11.5+18.91094i -11.5+14.1354i -11.5+10.74025i -11.5+8.117586i -11.5+5.95882i -11.5+4.087101i -11.5+2.389727i -11.5+0.7866216i -11.5-0.7866216i -11.5-2.389727i -11.5-4.087101i -11.5-5.95882i -11.5-8.117586i -11.5-10.74025i -11.5-14.1354i -11.5-18.91094i -11.5-26.47566i -11.5-41.04404i -11.5-83.66871i
|
| 35253 |
ripley |
112 |
|
| 85252 |
maechler |
113 |
n= 24 : 300+0i -12+91.14905i -12+44.78461i -12+28.97056i -12+20.78461i -12+15.6387i -12+12i -12+9.207924i -12+6.928203i -12+4.970563i -12+3.21539i -12+1.57983i -12+0i -12-1.57983i -12-3.21539i -12-4.970563i -12-6.928203i -12-9.207924i -12-12i -12-15.6387i -12-20.78461i -12-28.97056i -12-44.78461i -12-91.14905i
|
| 35253 |
ripley |
114 |
|
| 85252 |
maechler |
115 |
n= 25 : 325+0i -12.5+98.94769i -12.5+48.68429i -12.5+31.5714i -12.5+22.73742i -12.5+17.20477i -12.5+13.31115i -12.5+10.3409i -12.5+7.932741i -12.5+5.882054i -12.5+4.061496i -12.5+2.384503i -12.5+0.7864333i -12.5-0.7864333i -12.5-2.384503i -12.5-4.061496i -12.5-5.882054i -12.5-7.932741i -12.5-10.3409i -12.5-13.31115i -12.5-17.20477i -12.5-22.73742i -12.5-31.5714i -12.5-48.68429i -12.5-98.94769i
|
| 35253 |
ripley |
116 |
|
| 85252 |
maechler |
117 |
n= 26 : 351+0i -13+107.0646i -13+52.74307i -13+34.27818i -13+24.76943i -13+18.83375i -13+14.67397i -13+11.517i -13+8.973252i -13+6.822926i -13+4.93025i -13+3.204212i -13+1.578486i -13+0i -13-1.578486i -13-3.204212i -13-4.93025i -13-6.822926i -13-8.973252i -13-11.517i -13-14.67397i -13-18.83375i -13-24.76943i -13-34.27818i -13-52.74307i -13-107.0646i
|
| 35253 |
ripley |
118 |
|
| 85252 |
maechler |
119 |
n= 27 : 378+0i -13.5+115.4999i -13.5+56.96098i -13.5+37.09095i -13.5+26.88071i -13.5+20.52575i -13.5+16.08867i -13.5+12.73659i -13.5+10.05038i -13.5+7.794229i -13.5+5.823332i -13.5+4.041635i -13.5+2.380414i -13.5+0.7862855i -13.5-0.7862855i -13.5-2.380414i -13.5-4.041635i -13.5-5.823332i -13.5-7.794229i -13.5-10.05038i -13.5-12.73659i -13.5-16.08867i -13.5-20.52575i -13.5-26.88071i -13.5-37.09095i -13.5-56.96098i -13.5-115.4999i
|
| 35253 |
ripley |
120 |
|
| 85252 |
maechler |
121 |
n= 28 : 406+0i -14+124.2534i -14+61.33801i -14+40.0097i -14+29.0713i -14+22.28087i -14+17.55544i -14+14i -14+11.16463i -14+8.796783i -14+6.742045i -14+4.898812i -14+3.195409i -14+1.577421i -14+0i -14-1.577421i -14-3.195409i -14-4.898812i -14-6.742045i -14-8.796783i -14-11.16463i -14-14i -14-17.55544i -14-22.28087i -14-29.0713i -14-40.0097i -14-61.33801i -14-124.2534i
|
| 35253 |
ripley |
122 |
|
| 85252 |
maechler |
123 |
n= 29 : 435+0i -14.5+133.3253i -14.5+65.87416i -14.5+43.03447i -14.5+31.34124i -14.5+24.09919i -14.5+19.07442i -14.5+15.30746i -14.5+12.31641i -14.5+9.831244i -14.5+7.687413i -14.5+5.777328i -14.5+4.025905i -14.5+2.377154i -14.5+0.7861672i -14.5-0.7861672i -14.5-2.377154i -14.5-4.025905i -14.5-5.777328i -14.5-7.687413i -14.5-9.831244i -14.5-12.31641i -14.5-15.30746i -14.5-19.07442i -14.5-24.09919i -14.5-31.34124i -14.5-43.03447i -14.5-65.87416i -14.5-133.3253i
|
| 35253 |
ripley |
124 |
|
| 85252 |
maechler |
125 |
n= 30 : 465+0i -15+142.7155i -15+70.56945i -15+46.16525i -15+33.69055i -15+25.98076i -15+20.64573i -15+16.65919i -15+13.50606i -15+10.89814i -15+8.660254i -15+6.67843i -15+4.873795i -15+3.188348i -15+1.576564i -15+0i -15-1.576564i -15-3.188348i -15-4.873795i -15-6.67843i -15-8.660254i -15-10.89814i -15-13.50606i -15-16.65919i -15-20.64573i -15-25.98076i -15-33.69055i -15-46.16525i -15-70.56945i -15-142.7155i
|
| 35226 |
ripley |
126 |
>
|
| 35253 |
ripley |
127 |
>
|
| 54249 |
ripley |
128 |
> ## polyroot():
|
|
|
129 |
> stopifnot(abs(1 + polyroot(choose(8, 0:8))) < 1e-10)# maybe smaller..
|
|
|
130 |
>
|
|
|
131 |
> ## precision of complex numbers
|
|
|
132 |
> signif(1.678932e80+0i, 5)
|
|
|
133 |
[1] 1.6789e+80+0i
|
|
|
134 |
> signif(1.678932e-300+0i, 5)
|
|
|
135 |
[1] 1.6789e-300+0i
|
|
|
136 |
> signif(1.678932e-302+0i, 5)
|
|
|
137 |
[1] 1.6789e-302+0i
|
|
|
138 |
> signif(1.678932e-303+0i, 5)
|
|
|
139 |
[1] 1.6789e-303+0i
|
|
|
140 |
> signif(1.678932e-304+0i, 5)
|
|
|
141 |
[1] 1.6789e-304+0i
|
|
|
142 |
> signif(1.678932e-305+0i, 5)
|
|
|
143 |
[1] 1.6789e-305+0i
|
|
|
144 |
> signif(1.678932e-306+0i, 5)
|
|
|
145 |
[1] 1.6789e-306+0i
|
|
|
146 |
> signif(1.678932e-307+0i, 5)
|
|
|
147 |
[1] 1.6789e-307+0i
|
|
|
148 |
> signif(1.678932e-308+0i, 5)
|
|
|
149 |
[1] 1.6789e-308+0i
|
|
|
150 |
> signif(1.678932-1.238276i, 5)
|
|
|
151 |
[1] 1.6789-1.2383i
|
|
|
152 |
> signif(1.678932-1.238276e-1i, 5)
|
|
|
153 |
[1] 1.6789-0.1238i
|
|
|
154 |
> signif(1.678932-1.238276e-2i, 5)
|
|
|
155 |
[1] 1.6789-0.0124i
|
|
|
156 |
> signif(1.678932-1.238276e-3i, 5)
|
|
|
157 |
[1] 1.6789-0.0012i
|
|
|
158 |
> signif(1.678932-1.238276e-4i, 5)
|
| 85252 |
maechler |
159 |
[1] 1.6789-1e-04i
|
| 54249 |
ripley |
160 |
> signif(1.678932-1.238276e-5i, 5)
|
|
|
161 |
[1] 1.6789+0i
|
|
|
162 |
> signif(8.678932-9.238276i, 5)
|
|
|
163 |
[1] 8.6789-9.2383i
|
|
|
164 |
> ## prior to 2.2.0 rounded real and imaginary parts separately.
|
|
|
165 |
>
|
|
|
166 |
>
|
| 35226 |
ripley |
167 |
> ## Complex Trig.:
|
|
|
168 |
> abs(Im(cos(acos(1i))) - 1) < 2*Meps
|
|
|
169 |
[1] TRUE
|
|
|
170 |
> abs(Im(sin(asin(1i))) - 1) < 2*Meps
|
|
|
171 |
[1] TRUE
|
|
|
172 |
> ##P (1 - Im(sin(asin(Ii))))/Meps
|
|
|
173 |
> ##P (1 - Im(cos(acos(Ii))))/Meps
|
|
|
174 |
> abs(Im(asin(sin(1i))) - 1) < 2*Meps
|
|
|
175 |
[1] TRUE
|
| 57524 |
ripley |
176 |
> all.equal(cos(1i), cos(-1i)) # i.e. Im(acos(*)) gives + or - 1i:
|
| 35226 |
ripley |
177 |
[1] TRUE
|
|
|
178 |
> abs(abs(Im(acos(cos(1i)))) - 1) < 4*Meps
|
|
|
179 |
[1] TRUE
|
|
|
180 |
>
|
|
|
181 |
>
|
| 42034 |
ripley |
182 |
> set.seed(123) # want reproducible output
|
| 35226 |
ripley |
183 |
> Isi <- Im(sin(asin(1i + rnorm(100))))
|
|
|
184 |
> all(abs(Isi-1) < 100* Meps)
|
|
|
185 |
[1] TRUE
|
|
|
186 |
> ##P table(2*abs(Isi-1) / Meps)
|
|
|
187 |
> Isi <- Im(cos(acos(1i + rnorm(100))))
|
|
|
188 |
> all(abs(Isi-1) < 100* Meps)
|
|
|
189 |
[1] TRUE
|
|
|
190 |
> ##P table(2*abs(Isi-1) / Meps)
|
|
|
191 |
> Isi <- Im(atan(tan(1i + rnorm(100)))) #-- tan(atan(..)) does NOT work (Math!)
|
|
|
192 |
> all(abs(Isi-1) < 100* Meps)
|
|
|
193 |
[1] TRUE
|
|
|
194 |
> ##P table(2*abs(Isi-1) / Meps)
|
|
|
195 |
>
|
| 54249 |
ripley |
196 |
> set.seed(123)
|
|
|
197 |
> z <- complex(real = rnorm(100), imag = rnorm(100))
|
|
|
198 |
> stopifnot(Mod ( 1 - sin(z) / ( (exp(1i*z)-exp(-1i*z))/(2*1i) )) < 20 * Meps)
|
|
|
199 |
> ## end of moved from complex.Rd
|
| 35226 |
ripley |
200 |
>
|
|
|
201 |
>
|
|
|
202 |
> ## PR#7781
|
|
|
203 |
> ## This is not as given by e.g. glibc on AMD64
|
|
|
204 |
> (z <- tan(1+1000i)) # 0+1i from R's own code.
|
|
|
205 |
[1] 0+1i
|
|
|
206 |
> stopifnot(is.finite(z))
|
|
|
207 |
> ##
|
|
|
208 |
>
|
|
|
209 |
>
|
|
|
210 |
> ## Branch cuts in complex inverse trig functions
|
|
|
211 |
> atan(2)
|
|
|
212 |
[1] 1.107149
|
|
|
213 |
> atan(2+0i)
|
|
|
214 |
[1] 1.107149+0i
|
|
|
215 |
> tan(atan(2+0i))
|
|
|
216 |
[1] 2+0i
|
| 35227 |
ripley |
217 |
> ## should not expect exactly 0i in result
|
|
|
218 |
> round(atan(1.0001+0i), 7)
|
| 35226 |
ripley |
219 |
[1] 0.7854482+0i
|
| 35227 |
ripley |
220 |
> round(atan(0.9999+0i), 7)
|
| 35226 |
ripley |
221 |
[1] 0.7853482+0i
|
|
|
222 |
> ## previously not as in Abramowitz & Stegun.
|
|
|
223 |
>
|
|
|
224 |
>
|
|
|
225 |
> ## typo in z_atan2.
|
|
|
226 |
> (z <- atan2(0+1i, 0+0i))
|
|
|
227 |
[1] 1.570796+0i
|
|
|
228 |
> stopifnot(all.equal(z, pi/2+0i))
|
|
|
229 |
> ## was NA in 2.1.1
|
|
|
230 |
>
|
| 35250 |
ripley |
231 |
>
|
| 54249 |
ripley |
232 |
> ## Hyperbolic
|
|
|
233 |
> x <- seq(-3, 3, len=200)
|
|
|
234 |
> Meps <- .Machine$double.eps
|
|
|
235 |
> stopifnot(
|
|
|
236 |
+ Mod(cosh(x) - cos(1i*x)) < 20*Meps,
|
| 54435 |
ripley |
237 |
+ Mod(sinh(x) - sin(1i*x)/1i) < 20*Meps
|
| 54249 |
ripley |
238 |
+ )
|
|
|
239 |
> ## end of moved from Hyperbolic.Rd
|
| 35250 |
ripley |
240 |
>
|
| 54262 |
ripley |
241 |
> ## values near and on branch cuts
|
|
|
242 |
> options(digits=5)
|
|
|
243 |
> z <- c(2+0i, 2-0.0001i, -2+0i, -2+0.0001i)
|
|
|
244 |
> asin(z)
|
|
|
245 |
[1] 1.5708-1.317i 1.5707-1.317i -1.5708+1.317i -1.5707+1.317i
|
|
|
246 |
> acos(z)
|
| 85252 |
maechler |
247 |
[1] 0.0000e+00+1.317i 5.7735e-05+1.317i 3.1416e+00-1.317i 3.1415e+00-1.317i
|
| 54262 |
ripley |
248 |
> atanh(z)
|
| 85252 |
maechler |
249 |
[1] 0.54931-1.5708i 0.54931-1.5708i -0.54931+1.5708i -0.54931+1.5708i
|
| 54262 |
ripley |
250 |
> z <- c(0+2i, 0.0001+2i, 0-2i, -0.0001i-2i)
|
|
|
251 |
> asinh(z)
|
|
|
252 |
[1] 1.317+1.5708i 1.317+1.5707i -1.317-1.5708i -1.317-1.5708i
|
|
|
253 |
> acosh(z)
|
|
|
254 |
[1] 1.4436+1.5708i 1.4436+1.5708i -1.4436+1.5708i -1.4437+1.5708i
|
|
|
255 |
> atan(z)
|
| 85252 |
maechler |
256 |
[1] 1.5708+0.54931i 1.5708+0.54931i -1.5708-0.54931i -1.5708-0.54927i
|
| 54435 |
ripley |
257 |
> ## According to C99, should have continuity from the side given if there
|
| 70787 |
ripley |
258 |
> ## are not signed zeros.
|
|
|
259 |
> ## Both glibc 2.12 and macOS 10.6 used continuity from above in the first set
|
| 54435 |
ripley |
260 |
> ## but they seem to assume signed zeros.
|
| 54262 |
ripley |
261 |
> ## Windows gave incorrect (NaN) values on the cuts.
|
|
|
262 |
>
|
| 72424 |
ligges |
263 |
> stopifnot(identical(tanh(356+0i), 1+0i))
|
|
|
264 |
> ## Used to be NaN+0i on Windows
|
|
|
265 |
>
|
| 69410 |
maechler |
266 |
> ## Not a regression test, but rather one of the good cases:
|
|
|
267 |
> (cNaN <- as.complex("NaN"))
|
|
|
268 |
[1] NaN+0i
|
|
|
269 |
> stopifnot(identical(cNaN, complex(re = NaN)), is.nan(Re(cNaN)), Im(cNaN) == 0)
|
|
|
270 |
> dput(cNaN) ## (real = NaN, imaginary = 0)
|
|
|
271 |
complex(real=NaN, imaginary=0)
|
|
|
272 |
> ## Partly new behavior:
|
|
|
273 |
> (c0NaN <- complex(real=0, im=NaN))
|
|
|
274 |
[1] 0+NaNi
|
|
|
275 |
> (cNaNaN <- complex(re=NaN, im=NaN))
|
|
|
276 |
[1] NaN+NaNi
|
|
|
277 |
> stopifnot(identical(cNaN, as.complex(NaN)),
|
|
|
278 |
+ identical(vapply(c(cNaN, c0NaN, cNaNaN), format, ""),
|
|
|
279 |
+ c("NaN+0i", "0+NaNi", "NaN+NaNi")),
|
|
|
280 |
+ identical(cNaN, NaN + 0i),
|
|
|
281 |
+ identical(cNaN, Conj(cNaN)),
|
|
|
282 |
+ identical(cNaN, cNaN+cNaN),
|
|
|
283 |
+
|
|
|
284 |
+ identical(cNaNaN, 1i * NaN),
|
|
|
285 |
+ identical(cNaNaN, complex(modulus= NaN)),
|
|
|
286 |
+ identical(cNaNaN, complex(argument= NaN)),
|
|
|
287 |
+ identical(cNaNaN, complex(arg=NaN, mod=NaN)),
|
|
|
288 |
+
|
|
|
289 |
+ identical(c0NaN, c0NaN+c0NaN), # !
|
| 69428 |
ripley |
290 |
+ ## Platform dependent, not TRUE e.g. on F21 gcc 4.9.2:
|
|
|
291 |
+ ## identical(NA_complex_, NaN + NA_complex_ ) ,
|
| 69410 |
maechler |
292 |
+ ## Probably TRUE, but by a standard ??
|
|
|
293 |
+ ## identical(cNaNaN, 2 * c0NaN), # C-library arithmetic
|
|
|
294 |
+ ## identical(cNaNaN, 2 * cNaN), # C-library arithmetic
|
|
|
295 |
+ ## identical(cNaNaN, NA_complex_ * Inf),
|
|
|
296 |
+ TRUE)
|
| 54262 |
ripley |
297 |
>
|