@@ -106,6 +106,7 @@ function expand_units(q::Q) where {T,R,D<:SymbolicDimensions{R},Q<:AbstractQuant
106106 return convert (constructor_of (Q){T,Dimensions{R}}, q)
107107end
108108expand_units (q:: QuantityArray ) = expand_units .(q)
109+ # TODO : Make the array-based one more efficient
109110
110111"""
111112 uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}, q::AbstractQuantity{<:Any, <:Dimensions})
@@ -121,6 +122,15 @@ function uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}, q::Abstra
121122 new_dim = dimension (qout)
122123 return new_quantity (typeof (q), new_val, new_dim)
123124end
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
124134
125135"""
126136 uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions})
0 commit comments