Skip to content

Commit 1e5fdb2

Browse files
simonbyrnegiordano
andauthored
update MPFR to 4.2.0 (#48165)
Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com>
1 parent 79ceb8d commit 1e5fdb2

File tree

6 files changed

+112
-79
lines changed

6 files changed

+112
-79
lines changed

base/mpfr.jl

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import
1616
cosh, sinh, tanh, sech, csch, coth, acosh, asinh, atanh, lerpi,
1717
cbrt, typemax, typemin, unsafe_trunc, floatmin, floatmax, rounding,
1818
setrounding, maxintfloat, widen, significand, frexp, tryparse, iszero,
19-
isone, big, _string_n, decompose, minmax
19+
isone, big, _string_n, decompose, minmax,
20+
sinpi, cospi, sincospi, sind, cosd, tand, asind, acosd, atand
2021

2122
import ..Rounding: rounding_raw, setrounding_raw
2223

@@ -780,7 +781,7 @@ function sum(arr::AbstractArray{BigFloat})
780781
end
781782

782783
# Functions for which NaN results are converted to DomainError, following Base
783-
for f in (:sin, :cos, :tan, :sec, :csc, :acos, :asin, :atan, :acosh, :asinh, :atanh)
784+
for f in (:sin, :cos, :tan, :sec, :csc, :acos, :asin, :atan, :acosh, :asinh, :atanh, :sinpi, :cospi)
784785
@eval begin
785786
function ($f)(x::BigFloat)
786787
isnan(x) && return x
@@ -791,13 +792,40 @@ for f in (:sin, :cos, :tan, :sec, :csc, :acos, :asin, :atan, :acosh, :asinh, :at
791792
end
792793
end
793794
end
795+
sincospi(x::BigFloat) = (sinpi(x), cospi(x))
794796

795797
function atan(y::BigFloat, x::BigFloat)
796798
z = BigFloat()
797799
ccall((:mpfr_atan2, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Ref{BigFloat}, MPFRRoundingMode), z, y, x, ROUNDING_MODE[])
798800
return z
799801
end
800802

803+
# degree functions
804+
for f in (:sin, :cos, :tan)
805+
@eval begin
806+
function ($(Symbol(f,:d)))(x::BigFloat)
807+
isnan(x) && return x
808+
z = BigFloat()
809+
ccall(($(string(:mpfr_,f,:u)), :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), z, x, 360, ROUNDING_MODE[])
810+
isnan(z) && throw(DomainError(x, "NaN result for non-NaN input."))
811+
return z
812+
end
813+
function ($(Symbol(:a,f,:d)))(x::BigFloat)
814+
isnan(x) && return x
815+
z = BigFloat()
816+
ccall(($(string(:mpfr_a,f,:u)), :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), z, x, 360, ROUNDING_MODE[])
817+
isnan(z) && throw(DomainError(x, "NaN result for non-NaN input."))
818+
return z
819+
end
820+
end
821+
end
822+
function atand(y::BigFloat, x::BigFloat)
823+
z = BigFloat()
824+
ccall((:mpfr_atan2u, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), z, y, x, 360, ROUNDING_MODE[])
825+
return z
826+
end
827+
828+
801829
# Utility functions
802830
==(x::BigFloat, y::BigFloat) = ccall((:mpfr_equal_p, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}), x, y) != 0
803831
<=(x::BigFloat, y::BigFloat) = ccall((:mpfr_lessequal_p, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}), x, y) != 0
@@ -1053,7 +1081,7 @@ function _string(x::BigFloat, fmt::String)::String
10531081
isfinite(x) || return string(Float64(x))
10541082
_prettify_bigfloat(string_mpfr(x, fmt))
10551083
end
1056-
_string(x::BigFloat) = _string(x, "%.Re")
1084+
_string(x::BigFloat) = _string(x, "%Re")
10571085
_string(x::BigFloat, k::Integer) = _string(x, "%.$(k)Re")
10581086

10591087
string(b::BigFloat) = _string(b)

deps/checksums/mpfr

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1-
MPFR.v4.1.1+4.aarch64-apple-darwin.tar.gz/md5/07c92f3104cf508189292287719e77df
2-
MPFR.v4.1.1+4.aarch64-apple-darwin.tar.gz/sha512/75f828f39091abcb8c8742ba7ea2bea2affb1644848a4272ec39081d6ad1399f027c3371f922d424c5d8bc72b78b408ce78f53a3c7b784140b2002f140684665
3-
MPFR.v4.1.1+4.aarch64-linux-gnu.tar.gz/md5/a6f60de83c161fa401c5a49c283ee94a
4-
MPFR.v4.1.1+4.aarch64-linux-gnu.tar.gz/sha512/1c3f52d0f3c9005f2290a7a632458486972f768a9772a55ec59438f5010441768e1351a1a23e4a0b1f341b038324ceea0032b1efc0a0ad017aacbf70cde2cafb
5-
MPFR.v4.1.1+4.aarch64-linux-musl.tar.gz/md5/8e6bc4cf8b94bdbd08ec7428d29f75b7
6-
MPFR.v4.1.1+4.aarch64-linux-musl.tar.gz/sha512/08489b81aa665bb2eb62c6c804c1c041c90587a0df6004a10017a3490c4ad049511dcca29cf38dbaada44fbf783b2bd1a788797dc16f128adce77bef4ec9a4a3
7-
MPFR.v4.1.1+4.armv6l-linux-gnueabihf.tar.gz/md5/f6f7f3f264e7b48ee9a518f21a7249f5
8-
MPFR.v4.1.1+4.armv6l-linux-gnueabihf.tar.gz/sha512/3b45907a1de70fcddf5a0fb90ce45d5dabf09f11b92e1174e2779a79b0991c75b1c9037981b0cd999f32cebfc358d311377af71130222a5b81dbb43c0a9ebe76
9-
MPFR.v4.1.1+4.armv6l-linux-musleabihf.tar.gz/md5/07304ab9676c39c56aad073f2825fd1d
10-
MPFR.v4.1.1+4.armv6l-linux-musleabihf.tar.gz/sha512/3c7a872aab1baa4d1966cbf42cc09799944d319441f41df560632f5e4d9af9c71de25c714faab223aa1cf4e5ae09ff68c514d073711b07758e033cd492bf7eb7
11-
MPFR.v4.1.1+4.armv7l-linux-gnueabihf.tar.gz/md5/261482058f90306858833156bb332281
12-
MPFR.v4.1.1+4.armv7l-linux-gnueabihf.tar.gz/sha512/c0acb7f476a736360763e269fb7b309b9f8843d19a9931694bb01efe77e6fe4f12c969d9ae0e16c16cb14cd9a0d67ff91fa02ba141c3f2f7b908170cac216800
13-
MPFR.v4.1.1+4.armv7l-linux-musleabihf.tar.gz/md5/c61c6d04f3d4147b76480867e90d2262
14-
MPFR.v4.1.1+4.armv7l-linux-musleabihf.tar.gz/sha512/3e6cc63c7404899de3d4e4da208c40e363f427ce1bd4f0c1d5d04711870239240a8b98e4d152f6d78128e4430f703ab0debe6c35e6cd8ef80aa4a605105d619f
15-
MPFR.v4.1.1+4.i686-linux-gnu.tar.gz/md5/0dff053d5488f220f94a56beae0bf4a4
16-
MPFR.v4.1.1+4.i686-linux-gnu.tar.gz/sha512/26c5c4b91998f5bcffcf5a873c451acab376efd25e13671ec5cb4f1316d1866cf7fc841f7aff17a339326ed1730b720be8ab39349ff5cee0619891925b4eb79e
17-
MPFR.v4.1.1+4.i686-linux-musl.tar.gz/md5/2edb5f985db6b39115f13bd05d623677
18-
MPFR.v4.1.1+4.i686-linux-musl.tar.gz/sha512/207f346be68458aeadc803d0466eba428b63c7ee9c654b06c00ae4a7e2bbd01ab3644f1db1ef9870730937a37e658956bdc2fdcab70d4619e149574a48a7191d
19-
MPFR.v4.1.1+4.i686-w64-mingw32.tar.gz/md5/7228b731bfb530c48d5afe7c5f51cccc
20-
MPFR.v4.1.1+4.i686-w64-mingw32.tar.gz/sha512/faac80db43d5c252c8d7f90a56b832b6a8bd7543465dadc57dfc8590c6eb54e49c96d6b337b4caeeba73917440be512d115b54485de73b6194f67d67e3d11dce
21-
MPFR.v4.1.1+4.powerpc64le-linux-gnu.tar.gz/md5/27e01308e698ddd83a68cd0fdbea318b
22-
MPFR.v4.1.1+4.powerpc64le-linux-gnu.tar.gz/sha512/48718cff4df3e16c50d7ed47fc0a693699919b9033fd31084e125d8a7abb68cecfcf6e1b34be83f4b6ada9d168a01fc653b4e33e1b5021b3143e603b560a8225
23-
MPFR.v4.1.1+4.x86_64-apple-darwin.tar.gz/md5/a91682cb62bd6c7f8acb36a33585867a
24-
MPFR.v4.1.1+4.x86_64-apple-darwin.tar.gz/sha512/82d2ff90e1a8a358f2fab643dfc3ead84edc8fabcf956b7479c0a0b1005430187a5315951e1b160e843776233cb2d655b5a27cfd37691cfed42f9b89f824e525
25-
MPFR.v4.1.1+4.x86_64-linux-gnu.tar.gz/md5/d3a3c97177e554685882f7b9f3eb0ee8
26-
MPFR.v4.1.1+4.x86_64-linux-gnu.tar.gz/sha512/c7af9df8c12ea3d3f784a048aae7c630f07515b509d9d0a3e0003b9697a3370112c3507a39b442d80a5671df95c2fa6a20b446443ac4cb0d48f3108e21e0d755
27-
MPFR.v4.1.1+4.x86_64-linux-musl.tar.gz/md5/bda6453ee85bf43348c41ebfd4accc94
28-
MPFR.v4.1.1+4.x86_64-linux-musl.tar.gz/sha512/0e85dd4361a67c7fe91bf9fffaad0eddfc93d578b0452e662628124d1e7589502221f20919d442875c731f57678c87b30ccfa1e9a00a77a6b42740dce96fd410
29-
MPFR.v4.1.1+4.x86_64-unknown-freebsd.tar.gz/md5/b2e40a50e486991660c30985a0ee6214
30-
MPFR.v4.1.1+4.x86_64-unknown-freebsd.tar.gz/sha512/bfc3010b2c94384ca2050b41e08ca26b22c813c1f38b274074854430a736f0f45530ee0df36030cfa479950848d8623c4e9b07fc8de4f6fbfda31a98abc9a4c6
31-
MPFR.v4.1.1+4.x86_64-w64-mingw32.tar.gz/md5/1b87833f68846d342dbdf283f3d39170
32-
MPFR.v4.1.1+4.x86_64-w64-mingw32.tar.gz/sha512/5c85a5664b4106eae733be0a85e8ab645b93dd78983cab8741cc13451ea429cb432a783f5a3b2a815db9376eb8bf83a6649247ef028d6a7f5dab9e519a9005b4
33-
mpfr-4.1.1.tar.bz2/md5/48eea07f8bb60dd9bbec1ec37a749f24
34-
mpfr-4.1.1.tar.bz2/sha512/f0efefbfc4dec367cdab6299272062508ec80d53daa779fe05954cd626983277039a10d9d072ae686584f6ce75014ef2136e3f095128fa21fc994f7c6f33d674
1+
MPFR.v4.2.0+0.aarch64-apple-darwin.tar.gz/md5/f9393a636497b19c846343b456b2dd7e
2+
MPFR.v4.2.0+0.aarch64-apple-darwin.tar.gz/sha512/a77a0387e84f572ef5558977096e70da8eb7b3674a8198cc6ae35462971f76d684145ffae7c2ddca32e2bd1c8b2ccb33e4447eb8606d5d5cd5958298472b3ea9
3+
MPFR.v4.2.0+0.aarch64-linux-gnu.tar.gz/md5/ade253017d195de694780c32f9161dcf
4+
MPFR.v4.2.0+0.aarch64-linux-gnu.tar.gz/sha512/1b68de5f8e557b7434c8c1bc016227b58683b56c0977b763422ea85a673bec446fcfee3a4f69e1d4689abb9bb6bf47f2a50fbb56ecac6a9d40096e66bd0f2080
5+
MPFR.v4.2.0+0.aarch64-linux-musl.tar.gz/md5/7dbd121c7192ccaf7191de5ab8d91afb
6+
MPFR.v4.2.0+0.aarch64-linux-musl.tar.gz/sha512/8614e3cb28491b24a0ec5060b44abaf264b61c91ddd29d70105ff583bd3112cff1b9bd5ed45e39f186265333982d5eeb8bf35fedc3b51b2a009cc7a51046b50b
7+
MPFR.v4.2.0+0.armv6l-linux-gnueabihf.tar.gz/md5/adb2b7fdf111c8b19df1516cfb278bb1
8+
MPFR.v4.2.0+0.armv6l-linux-gnueabihf.tar.gz/sha512/0c47aeffd05a194802f6c4e0e2779d56fb46007e6c3e145ee6992854a21a317a9d51512c59a0ce4ddcd314c387945225c6557d6c2ab6961ae4848875e8983de8
9+
MPFR.v4.2.0+0.armv6l-linux-musleabihf.tar.gz/md5/c30358bdeffcff65ba9be906cd35889b
10+
MPFR.v4.2.0+0.armv6l-linux-musleabihf.tar.gz/sha512/2857ec27ae2d53a451d62dd241ce9b43f7ee182bee180ecd9ad92c907c66d0b0ab2d1ea3b20fe61cc176ae44ecbe6041305cc8a9343b396c9cb54dd77a1e2868
11+
MPFR.v4.2.0+0.armv7l-linux-gnueabihf.tar.gz/md5/a1e30436bade2150c9dc924177f0c321
12+
MPFR.v4.2.0+0.armv7l-linux-gnueabihf.tar.gz/sha512/d2f4662c494fefda66847e7a085edda3ce396383aafb4e17fc2e176191b0f530541726c261cac3467f13136e8ec728c8a7cf0e352f3e9ebf960d153cbfe766b8
13+
MPFR.v4.2.0+0.armv7l-linux-musleabihf.tar.gz/md5/857e3c82804e7c853d21603f18caa715
14+
MPFR.v4.2.0+0.armv7l-linux-musleabihf.tar.gz/sha512/86cf3e940fd66820b5269e9aa2a49c3fc3077857bec037a08e0d301b0bf3cc5c79ac331cc6370d852e20f4acf8f601c49d5dbe24e96652e4411b3f33a11e3f45
15+
MPFR.v4.2.0+0.i686-linux-gnu.tar.gz/md5/5a432be79a112e67e970980f4bde13a0
16+
MPFR.v4.2.0+0.i686-linux-gnu.tar.gz/sha512/94198b23ac94dcb9dca95938a46b9899c3ef329bafbb13b32076cd3415b89f11908632c7c07e90549c01bd9ed7fc9a002dae07a645f85b8509234c49be729621
17+
MPFR.v4.2.0+0.i686-linux-musl.tar.gz/md5/4ce71dc250c2469f844a02c6ee6571a1
18+
MPFR.v4.2.0+0.i686-linux-musl.tar.gz/sha512/134b67b23de75ab172594cd0fac55b5c265730bfea195978698e3e6fbc47d65617652bd72d90ba092ed1bac4c29d5b2c109df5d8dc60b5d8f91159fd58575b67
19+
MPFR.v4.2.0+0.i686-w64-mingw32.tar.gz/md5/df41bde61d33b56fd48bdb0f9ec0c624
20+
MPFR.v4.2.0+0.i686-w64-mingw32.tar.gz/sha512/145bc14f22eb077992cd993a20d3205eeeee1d2bb99ff4f48277173b0b39c848e2cd3044d2141003607aa4ea3665546a87b9ffea87bf570ab1b152117ef4045c
21+
MPFR.v4.2.0+0.powerpc64le-linux-gnu.tar.gz/md5/d818894054b38232ba02ee0e129f6fe0
22+
MPFR.v4.2.0+0.powerpc64le-linux-gnu.tar.gz/sha512/0e73ca926f3e06466d1899f0b3e9ae4abe15102804dce6716ce23154344a571773c40d276f0038a0ae4e626799867ee715428e1d961334a01ad3091745367e8e
23+
MPFR.v4.2.0+0.x86_64-apple-darwin.tar.gz/md5/9652148df4e771be39713c4f43d3ff61
24+
MPFR.v4.2.0+0.x86_64-apple-darwin.tar.gz/sha512/91a0219fd1880dfa90d196fa403f4e1df0347ced58a4772492196b94476f346d80696885a4f3520424494bc09679cca0c0ccf2f6e9247d60b52ebdf564485e72
25+
MPFR.v4.2.0+0.x86_64-linux-gnu.tar.gz/md5/4de39327a792be708119ac7b43957628
26+
MPFR.v4.2.0+0.x86_64-linux-gnu.tar.gz/sha512/447b59d5589a8517061627668e8baed4366408cacc9d8e063528b9b795de6d27e4005844578310185f03f568f4948bc4a794624235875fb61b6187264b6f483b
27+
MPFR.v4.2.0+0.x86_64-linux-musl.tar.gz/md5/f9b8c3c094b339341b19828cc5e1d47c
28+
MPFR.v4.2.0+0.x86_64-linux-musl.tar.gz/sha512/c661e7c5bded3bdf11b2bd5e5ef4ad8e446934d9b82dfe26f0be1b83cea98d7e56e0903bfc1075f91c8d23401cc6b3b722f2d60f46d73cab884e81fe518aba27
29+
MPFR.v4.2.0+0.x86_64-unknown-freebsd.tar.gz/md5/83700aaebc7344d84d70f0bd0f9c7890
30+
MPFR.v4.2.0+0.x86_64-unknown-freebsd.tar.gz/sha512/039cb18a142a90fadc7951f05324fe9c033da9502a61da77fdcd5d9557075ad1ca8500b9b9b39ce57a44b9cb28d41dfc6cbde10cfdbdb40077ebada24a2bab9a
31+
MPFR.v4.2.0+0.x86_64-w64-mingw32.tar.gz/md5/9cdaa3fc0d13a8835d165c745937c385
32+
MPFR.v4.2.0+0.x86_64-w64-mingw32.tar.gz/sha512/21464bf836362ecc50da82859a4ba2de3d32d76ff57de9719ac850e73918814e1002130e0d6797fbb914b822f13bea383be3a29b2a1c9c8415cb2e3c5d321669
33+
mpfr-4.2.0.tar.bz2/md5/f8c66d737283fd35f9fe433fb419b05f
34+
mpfr-4.2.0.tar.bz2/sha512/cb2a9314b94e34a4ea49ce2619802e9420c982e55258a4bc423f802740632646a3d420e7fcf373b19618385b8b2b412abfa127e8f473053863424cac233893c0

deps/mpfr.version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
MPFR_JLL_NAME := MPFR
33

44
## source build
5-
MPFR_VER := 4.1.1
5+
MPFR_VER := 4.2.0

stdlib/MPFR_jll/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "MPFR_jll"
22
uuid = "3a97d323-0669-5f0c-9066-3539efd106a3"
3-
version = "4.1.1+4"
3+
version = "4.2.0+0"
44

55
[deps]
66
GMP_jll = "781609d7-10c4-51f6-84f2-b8444358ff6d"

stdlib/MPFR_jll/test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ using Test, Libdl, MPFR_jll
44

55
@testset "MPFR_jll" begin
66
vn = VersionNumber(unsafe_string(ccall((:mpfr_get_version,libmpfr), Cstring, ())))
7-
@test vn == v"4.1.1"
7+
@test vn == v"4.2.0"
88
end

test/math.jl

Lines changed: 44 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ has_fma = Dict(
1919
Rational{Int} => has_fma_Int(),
2020
Float32 => has_fma_Float32(),
2121
Float64 => has_fma_Float64(),
22+
BigFloat => true,
2223
)
2324

2425
@testset "clamp" begin
@@ -424,47 +425,51 @@ end
424425
@test rad2deg(pi + (pi/3)*im) 180 + 60im
425426
end
426427

428+
# ensure zeros are signed the same
429+
(x,y) = typeof(x) == typeof(y) && x == y && signbit(x) == signbit(y)
430+
(x::Tuple, y::Tuple) = length(x) == length(y) && all(map(,x,y))
431+
427432
@testset "degree-based trig functions" begin
428-
@testset "$T" for T = (Float32,Float64,Rational{Int})
433+
@testset "$T" for T = (Float32,Float64,Rational{Int},BigFloat)
429434
fT = typeof(float(one(T)))
430435
fTsc = typeof( (float(one(T)), float(one(T))) )
431436
for x = -400:40:400
432-
@test sind(convert(T,x))::fT convert(fT,sin(pi/180*x)) atol=eps(deg2rad(convert(fT,x)))
433-
@test cosd(convert(T,x))::fT convert(fT,cos(pi/180*x)) atol=eps(deg2rad(convert(fT,x)))
437+
@test sind(convert(T,x))::fT sin(pi*convert(fT,x)/180) atol=eps(deg2rad(convert(fT,x)))
438+
@test cosd(convert(T,x))::fT cos(pi*convert(fT,x)/180) atol=eps(deg2rad(convert(fT,x)))
434439

435440
s,c = sincosd(convert(T,x))
436-
@test s::fT convert(fT,sin(pi/180*x)) atol=eps(deg2rad(convert(fT,x)))
437-
@test c::fT convert(fT,cos(pi/180*x)) atol=eps(deg2rad(convert(fT,x)))
441+
@test s::fT sin(pi*convert(fT,x)/180) atol=eps(deg2rad(convert(fT,x)))
442+
@test c::fT cos(pi*convert(fT,x)/180) atol=eps(deg2rad(convert(fT,x)))
438443
end
439444
@testset "sind" begin
440-
@test sind(convert(T,0.0))::fT === zero(fT)
441-
@test sind(convert(T,180.0))::fT === zero(fT)
442-
@test sind(convert(T,360.0))::fT === zero(fT)
443-
T != Rational{Int} && @test sind(convert(T,-0.0))::fT === -zero(fT)
444-
@test sind(convert(T,-180.0))::fT === -zero(fT)
445-
@test sind(convert(T,-360.0))::fT === -zero(fT)
445+
@test sind(convert(T,0.0))::fT zero(fT)
446+
@test sind(convert(T,180.0))::fT zero(fT)
447+
@test sind(convert(T,360.0))::fT zero(fT)
448+
T != Rational{Int} && @test sind(convert(T,-0.0))::fT -zero(fT)
449+
@test sind(convert(T,-180.0))::fT -zero(fT)
450+
@test sind(convert(T,-360.0))::fT -zero(fT)
446451
if T <: AbstractFloat
447452
@test isnan(sind(T(NaN)))
448453
end
449454
end
450455
@testset "cosd" begin
451-
@test cosd(convert(T,90))::fT === zero(fT)
452-
@test cosd(convert(T,270))::fT === zero(fT)
453-
@test cosd(convert(T,-90))::fT === zero(fT)
454-
@test cosd(convert(T,-270))::fT === zero(fT)
456+
@test cosd(convert(T,90))::fT zero(fT)
457+
@test cosd(convert(T,270))::fT zero(fT)
458+
@test cosd(convert(T,-90))::fT zero(fT)
459+
@test cosd(convert(T,-270))::fT zero(fT)
455460
if T <: AbstractFloat
456461
@test isnan(cosd(T(NaN)))
457462
end
458463
end
459464
@testset "sincosd" begin
460-
@test sincosd(convert(T,-360))::fTsc === ( -zero(fT), one(fT) )
461-
@test sincosd(convert(T,-270))::fTsc === ( one(fT), zero(fT) )
462-
@test sincosd(convert(T,-180))::fTsc === ( -zero(fT), -one(fT) )
463-
@test sincosd(convert(T, -90))::fTsc === ( -one(fT), zero(fT) )
464-
@test sincosd(convert(T, 0))::fTsc === ( zero(fT), one(fT) )
465-
@test sincosd(convert(T, 90))::fTsc === ( one(fT), zero(fT) )
466-
@test sincosd(convert(T, 180))::fTsc === ( zero(fT), -one(fT) )
467-
@test sincosd(convert(T, 270))::fTsc === ( -one(fT), zero(fT) )
465+
@test sincosd(convert(T,-360))::fTsc ( -zero(fT), one(fT) )
466+
@test sincosd(convert(T,-270))::fTsc ( one(fT), zero(fT) )
467+
@test sincosd(convert(T,-180))::fTsc ( -zero(fT), -one(fT) )
468+
@test sincosd(convert(T, -90))::fTsc ( -one(fT), zero(fT) )
469+
@test sincosd(convert(T, 0))::fTsc ( zero(fT), one(fT) )
470+
@test sincosd(convert(T, 90))::fTsc ( one(fT), zero(fT) )
471+
@test sincosd(convert(T, 180))::fTsc ( zero(fT), -one(fT) )
472+
@test sincosd(convert(T, 270))::fTsc ( -one(fT), zero(fT) )
468473
if T <: AbstractFloat
469474
@test_throws DomainError sincosd(T(Inf))
470475
@test all(isnan.(sincosd(T(NaN))))
@@ -476,22 +481,22 @@ end
476481
"sincospi" => (x->sincospi(x)[1], x->sincospi(x)[2])
477482
)
478483
@testset "pi * $x" for x = -3:0.3:3
479-
@test sinpi(convert(T,x))::fT convert(fT,sin(pi*x)) atol=eps(pi*convert(fT,x))
480-
@test cospi(convert(T,x))::fT convert(fT,cos(pi*x)) atol=eps(pi*convert(fT,x))
484+
@test sinpi(convert(T,x))::fT sin(pi*convert(fT,x)) atol=eps(pi*convert(fT,x))
485+
@test cospi(convert(T,x))::fT cos(pi*convert(fT,x)) atol=eps(pi*convert(fT,x))
481486
end
482487

483-
@test sinpi(convert(T,0.0))::fT === zero(fT)
484-
@test sinpi(convert(T,1.0))::fT === zero(fT)
485-
@test sinpi(convert(T,2.0))::fT === zero(fT)
486-
T != Rational{Int} && @test sinpi(convert(T,-0.0))::fT === -zero(fT)
487-
@test sinpi(convert(T,-1.0))::fT === -zero(fT)
488-
@test sinpi(convert(T,-2.0))::fT === -zero(fT)
488+
@test sinpi(convert(T,0.0))::fT zero(fT)
489+
@test sinpi(convert(T,1.0))::fT zero(fT)
490+
@test sinpi(convert(T,2.0))::fT zero(fT)
491+
T != Rational{Int} && @test sinpi(convert(T,-0.0))::fT -zero(fT)
492+
@test sinpi(convert(T,-1.0))::fT -zero(fT)
493+
@test sinpi(convert(T,-2.0))::fT -zero(fT)
489494
@test_throws DomainError sinpi(convert(T,Inf))
490495

491-
@test cospi(convert(T,0.5))::fT === zero(fT)
492-
@test cospi(convert(T,1.5))::fT === zero(fT)
493-
@test cospi(convert(T,-0.5))::fT === zero(fT)
494-
@test cospi(convert(T,-1.5))::fT === zero(fT)
496+
@test cospi(convert(T,0.5))::fT zero(fT)
497+
@test cospi(convert(T,1.5))::fT zero(fT)
498+
@test cospi(convert(T,-0.5))::fT zero(fT)
499+
@test cospi(convert(T,-1.5))::fT zero(fT)
495500
@test_throws DomainError cospi(convert(T,Inf))
496501
end
497502
@testset begin
@@ -512,8 +517,8 @@ end
512517
@test my_eq(sincospi(one(T)/convert(T,6))[1], 0.5)
513518
@test_throws DomainError sind(convert(T,Inf))
514519
@test_throws DomainError cosd(convert(T,Inf))
515-
T != Float32 && @test my_eq(cospi(one(T)/convert(T,3)), 0.5)
516-
T != Float32 && @test my_eq(sincospi(one(T)/convert(T,3))[2], 0.5)
520+
fT == Float64 && @test my_eq(cospi(one(T)/convert(T,3)), 0.5)
521+
fT == Float64 && @test my_eq(sincospi(one(T)/convert(T,3))[2], 0.5)
517522
T == Rational{Int} && @test my_eq(sinpi(5//6), 0.5)
518523
T == Rational{Int} && @test my_eq(sincospi(5//6)[1], 0.5)
519524
end
@@ -562,8 +567,8 @@ end
562567
end
563568
end
564569
end
565-
@test @inferred(sinc(0//1)) === 1.0
566-
@test @inferred(cosc(0//1)) === -0.0
570+
@test @inferred(sinc(0//1)) 1.0
571+
@test @inferred(cosc(0//1)) -0.0
567572

568573
# test right before/after thresholds of Taylor series
569574
@test sinc(0.001) 0.999998355066745 rtol=1e-15

0 commit comments

Comments
 (0)