Skip to content

Commit ded8b0b

Browse files
authored
Add {copy,flip}sign(::Number, ::AbstractQuantity) (#612)
1 parent 04efa00 commit ded8b0b

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/quantities.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,12 @@ abs2(x::AbstractQuantity) = Quantity(abs2(x.val), unit(x)*unit(x))
256256
angle(x::AbstractQuantity{<:Complex}) = angle(x.val)
257257

258258
copysign(x::AbstractQuantity, y::Number) = Quantity(copysign(x.val,y/unit(y)), unit(x))
259+
copysign(x::Number, y::AbstractQuantity) = copysign(x,y/unit(y))
260+
copysign(x::AbstractQuantity, y::AbstractQuantity) = Quantity(copysign(x.val,y/unit(y)), unit(x))
261+
259262
flipsign(x::AbstractQuantity, y::Number) = Quantity(flipsign(x.val,y/unit(y)), unit(x))
263+
flipsign(x::Number, y::AbstractQuantity) = flipsign(x,y/unit(y))
264+
flipsign(x::AbstractQuantity, y::AbstractQuantity) = Quantity(flipsign(x.val,y/unit(y)), unit(x))
260265

261266
for (i,j) in zip((:<, :isless), (:_lt, :_isless))
262267
@eval ($i)(x::AbstractQuantity, y::AbstractQuantity) = ($j)(x,y)

test/runtests.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,8 +1076,19 @@ end
10761076
@test @inferred(signbit(-0.0m)) == true
10771077
@test @inferred(copysign(3.0m, -4.0s)) == -3.0m
10781078
@test @inferred(copysign(3.0m, 4)) == 3.0m
1079+
@test @inferred(copysign(3, -4.0m)) == -3
10791080
@test @inferred(flipsign(3.0m, -4)) == -3.0m
10801081
@test @inferred(flipsign(-3.0m, -4)) == 3.0m
1082+
@test @inferred(flipsign(-3.0, -4m)) == 3.0
1083+
@test @inferred(flipsign(-3, 4.0m)) == -3
1084+
@test @inferred(flipsign(3.0m, -4s)) == -3.0m
1085+
@test @inferred(flipsign(-3m, 4.0s)) == -3m
1086+
@test @inferred(flipsign((3.0+4.0im)m, -4)) == (-3.0-4.0im)m
1087+
@test @inferred(flipsign((-3.0+4.0im)m, -4)) == (3.0-4.0im)m
1088+
@test @inferred(flipsign(-3+4im, -4m)) == 3-4im
1089+
@test @inferred(flipsign(-3.0+4.0im, 4m)) == -3.0+4.0im
1090+
@test @inferred(flipsign((3.0+4.0im)m, -4s)) == (-3.0-4.0im)m
1091+
@test @inferred(flipsign((-3+4im)m, 4.0s)) == (-3+4im)m
10811092
@test @inferred(real(3m)) == 3.0m
10821093
@test @inferred(real((3+4im)V)) == 3V
10831094
@test @inferred(imag(3m)) == 0m

0 commit comments

Comments
 (0)