|
1 | 1 | Base.:*(l::Dimensions, r::Dimensions) = @map_dimensions(+, l, r)
|
2 |
| -Base.:*(l::Quantity, r::Quantity) = Quantity(l.value * r.value, l.dimensions * r.dimensions, l.valid && r.valid) |
3 |
| -Base.:*(l::Quantity, r::Dimensions) = Quantity(l.value, l.dimensions * r, l.valid) |
4 |
| -Base.:*(l::Dimensions, r::Quantity) = Quantity(r.value, l * r.dimensions, r.valid) |
5 |
| -Base.:*(l::Quantity, r::Number) = Quantity(l.value * r, l.dimensions, l.valid) |
6 |
| -Base.:*(l::Number, r::Quantity) = Quantity(l * r.value, r.dimensions, r.valid) |
7 |
| -Base.:*(l::Dimensions, r::Number) = Quantity(r, l, true) |
8 |
| -Base.:*(l::Number, r::Dimensions) = Quantity(l, r, true) |
| 2 | +Base.:*(l::Quantity, r::Quantity) = Quantity(l.value * r.value, l.dimensions * r.dimensions) |
| 3 | +Base.:*(l::Quantity, r::Dimensions) = Quantity(l.value, l.dimensions * r) |
| 4 | +Base.:*(l::Dimensions, r::Quantity) = Quantity(r.value, l * r.dimensions) |
| 5 | +Base.:*(l::Quantity, r::Number) = Quantity(l.value * r, l.dimensions) |
| 6 | +Base.:*(l::Number, r::Quantity) = Quantity(l * r.value, r.dimensions) |
| 7 | +Base.:*(l::Dimensions, r::Number) = Quantity(r, l) |
| 8 | +Base.:*(l::Number, r::Dimensions) = Quantity(l, r) |
9 | 9 |
|
10 | 10 | Base.:/(l::Dimensions, r::Dimensions) = @map_dimensions(-, l, r)
|
11 |
| -Base.:/(l::Quantity, r::Quantity) = Quantity(l.value / r.value, l.dimensions / r.dimensions, l.valid && r.valid) |
12 |
| -Base.:/(l::Quantity, r::Dimensions) = Quantity(l.value, l.dimensions / r, l.valid) |
13 |
| -Base.:/(l::Dimensions, r::Quantity) = Quantity(inv(r.value), l / r.dimensions, r.valid) |
14 |
| -Base.:/(l::Quantity, r::Number) = Quantity(l.value / r, l.dimensions, l.valid) |
| 11 | +Base.:/(l::Quantity, r::Quantity) = Quantity(l.value / r.value, l.dimensions / r.dimensions) |
| 12 | +Base.:/(l::Quantity, r::Dimensions) = Quantity(l.value, l.dimensions / r) |
| 13 | +Base.:/(l::Dimensions, r::Quantity) = Quantity(inv(r.value), l / r.dimensions) |
| 14 | +Base.:/(l::Quantity, r::Number) = Quantity(l.value / r, l.dimensions) |
15 | 15 | Base.:/(l::Number, r::Quantity) = l * inv(r)
|
16 |
| -Base.:/(l::Dimensions, r::Number) = Quantity(inv(r), l, true) |
17 |
| -Base.:/(l::Number, r::Dimensions) = Quantity(l, inv(r), true) |
| 16 | +Base.:/(l::Dimensions, r::Number) = Quantity(inv(r), l) |
| 17 | +Base.:/(l::Number, r::Dimensions) = Quantity(l, inv(r)) |
18 | 18 |
|
19 |
| -Base.:+(l::Quantity, r::Quantity) = Quantity(l.value + r.value, l.dimensions, l.valid && r.valid && l.dimensions == r.dimensions) |
20 |
| -Base.:-(l::Quantity, r::Quantity) = Quantity(l.value - r.value, l.dimensions, l.valid && r.valid && l.dimensions == r.dimensions) |
| 19 | +Base.:+(l::Quantity, r::Quantity) = dimension(l) == dimension(r) ? Quantity(l.value + r.value, l.dimensions) : throw(DimensionError(l, r)) |
| 20 | +Base.:-(l::Quantity, r::Quantity) = dimension(l) == dimension(r) ? Quantity(l.value - r.value, l.dimensions) : throw(DimensionError(l, r)) |
21 | 21 |
|
22 | 22 | _pow(l::Dimensions{R}, r::R) where {R} = @map_dimensions(Base.Fix1(*, r), l)
|
23 |
| -_pow(l::Quantity{T,R}, r::R) where {T,R} = Quantity(l.value^convert(T, r), _pow(l.dimensions, r), l.valid) |
| 23 | +_pow(l::Quantity{T,R}, r::R) where {T,R} = Quantity(l.value^convert(T, r), _pow(l.dimensions, r)) |
24 | 24 | Base.:^(l::Dimensions{R}, r::Number) where {R} = _pow(l, tryrationalize(R, r))
|
25 | 25 | Base.:^(l::Quantity{T,R}, r::Number) where {T,R} = _pow(l, tryrationalize(R, r))
|
26 | 26 |
|
27 | 27 | Base.inv(d::Dimensions) = @map_dimensions(-, d)
|
28 |
| -Base.inv(q::Quantity) = Quantity(inv(q.value), inv(q.dimensions), q.valid) |
| 28 | +Base.inv(q::Quantity) = Quantity(inv(q.value), inv(q.dimensions)) |
29 | 29 |
|
30 | 30 | Base.sqrt(d::Dimensions{R}) where {R} = d^inv(convert(R, 2))
|
31 |
| -Base.sqrt(q::Quantity) = Quantity(sqrt(q.value), sqrt(q.dimensions), q.valid) |
| 31 | +Base.sqrt(q::Quantity) = Quantity(sqrt(q.value), sqrt(q.dimensions)) |
32 | 32 | Base.cbrt(d::Dimensions{R}) where {R} = d^inv(convert(R, 3))
|
33 |
| -Base.cbrt(q::Quantity) = Quantity(cbrt(q.value), cbrt(q.dimensions), q.valid) |
| 33 | +Base.cbrt(q::Quantity) = Quantity(cbrt(q.value), cbrt(q.dimensions)) |
34 | 34 |
|
35 |
| -Base.abs(q::Quantity) = Quantity(abs(q.value), q.dimensions, q.valid) |
| 35 | +Base.abs(q::Quantity) = Quantity(abs(q.value), q.dimensions) |
0 commit comments