uom-types 5.0.1 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -174,78 +174,6 @@ type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
174
174
  * @group Unit Components
175
175
  */
176
176
  export type UnitSubvalues = Record<string, Exponent>;
177
- /**
178
- * Take the inverse of a unit.
179
- *
180
- * @group Unit Functions
181
- * @returns `1/X`.
182
- */
183
- export type Inverse<X extends number> = Pow<X, -1>;
184
- /**
185
- * Inverses each of the subvalues.
186
- *
187
- * @group Unit Subvalue Functions
188
- */
189
- export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
190
- /**
191
- * Multiply a unit by another unit.
192
- *
193
- * @group Unit Functions
194
- * @returns `A⋅B`
195
- */
196
- export type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
197
- type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
198
- type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
199
- type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
200
- /**
201
- * Multiply each of the subvalues from a unit with the corresponding once from another unit.
202
- *
203
- * @group Unit Subvalue Functions
204
- */
205
- export type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
206
- [S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
207
- }>;
208
- /**
209
- * Divide a unit by another unit.
210
- *
211
- * @group Unit Functions
212
- * @returns `A/B`
213
- */
214
- export type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
215
- /**
216
- * Divide each of the subvalues from a unit with the corresponding once from another unit.
217
- *
218
- * @group Unit Subvalue Functions
219
- */
220
- export type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
221
- /**
222
- * Put a unit to the power of an exponent.
223
- *
224
- * @group Unit Functions
225
- */
226
- export type Pow<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, E>>, FlatternAlias<PowUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, E>>> : number;
227
- /**
228
- * Put each subvalue of a unit to the power of an exponent.
229
- *
230
- * @group Unit Subvalue Functions
231
- */
232
- export type PowUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
233
- [S in keyof B]: MultiplyExponents<GetExponent<B, S>, E>;
234
- }>;
235
- /**
236
- * Take the nth root of a unit.
237
- *
238
- * @group Unit Functions
239
- */
240
- export type Root<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, E>>, FlatternAlias<RootUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, E>>> : number;
241
- /**
242
- * Take the nth root of each subvalue of a unit.
243
- *
244
- * @group Unit Subvalue Functions
245
- */
246
- export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
247
- [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
248
- }>;
249
177
  type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
250
178
  /**
251
179
  * The {@link UnitClass} that is the base of all {@link Unit}s defined by this library.
@@ -1174,6 +1102,78 @@ export type MagneticPermeabilityUnitFrom<M extends UnknownUnitMeta> = UnitFrom<M
1174
1102
  * @symbol `H/m`
1175
1103
  */
1176
1104
  export type HenryPerMeter = MagneticPermeabilityUnit<{}>;
1105
+ /**
1106
+ * Take the inverse of a unit.
1107
+ *
1108
+ * @group Unit Functions
1109
+ * @returns `1/X`.
1110
+ */
1111
+ export type Inverse<X extends number> = Pow<X, -1>;
1112
+ /**
1113
+ * Inverses each of the subvalues.
1114
+ *
1115
+ * @group Unit Subvalue Functions
1116
+ */
1117
+ export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
1118
+ /**
1119
+ * Multiply a unit by another unit.
1120
+ *
1121
+ * @group Unit Functions
1122
+ * @returns `A⋅B`
1123
+ */
1124
+ export type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
1125
+ type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
1126
+ type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
1127
+ type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
1128
+ /**
1129
+ * Multiply each of the subvalues from a unit with the corresponding once from another unit.
1130
+ *
1131
+ * @group Unit Subvalue Functions
1132
+ */
1133
+ export type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
1134
+ [S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
1135
+ }>;
1136
+ /**
1137
+ * Divide a unit by another unit.
1138
+ *
1139
+ * @group Unit Functions
1140
+ * @returns `A/B`
1141
+ */
1142
+ export type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
1143
+ /**
1144
+ * Divide each of the subvalues from a unit with the corresponding once from another unit.
1145
+ *
1146
+ * @group Unit Subvalue Functions
1147
+ */
1148
+ export type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
1149
+ /**
1150
+ * Put a unit to the power of an exponent.
1151
+ *
1152
+ * @group Unit Functions
1153
+ */
1154
+ export type Pow<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, E>>, FlatternAlias<PowUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, E>>> : number;
1155
+ /**
1156
+ * Put each subvalue of a unit to the power of an exponent.
1157
+ *
1158
+ * @group Unit Subvalue Functions
1159
+ */
1160
+ export type PowUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
1161
+ [S in keyof B]: MultiplyExponents<GetExponent<B, S>, E>;
1162
+ }>;
1163
+ /**
1164
+ * Take the nth root of a unit.
1165
+ *
1166
+ * @group Unit Functions
1167
+ */
1168
+ export type Root<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, E>>, FlatternAlias<RootUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, E>>> : number;
1169
+ /**
1170
+ * Take the nth root of each subvalue of a unit.
1171
+ *
1172
+ * @group Unit Subvalue Functions
1173
+ */
1174
+ export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
1175
+ [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
1176
+ }>;
1177
1177
  /**
1178
1178
  * Put the given {@link Unit} to the power of 2.
1179
1179
  *
package/dist/index.d.mts CHANGED
@@ -174,78 +174,6 @@ type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
174
174
  * @group Unit Components
175
175
  */
176
176
  export type UnitSubvalues = Record<string, Exponent>;
177
- /**
178
- * Take the inverse of a unit.
179
- *
180
- * @group Unit Functions
181
- * @returns `1/X`.
182
- */
183
- export type Inverse<X extends number> = Pow<X, -1>;
184
- /**
185
- * Inverses each of the subvalues.
186
- *
187
- * @group Unit Subvalue Functions
188
- */
189
- export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
190
- /**
191
- * Multiply a unit by another unit.
192
- *
193
- * @group Unit Functions
194
- * @returns `A⋅B`
195
- */
196
- export type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
197
- type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
198
- type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
199
- type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
200
- /**
201
- * Multiply each of the subvalues from a unit with the corresponding once from another unit.
202
- *
203
- * @group Unit Subvalue Functions
204
- */
205
- export type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
206
- [S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
207
- }>;
208
- /**
209
- * Divide a unit by another unit.
210
- *
211
- * @group Unit Functions
212
- * @returns `A/B`
213
- */
214
- export type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
215
- /**
216
- * Divide each of the subvalues from a unit with the corresponding once from another unit.
217
- *
218
- * @group Unit Subvalue Functions
219
- */
220
- export type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
221
- /**
222
- * Put a unit to the power of an exponent.
223
- *
224
- * @group Unit Functions
225
- */
226
- export type Pow<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, E>>, FlatternAlias<PowUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, E>>> : number;
227
- /**
228
- * Put each subvalue of a unit to the power of an exponent.
229
- *
230
- * @group Unit Subvalue Functions
231
- */
232
- export type PowUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
233
- [S in keyof B]: MultiplyExponents<GetExponent<B, S>, E>;
234
- }>;
235
- /**
236
- * Take the nth root of a unit.
237
- *
238
- * @group Unit Functions
239
- */
240
- export type Root<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, E>>, FlatternAlias<RootUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, E>>> : number;
241
- /**
242
- * Take the nth root of each subvalue of a unit.
243
- *
244
- * @group Unit Subvalue Functions
245
- */
246
- export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
247
- [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
248
- }>;
249
177
  type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
250
178
  /**
251
179
  * The {@link UnitClass} that is the base of all {@link Unit}s defined by this library.
@@ -1174,6 +1102,78 @@ export type MagneticPermeabilityUnitFrom<M extends UnknownUnitMeta> = UnitFrom<M
1174
1102
  * @symbol `H/m`
1175
1103
  */
1176
1104
  export type HenryPerMeter = MagneticPermeabilityUnit<{}>;
1105
+ /**
1106
+ * Take the inverse of a unit.
1107
+ *
1108
+ * @group Unit Functions
1109
+ * @returns `1/X`.
1110
+ */
1111
+ export type Inverse<X extends number> = Pow<X, -1>;
1112
+ /**
1113
+ * Inverses each of the subvalues.
1114
+ *
1115
+ * @group Unit Subvalue Functions
1116
+ */
1117
+ export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
1118
+ /**
1119
+ * Multiply a unit by another unit.
1120
+ *
1121
+ * @group Unit Functions
1122
+ * @returns `A⋅B`
1123
+ */
1124
+ export type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
1125
+ type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
1126
+ type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
1127
+ type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
1128
+ /**
1129
+ * Multiply each of the subvalues from a unit with the corresponding once from another unit.
1130
+ *
1131
+ * @group Unit Subvalue Functions
1132
+ */
1133
+ export type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
1134
+ [S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
1135
+ }>;
1136
+ /**
1137
+ * Divide a unit by another unit.
1138
+ *
1139
+ * @group Unit Functions
1140
+ * @returns `A/B`
1141
+ */
1142
+ export type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
1143
+ /**
1144
+ * Divide each of the subvalues from a unit with the corresponding once from another unit.
1145
+ *
1146
+ * @group Unit Subvalue Functions
1147
+ */
1148
+ export type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
1149
+ /**
1150
+ * Put a unit to the power of an exponent.
1151
+ *
1152
+ * @group Unit Functions
1153
+ */
1154
+ export type Pow<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, E>>, FlatternAlias<PowUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, E>>> : number;
1155
+ /**
1156
+ * Put each subvalue of a unit to the power of an exponent.
1157
+ *
1158
+ * @group Unit Subvalue Functions
1159
+ */
1160
+ export type PowUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
1161
+ [S in keyof B]: MultiplyExponents<GetExponent<B, S>, E>;
1162
+ }>;
1163
+ /**
1164
+ * Take the nth root of a unit.
1165
+ *
1166
+ * @group Unit Functions
1167
+ */
1168
+ export type Root<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, E>>, FlatternAlias<RootUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, E>>> : number;
1169
+ /**
1170
+ * Take the nth root of each subvalue of a unit.
1171
+ *
1172
+ * @group Unit Subvalue Functions
1173
+ */
1174
+ export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
1175
+ [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
1176
+ }>;
1177
1177
  /**
1178
1178
  * Put the given {@link Unit} to the power of 2.
1179
1179
  *