Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Quantity[5, "Days"] / Quantity[52, "Weeks"]
- Quantity /:
- op : (Alternatives @@ (Symbol /@
- WolframLanguageData[
- EntityClass["WolframLanguageSymbol",
- {"FunctionalityArea", "MathOperationFunctions"}], "Name"]))[
- Quantity[v1_, u1_],
- Quantity[v2_, u2_]
- ] :=
- Quantity[op[v1, v2], op[u1, u2]]
- Quantity[5, "Days"] / Quantity[52, "Weeks"]
- Quantity[5/52, "Days"/"Weeks"]
- (* Quantity[5/52, ("Days")/("Weeks")] *)
- Quantity /:
- HoldPattern[Times][Longest[e2___], q_?QuantityQ, Shortest[e1, ___] /;
- QuantityUnits`$AutomaticUnitTimes === True := ...
- (* Ensures the symbol exists from a fresh kernel for unprotecting it *)
- System`Quantity;
- Unprotect[Quantity];
- QuantityUnits`Private`iqTimes[QuantityUnits`Private`q_List] := Module[{units},
- With[{vlist = QuantityUnits`Private`q[[All, 1]],
- ulist = QuantityUnits`Private`q[[All, 2]]},
- units = Apply[Times, ulist];
- Quantity[Apply[Times, vlist], units]
- ]
- ];
- Protect[Quantity];
- Quantity[5, "Days"] / Quantity[52, "Weeks"]
- (* Quantity[5/52, ("Days")/("Weeks")] *)
- Quantity[2, "Weeks"] * %
- (* Quantity[5/26, "Days"] *)
- qtyUnitHoldRule=
- (op:Alternatives @@ (Symbol /@
- WolframLanguageData[
- EntityClass["WolframLanguageSymbol",
- {"FunctionalityArea", "MathOperationFunctions"}], "Name"])
- )[q1_?QuantityQ, q2_?QuantityQ ] ->
- Quantity[op @@ QuantityMagnitude[{q1, q2}], op @@ QuantityUnit[{q1, q2}]]
- Remove[holdQuantityUnits];
- Attributes[holdQuantityUnits]={HoldAllComplete};
- holdQuantityUnits[code_] := Unevaluated[code] //. qtyUnitHoldRule
- holdQuantityUnits[
- x=Quantity[5,"Days"];
- y=Quantity[52,"Weeks"];
- {Divide[x,y], x / y}
- ]
- (* {Quantity[5/52, ("Days")/("Weeks")], 5 / 364} *)
Add Comment
Please, Sign In to add comment