@@ -106,6 +106,7 @@ function expand_units(q::Q) where {T,R,D<:SymbolicDimensions{R},Q<:AbstractQuant
106
106
return convert (constructor_of (Q){T,Dimensions{R}}, q)
107
107
end
108
108
expand_units (q:: QuantityArray ) = expand_units .(q)
109
+ # TODO : Make the array-based one more efficient
109
110
110
111
"""
111
112
uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}, q::AbstractQuantity{<:Any, <:Dimensions})
@@ -121,6 +122,15 @@ function uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}, q::Abstra
121
122
new_dim = dimension (qout)
122
123
return new_quantity (typeof (q), new_val, new_dim)
123
124
end
125
+ function uconvert (qout:: AbstractQuantity{<:Any,<:SymbolicDimensions} , q:: QuantityArray{<:Any,<:Any,<:Dimensions} )
126
+ @assert isone (ustrip (qout)) " You passed a quantity with a non-unit value to uconvert."
127
+ qout_expanded = expand_units (qout)
128
+ dimension (q) == dimension (qout_expanded) || throw (DimensionError (q, qout_expanded))
129
+ new_array = ustrip (q) ./ ustrip (qout_expanded)
130
+ new_dim = dimension (qout)
131
+ return QuantityArray (new_array, new_dim, quantity_type (q))
132
+ end
133
+ # TODO : Method for converting SymbolicDimensions -> SymbolicDimensions
124
134
125
135
"""
126
136
uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions})
0 commit comments