001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY
006
007package edu.wpi.first.units.measure;
008
009import static edu.wpi.first.units.Units.*;
010import edu.wpi.first.units.*;
011
012@SuppressWarnings({"unchecked", "cast", "checkstyle"})
013public record Current(double magnitude, double baseUnitMagnitude, CurrentUnit unit) implements Measure<CurrentUnit> {
014  /**
015   * For doing math with measures of a known dimension but an unknown unit. Most users should use
016   * {@link CurrentUnit#of(double)} on a known unit from {@link Units} instead of calling this method.
017   * @param magnitude the magnitude of the measurement in terms of the given unit
018   * @param unit the unit of the measurement
019   * @return a measurement object
020   */
021  public static  Current ofRelativeUnits(double magnitude, CurrentUnit unit) {
022    return new Current(magnitude, unit.toBaseUnits(magnitude), unit);
023  }
024
025  /**
026   * For doing math with measures of a known dimension but an unknown unit. Most users should use
027   * {@link CurrentUnit#of(double)} on a known unit from {@link Units} instead of calling this method.
028   * @param baseUnitMagnitude the magnitude of the measurement in terms of the given unit's base unit
029   * @param unit the unit of the measurement
030   * @return a measurement object
031   */
032  public static  Current ofBaseUnits(double baseUnitMagnitude, CurrentUnit unit) {
033    return new Current(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit);
034  }
035
036  @Override
037  public CurrentUnit baseUnit() { return (CurrentUnit) unit().getBaseUnit(); }
038
039  @Override
040  public double in(CurrentUnit unit) {
041    return unit.fromBaseUnits(baseUnitMagnitude());
042  }
043
044  @Override
045  @SuppressWarnings("rawtypes")
046  public boolean equals(Object object) {
047    return object instanceof Current m && isEquivalent(m);
048  }
049
050  @Override
051  public Current unaryMinus() {
052    return (Current) unit().ofBaseUnits(0 - baseUnitMagnitude());
053  }
054
055  /**
056  * {@inheritDoc}
057  *
058  * @deprecated use unaryMinus() instead. This was renamed for consistency with other WPILib classes like Rotation2d
059  */
060  @Override
061  @Deprecated(since = "2025", forRemoval = true)
062  @SuppressWarnings({"deprecation", "removal"})
063  public Current negate() {
064    return (Current) unaryMinus();
065  }
066
067  @Override
068  public Current plus(Measure<? extends CurrentUnit> other) {
069    return (Current) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());
070  }
071
072  @Override
073  public Current minus(Measure<? extends CurrentUnit> other) {
074    return (Current) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude());
075  }
076
077  @Override
078  public Current times(double multiplier) {
079    return (Current) unit().ofBaseUnits(baseUnitMagnitude() * multiplier);
080  }
081
082  @Override
083  public Current div(double divisor) {
084    return (Current) unit().ofBaseUnits(baseUnitMagnitude() / divisor);
085  }
086
087  /**
088  * {@inheritDoc}
089  *
090  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
091  */
092  @Override
093  @Deprecated(since = "2025", forRemoval = true)
094  @SuppressWarnings({"deprecation", "removal"})
095  public Current divide(double divisor) {
096    return (Current) div(divisor);
097  }
098
099
100  @Override
101  public Mult<CurrentUnit, AccelerationUnit<?>> times(Acceleration<?> multiplier) {
102    return (Mult<CurrentUnit, AccelerationUnit<?>>) Measure.super.times(multiplier);
103  }
104
105  @Override
106  public Per<CurrentUnit, AccelerationUnit<?>> div(Acceleration<?> divisor) {
107    return (Per<CurrentUnit, AccelerationUnit<?>>) Measure.super.div(divisor);
108  }
109
110  /**
111  * {@inheritDoc}
112  *
113  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
114  */
115  @Deprecated(since = "2025", forRemoval = true)
116  @SuppressWarnings({"deprecation", "removal"})
117  @Override
118  public Per<CurrentUnit, AccelerationUnit<?>> divide(Acceleration<?> divisor) {
119    return div(divisor);
120  }
121
122  @Override
123  public Per<CurrentUnit, AccelerationUnit<?>> per(AccelerationUnit<?> divisorUnit) {
124    return div(divisorUnit.one());
125  }
126
127
128  @Override
129  public Mult<CurrentUnit, AngleUnit> times(Angle multiplier) {
130    return (Mult<CurrentUnit, AngleUnit>) Measure.super.times(multiplier);
131  }
132
133  @Override
134  public Per<CurrentUnit, AngleUnit> div(Angle divisor) {
135    return (Per<CurrentUnit, AngleUnit>) Measure.super.div(divisor);
136  }
137
138  /**
139  * {@inheritDoc}
140  *
141  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
142  */
143  @Deprecated(since = "2025", forRemoval = true)
144  @SuppressWarnings({"deprecation", "removal"})
145  @Override
146  public Per<CurrentUnit, AngleUnit> divide(Angle divisor) {
147    return div(divisor);
148  }
149
150  @Override
151  public Per<CurrentUnit, AngleUnit> per(AngleUnit divisorUnit) {
152    return div(divisorUnit.one());
153  }
154
155
156  @Override
157  public Mult<CurrentUnit, AngularAccelerationUnit> times(AngularAcceleration multiplier) {
158    return (Mult<CurrentUnit, AngularAccelerationUnit>) Measure.super.times(multiplier);
159  }
160
161  @Override
162  public Per<CurrentUnit, AngularAccelerationUnit> div(AngularAcceleration divisor) {
163    return (Per<CurrentUnit, AngularAccelerationUnit>) Measure.super.div(divisor);
164  }
165
166  /**
167  * {@inheritDoc}
168  *
169  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
170  */
171  @Deprecated(since = "2025", forRemoval = true)
172  @SuppressWarnings({"deprecation", "removal"})
173  @Override
174  public Per<CurrentUnit, AngularAccelerationUnit> divide(AngularAcceleration divisor) {
175    return div(divisor);
176  }
177
178  @Override
179  public Per<CurrentUnit, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) {
180    return div(divisorUnit.one());
181  }
182
183
184  @Override
185  public Mult<CurrentUnit, AngularMomentumUnit> times(AngularMomentum multiplier) {
186    return (Mult<CurrentUnit, AngularMomentumUnit>) Measure.super.times(multiplier);
187  }
188
189  @Override
190  public Per<CurrentUnit, AngularMomentumUnit> div(AngularMomentum divisor) {
191    return (Per<CurrentUnit, AngularMomentumUnit>) Measure.super.div(divisor);
192  }
193
194  /**
195  * {@inheritDoc}
196  *
197  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
198  */
199  @Deprecated(since = "2025", forRemoval = true)
200  @SuppressWarnings({"deprecation", "removal"})
201  @Override
202  public Per<CurrentUnit, AngularMomentumUnit> divide(AngularMomentum divisor) {
203    return div(divisor);
204  }
205
206  @Override
207  public Per<CurrentUnit, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) {
208    return div(divisorUnit.one());
209  }
210
211
212  @Override
213  public Mult<CurrentUnit, AngularVelocityUnit> times(AngularVelocity multiplier) {
214    return (Mult<CurrentUnit, AngularVelocityUnit>) Measure.super.times(multiplier);
215  }
216
217  @Override
218  public Per<CurrentUnit, AngularVelocityUnit> div(AngularVelocity divisor) {
219    return (Per<CurrentUnit, AngularVelocityUnit>) Measure.super.div(divisor);
220  }
221
222  /**
223  * {@inheritDoc}
224  *
225  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
226  */
227  @Deprecated(since = "2025", forRemoval = true)
228  @SuppressWarnings({"deprecation", "removal"})
229  @Override
230  public Per<CurrentUnit, AngularVelocityUnit> divide(AngularVelocity divisor) {
231    return div(divisor);
232  }
233
234  @Override
235  public Per<CurrentUnit, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) {
236    return div(divisorUnit.one());
237  }
238
239
240  @Override
241  public Mult<CurrentUnit, CurrentUnit> times(Current multiplier) {
242    return (Mult<CurrentUnit, CurrentUnit>) Measure.super.times(multiplier);
243  }
244
245  @Override
246  public Dimensionless div(Current divisor) {
247    return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
248  }
249
250  /**
251  * {@inheritDoc}
252  *
253  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
254  */
255  @Deprecated(since = "2025", forRemoval = true)
256  @SuppressWarnings({"deprecation", "removal"})
257  @Override
258  public Dimensionless divide(Current divisor) {
259    return div(divisor);
260  }
261
262  @Override
263  public Dimensionless per(CurrentUnit divisorUnit) {
264    return div(divisorUnit.one());
265  }
266
267  @Override
268  public Current div(Dimensionless divisor) {
269    return (Current) Amps.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
270  }
271
272  /**
273  * {@inheritDoc}
274  *
275  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
276  */
277  @Override
278  @Deprecated(since = "2025", forRemoval = true)
279  @SuppressWarnings({"deprecation", "removal"})
280  public Current divide(Dimensionless divisor) {
281    return (Current) div(divisor);
282  }
283
284  @Override
285  public Current times(Dimensionless multiplier) {
286    return (Current) Amps.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
287  }
288
289
290  @Override
291  public Mult<CurrentUnit, DistanceUnit> times(Distance multiplier) {
292    return (Mult<CurrentUnit, DistanceUnit>) Measure.super.times(multiplier);
293  }
294
295  @Override
296  public Per<CurrentUnit, DistanceUnit> div(Distance divisor) {
297    return (Per<CurrentUnit, DistanceUnit>) Measure.super.div(divisor);
298  }
299
300  /**
301  * {@inheritDoc}
302  *
303  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
304  */
305  @Deprecated(since = "2025", forRemoval = true)
306  @SuppressWarnings({"deprecation", "removal"})
307  @Override
308  public Per<CurrentUnit, DistanceUnit> divide(Distance divisor) {
309    return div(divisor);
310  }
311
312  @Override
313  public Per<CurrentUnit, DistanceUnit> per(DistanceUnit divisorUnit) {
314    return div(divisorUnit.one());
315  }
316
317
318  @Override
319  public Mult<CurrentUnit, EnergyUnit> times(Energy multiplier) {
320    return (Mult<CurrentUnit, EnergyUnit>) Measure.super.times(multiplier);
321  }
322
323  @Override
324  public Per<CurrentUnit, EnergyUnit> div(Energy divisor) {
325    return (Per<CurrentUnit, EnergyUnit>) Measure.super.div(divisor);
326  }
327
328  /**
329  * {@inheritDoc}
330  *
331  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
332  */
333  @Deprecated(since = "2025", forRemoval = true)
334  @SuppressWarnings({"deprecation", "removal"})
335  @Override
336  public Per<CurrentUnit, EnergyUnit> divide(Energy divisor) {
337    return div(divisor);
338  }
339
340  @Override
341  public Per<CurrentUnit, EnergyUnit> per(EnergyUnit divisorUnit) {
342    return div(divisorUnit.one());
343  }
344
345
346  @Override
347  public Mult<CurrentUnit, ForceUnit> times(Force multiplier) {
348    return (Mult<CurrentUnit, ForceUnit>) Measure.super.times(multiplier);
349  }
350
351  @Override
352  public Per<CurrentUnit, ForceUnit> div(Force divisor) {
353    return (Per<CurrentUnit, ForceUnit>) Measure.super.div(divisor);
354  }
355
356  /**
357  * {@inheritDoc}
358  *
359  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
360  */
361  @Deprecated(since = "2025", forRemoval = true)
362  @SuppressWarnings({"deprecation", "removal"})
363  @Override
364  public Per<CurrentUnit, ForceUnit> divide(Force divisor) {
365    return div(divisor);
366  }
367
368  @Override
369  public Per<CurrentUnit, ForceUnit> per(ForceUnit divisorUnit) {
370    return div(divisorUnit.one());
371  }
372
373
374  @Override
375  public Mult<CurrentUnit, FrequencyUnit> times(Frequency multiplier) {
376    return (Mult<CurrentUnit, FrequencyUnit>) Measure.super.times(multiplier);
377  }
378
379  @Override
380  public Per<CurrentUnit, FrequencyUnit> div(Frequency divisor) {
381    return (Per<CurrentUnit, FrequencyUnit>) Measure.super.div(divisor);
382  }
383
384  /**
385  * {@inheritDoc}
386  *
387  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
388  */
389  @Deprecated(since = "2025", forRemoval = true)
390  @SuppressWarnings({"deprecation", "removal"})
391  @Override
392  public Per<CurrentUnit, FrequencyUnit> divide(Frequency divisor) {
393    return div(divisor);
394  }
395
396  @Override
397  public Per<CurrentUnit, FrequencyUnit> per(FrequencyUnit divisorUnit) {
398    return div(divisorUnit.one());
399  }
400
401
402  @Override
403  public Mult<CurrentUnit, LinearAccelerationUnit> times(LinearAcceleration multiplier) {
404    return (Mult<CurrentUnit, LinearAccelerationUnit>) Measure.super.times(multiplier);
405  }
406
407  @Override
408  public Per<CurrentUnit, LinearAccelerationUnit> div(LinearAcceleration divisor) {
409    return (Per<CurrentUnit, LinearAccelerationUnit>) Measure.super.div(divisor);
410  }
411
412  /**
413  * {@inheritDoc}
414  *
415  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
416  */
417  @Deprecated(since = "2025", forRemoval = true)
418  @SuppressWarnings({"deprecation", "removal"})
419  @Override
420  public Per<CurrentUnit, LinearAccelerationUnit> divide(LinearAcceleration divisor) {
421    return div(divisor);
422  }
423
424  @Override
425  public Per<CurrentUnit, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) {
426    return div(divisorUnit.one());
427  }
428
429
430  @Override
431  public Mult<CurrentUnit, LinearMomentumUnit> times(LinearMomentum multiplier) {
432    return (Mult<CurrentUnit, LinearMomentumUnit>) Measure.super.times(multiplier);
433  }
434
435  @Override
436  public Per<CurrentUnit, LinearMomentumUnit> div(LinearMomentum divisor) {
437    return (Per<CurrentUnit, LinearMomentumUnit>) Measure.super.div(divisor);
438  }
439
440  /**
441  * {@inheritDoc}
442  *
443  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
444  */
445  @Deprecated(since = "2025", forRemoval = true)
446  @SuppressWarnings({"deprecation", "removal"})
447  @Override
448  public Per<CurrentUnit, LinearMomentumUnit> divide(LinearMomentum divisor) {
449    return div(divisor);
450  }
451
452  @Override
453  public Per<CurrentUnit, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) {
454    return div(divisorUnit.one());
455  }
456
457
458  @Override
459  public Mult<CurrentUnit, LinearVelocityUnit> times(LinearVelocity multiplier) {
460    return (Mult<CurrentUnit, LinearVelocityUnit>) Measure.super.times(multiplier);
461  }
462
463  @Override
464  public Per<CurrentUnit, LinearVelocityUnit> div(LinearVelocity divisor) {
465    return (Per<CurrentUnit, LinearVelocityUnit>) Measure.super.div(divisor);
466  }
467
468  /**
469  * {@inheritDoc}
470  *
471  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
472  */
473  @Deprecated(since = "2025", forRemoval = true)
474  @SuppressWarnings({"deprecation", "removal"})
475  @Override
476  public Per<CurrentUnit, LinearVelocityUnit> divide(LinearVelocity divisor) {
477    return div(divisor);
478  }
479
480  @Override
481  public Per<CurrentUnit, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) {
482    return div(divisorUnit.one());
483  }
484
485
486  @Override
487  public Mult<CurrentUnit, MassUnit> times(Mass multiplier) {
488    return (Mult<CurrentUnit, MassUnit>) Measure.super.times(multiplier);
489  }
490
491  @Override
492  public Per<CurrentUnit, MassUnit> div(Mass divisor) {
493    return (Per<CurrentUnit, MassUnit>) Measure.super.div(divisor);
494  }
495
496  /**
497  * {@inheritDoc}
498  *
499  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
500  */
501  @Deprecated(since = "2025", forRemoval = true)
502  @SuppressWarnings({"deprecation", "removal"})
503  @Override
504  public Per<CurrentUnit, MassUnit> divide(Mass divisor) {
505    return div(divisor);
506  }
507
508  @Override
509  public Per<CurrentUnit, MassUnit> per(MassUnit divisorUnit) {
510    return div(divisorUnit.one());
511  }
512
513
514  @Override
515  public Mult<CurrentUnit, MomentOfInertiaUnit> times(MomentOfInertia multiplier) {
516    return (Mult<CurrentUnit, MomentOfInertiaUnit>) Measure.super.times(multiplier);
517  }
518
519  @Override
520  public Per<CurrentUnit, MomentOfInertiaUnit> div(MomentOfInertia divisor) {
521    return (Per<CurrentUnit, MomentOfInertiaUnit>) Measure.super.div(divisor);
522  }
523
524  /**
525  * {@inheritDoc}
526  *
527  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
528  */
529  @Deprecated(since = "2025", forRemoval = true)
530  @SuppressWarnings({"deprecation", "removal"})
531  @Override
532  public Per<CurrentUnit, MomentOfInertiaUnit> divide(MomentOfInertia divisor) {
533    return div(divisor);
534  }
535
536  @Override
537  public Per<CurrentUnit, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) {
538    return div(divisorUnit.one());
539  }
540
541
542  @Override
543  public Mult<CurrentUnit, MultUnit<?, ?>> times(Mult<?, ?> multiplier) {
544    return (Mult<CurrentUnit, MultUnit<?, ?>>) Measure.super.times(multiplier);
545  }
546
547  @Override
548  public Per<CurrentUnit, MultUnit<?, ?>> div(Mult<?, ?> divisor) {
549    return (Per<CurrentUnit, MultUnit<?, ?>>) Measure.super.div(divisor);
550  }
551
552  /**
553  * {@inheritDoc}
554  *
555  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
556  */
557  @Deprecated(since = "2025", forRemoval = true)
558  @SuppressWarnings({"deprecation", "removal"})
559  @Override
560  public Per<CurrentUnit, MultUnit<?, ?>> divide(Mult<?, ?> divisor) {
561    return div(divisor);
562  }
563
564  @Override
565  public Per<CurrentUnit, MultUnit<?, ?>> per(MultUnit<?, ?> divisorUnit) {
566    return div(divisorUnit.ofNative(1));
567  }
568
569
570  @Override
571  public Mult<CurrentUnit, PerUnit<?, ?>> times(Per<?, ?> multiplier) {
572    return (Mult<CurrentUnit, PerUnit<?, ?>>) Measure.super.times(multiplier);
573  }
574
575  @Override
576  public Per<CurrentUnit, PerUnit<?, ?>> div(Per<?, ?> divisor) {
577    return (Per<CurrentUnit, PerUnit<?, ?>>) Measure.super.div(divisor);
578  }
579
580  /**
581  * {@inheritDoc}
582  *
583  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
584  */
585  @Deprecated(since = "2025", forRemoval = true)
586  @SuppressWarnings({"deprecation", "removal"})
587  @Override
588  public Per<CurrentUnit, PerUnit<?, ?>> divide(Per<?, ?> divisor) {
589    return div(divisor);
590  }
591
592  @Override
593  public Per<CurrentUnit, PerUnit<?, ?>> per(PerUnit<?, ?> divisorUnit) {
594    return div(divisorUnit.ofNative(1));
595  }
596
597
598  @Override
599  public Mult<CurrentUnit, PowerUnit> times(Power multiplier) {
600    return (Mult<CurrentUnit, PowerUnit>) Measure.super.times(multiplier);
601  }
602
603  @Override
604  public Per<CurrentUnit, PowerUnit> div(Power divisor) {
605    return (Per<CurrentUnit, PowerUnit>) Measure.super.div(divisor);
606  }
607
608  /**
609  * {@inheritDoc}
610  *
611  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
612  */
613  @Deprecated(since = "2025", forRemoval = true)
614  @SuppressWarnings({"deprecation", "removal"})
615  @Override
616  public Per<CurrentUnit, PowerUnit> divide(Power divisor) {
617    return div(divisor);
618  }
619
620  @Override
621  public Per<CurrentUnit, PowerUnit> per(PowerUnit divisorUnit) {
622    return div(divisorUnit.one());
623  }
624
625
626  @Override
627  public Voltage times(Resistance multiplier) {
628    return Volts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
629  }
630
631  @Override
632  public Per<CurrentUnit, ResistanceUnit> div(Resistance divisor) {
633    return (Per<CurrentUnit, ResistanceUnit>) Measure.super.div(divisor);
634  }
635
636  /**
637  * {@inheritDoc}
638  *
639  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
640  */
641  @Deprecated(since = "2025", forRemoval = true)
642  @SuppressWarnings({"deprecation", "removal"})
643  @Override
644  public Per<CurrentUnit, ResistanceUnit> divide(Resistance divisor) {
645    return div(divisor);
646  }
647
648  @Override
649  public Per<CurrentUnit, ResistanceUnit> per(ResistanceUnit divisorUnit) {
650    return div(divisorUnit.one());
651  }
652
653
654  @Override
655  public Mult<CurrentUnit, TemperatureUnit> times(Temperature multiplier) {
656    return (Mult<CurrentUnit, TemperatureUnit>) Measure.super.times(multiplier);
657  }
658
659  @Override
660  public Per<CurrentUnit, TemperatureUnit> div(Temperature divisor) {
661    return (Per<CurrentUnit, TemperatureUnit>) Measure.super.div(divisor);
662  }
663
664  /**
665  * {@inheritDoc}
666  *
667  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
668  */
669  @Deprecated(since = "2025", forRemoval = true)
670  @SuppressWarnings({"deprecation", "removal"})
671  @Override
672  public Per<CurrentUnit, TemperatureUnit> divide(Temperature divisor) {
673    return div(divisor);
674  }
675
676  @Override
677  public Per<CurrentUnit, TemperatureUnit> per(TemperatureUnit divisorUnit) {
678    return div(divisorUnit.one());
679  }
680
681
682  @Override
683  public Mult<CurrentUnit, TimeUnit> times(Time multiplier) {
684    return (Mult<CurrentUnit, TimeUnit>) Measure.super.times(multiplier);
685  }
686
687  @Override
688  public Velocity<CurrentUnit> div(Time divisor) {
689    return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude());
690  }
691
692  /**
693  * {@inheritDoc}
694  *
695  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
696  */
697  @Deprecated(since = "2025", forRemoval = true)
698  @SuppressWarnings({"deprecation", "removal"})
699  @Override
700  public Velocity<CurrentUnit> divide(Time divisor) {
701    return div(divisor);
702  }
703
704  @Override
705  public Velocity<CurrentUnit> per(TimeUnit divisorUnit) {
706    return div(divisorUnit.one());
707  }
708
709
710  @Override
711  public Mult<CurrentUnit, TorqueUnit> times(Torque multiplier) {
712    return (Mult<CurrentUnit, TorqueUnit>) Measure.super.times(multiplier);
713  }
714
715  @Override
716  public Per<CurrentUnit, TorqueUnit> div(Torque divisor) {
717    return (Per<CurrentUnit, TorqueUnit>) Measure.super.div(divisor);
718  }
719
720  /**
721  * {@inheritDoc}
722  *
723  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
724  */
725  @Deprecated(since = "2025", forRemoval = true)
726  @SuppressWarnings({"deprecation", "removal"})
727  @Override
728  public Per<CurrentUnit, TorqueUnit> divide(Torque divisor) {
729    return div(divisor);
730  }
731
732  @Override
733  public Per<CurrentUnit, TorqueUnit> per(TorqueUnit divisorUnit) {
734    return div(divisorUnit.one());
735  }
736
737
738  @Override
739  public Mult<CurrentUnit, VelocityUnit<?>> times(Velocity<?> multiplier) {
740    return (Mult<CurrentUnit, VelocityUnit<?>>) Measure.super.times(multiplier);
741  }
742
743  @Override
744  public Per<CurrentUnit, VelocityUnit<?>> div(Velocity<?> divisor) {
745    return (Per<CurrentUnit, VelocityUnit<?>>) Measure.super.div(divisor);
746  }
747
748  /**
749  * {@inheritDoc}
750  *
751  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
752  */
753  @Deprecated(since = "2025", forRemoval = true)
754  @SuppressWarnings({"deprecation", "removal"})
755  @Override
756  public Per<CurrentUnit, VelocityUnit<?>> divide(Velocity<?> divisor) {
757    return div(divisor);
758  }
759
760  @Override
761  public Per<CurrentUnit, VelocityUnit<?>> per(VelocityUnit<?> divisorUnit) {
762    return div(divisorUnit.one());
763  }
764
765
766  @Override
767  public Power times(Voltage multiplier) {
768    return Watts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
769  }
770
771  @Override
772  public Per<CurrentUnit, VoltageUnit> div(Voltage divisor) {
773    return (Per<CurrentUnit, VoltageUnit>) Measure.super.div(divisor);
774  }
775
776  /**
777  * {@inheritDoc}
778  *
779  * @deprecated use div instead. This was renamed for consistency with other languages like Kotlin
780  */
781  @Deprecated(since = "2025", forRemoval = true)
782  @SuppressWarnings({"deprecation", "removal"})
783  @Override
784  public Per<CurrentUnit, VoltageUnit> divide(Voltage divisor) {
785    return div(divisor);
786  }
787
788  @Override
789  public Per<CurrentUnit, VoltageUnit> per(VoltageUnit divisorUnit) {
790    return div(divisorUnit.one());
791  }
792
793}