File tree Expand file tree Collapse file tree 4 files changed +43
-0
lines changed Expand file tree Collapse file tree 4 files changed +43
-0
lines changed Original file line number Diff line number Diff line change @@ -541,6 +541,30 @@ function cis(z::Complex)
541
541
Complex (v * c, v * s)
542
542
end
543
543
544
+ cispi (theta:: Real ) = Complex (reverse (sincospi (theta))... )
545
+
546
+ """
547
+ cispi(z)
548
+
549
+ Compute ``\\ exp(i\\ pi x)`` more accurately than `cis(pi*x)`, especially for large `x`.
550
+
551
+ # Examples
552
+ ```jldoctest
553
+ julia> cispi(1)
554
+ -1.0 + 0.0im
555
+
556
+ julia> cispi(0.25 + 1im)
557
+ 0.030556854645952924 + 0.030556854645952924im
558
+ ```
559
+
560
+ !!! compat "Julia 1.6"
561
+ This function requires Julia 1.6 or later.
562
+ """
563
+ function cispi (z:: Complex )
564
+ sipi, copi = sincospi (z)
565
+ return complex (real (copi) - imag (sipi), imag (copi) + real (sipi))
566
+ end
567
+
544
568
"""
545
569
angle(z)
546
570
Original file line number Diff line number Diff line change @@ -229,6 +229,7 @@ export
229
229
cbrt,
230
230
ceil,
231
231
cis,
232
+ cispi,
232
233
clamp,
233
234
cld,
234
235
cmp,
Original file line number Diff line number Diff line change @@ -162,6 +162,7 @@ Base.reim
162
162
Base.conj
163
163
Base.angle
164
164
Base.cis
165
+ Base.cispi
165
166
Base.binomial
166
167
Base.factorial
167
168
Base.gcd
Original file line number Diff line number Diff line change 123
123
@test atanh (x) ≈ atanh (big (x))
124
124
@test cis (real (x)) ≈ cis (real (big (x)))
125
125
@test cis (x) ≈ cis (big (x))
126
+ @test cispi (real (x)) ≈ cispi (real (big (x)))
127
+ @test cispi (x) ≈ cispi (big (x))
126
128
@test cos (x) ≈ cos (big (x))
127
129
@test cosh (x) ≈ cosh (big (x))
128
130
@test exp (x) ≈ exp (big (x))
918
920
@test cis (1.0 + 0.0im ) ≈ 0.54030230586813971740093660744297660373231042061 + 0.84147098480789650665250232163029899962256306079im
919
921
@test cis (pi ) ≈ - 1.0 + 0.0im
920
922
@test cis (pi / 2 ) ≈ 0.0 + 1.0im
923
+ @test cispi (false ) == 1
924
+ @test cispi (true ) == - 1
925
+ @test cispi (- 1 ) == - 1
926
+ @test cispi (0 ) == 1
927
+ @test cispi (1 ) == - 1
928
+ @test cispi (2 ) == 1
929
+ @test cispi (0.0 ) == cispi (0 )
930
+ @test cispi (1.0 ) == cispi (1 )
931
+ @test cispi (2.0 ) == cispi (2 )
932
+ @test cispi (0.5 ) == im
933
+ @test cispi (1.5 ) == - im
934
+ @test cispi (0.25 ) ≈ cis (π/ 4 )
935
+ @test cispi (0.0 + 0.0im ) == cispi (0 )
936
+ @test cispi (1.0 + 0.0im ) == cispi (1 )
937
+ @test cispi (2.0 + 0.0im ) == cispi (2 )
921
938
end
922
939
923
940
@testset " exp2" begin
You can’t perform that action at this time.
0 commit comments