simple_si_units/
nuclear.rs

1
2//! This module provides nuclear SI units, such as absorbed radiation dose 
3//! and inverse of radiation dose equivalent.
4use core::fmt;
5use super::UnitStruct;
6use super::NumLike;
7use super::base::*;
8use super::chemical::*;
9use super::mechanical::*;
10
11// optional supports
12#[cfg(feature="serde")]
13use serde::{Serialize, Deserialize};
14#[cfg(feature="num-bigfloat")]
15use num_bigfloat;
16#[cfg(feature="num-complex")]
17use num_complex;
18
19
20
21/// The absorbed radiation dose unit type, defined as grays in SI units
22#[derive(UnitStruct, Debug, Clone)]
23#[cfg_attr(feature="serde", derive(Serialize, Deserialize))]
24pub struct AbsorbedDose<T: NumLike>{
25	/// The value of this Absorbed dose in grays
26	pub Gy: T
27}
28
29impl<T> AbsorbedDose<T> where T: NumLike {
30
31	/// Returns the standard unit name of absorbed dose: "grays"
32	pub fn unit_name() -> &'static str { "grays" }
33	
34	/// Returns the abbreviated name or symbol of absorbed dose: "Gy" for grays
35	pub fn unit_symbol() -> &'static str { "Gy" }
36	
37	/// Returns a new absorbed dose value from the given number of grays
38	///
39	/// # Arguments
40	/// * `Gy` - Any number-like type, representing a quantity of grays
41	pub fn from_Gy(Gy: T) -> Self { AbsorbedDose{Gy: Gy} }
42	
43	/// Returns a copy of this absorbed dose value in grays
44	pub fn to_Gy(&self) -> T { self.Gy.clone() }
45
46	/// Returns a new absorbed dose value from the given number of grays
47	///
48	/// # Arguments
49	/// * `grays` - Any number-like type, representing a quantity of grays
50	pub fn from_grays(grays: T) -> Self { AbsorbedDose{Gy: grays} }
51	
52	/// Returns a copy of this absorbed dose value in grays
53	pub fn to_grays(&self) -> T { self.Gy.clone() }
54
55}
56
57impl<T> fmt::Display for AbsorbedDose<T> where T: NumLike {
58	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
59		write!(f, "{} {}", &self.Gy, Self::unit_symbol())
60	}
61}
62
63impl<T> AbsorbedDose<T> where T: NumLike+From<f64> {
64	
65	/// Returns a copy of this absorbed dose value in milligrays
66	/// 
67	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
68	pub fn to_mGy(&self) -> T {
69		return self.Gy.clone() * T::from(1000.0_f64);
70	}
71
72	/// Returns a new absorbed dose value from the given number of milligrays
73	/// 
74	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
75	///
76	/// # Arguments
77	/// * `mGy` - Any number-like type, representing a quantity of milligrays
78	pub fn from_mGy(mGy: T) -> Self {
79		AbsorbedDose{Gy: mGy * T::from(0.001_f64)}
80	}
81
82	/// Returns a copy of this absorbed dose value in micrograys
83	/// 
84	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
85	pub fn to_uGy(&self) -> T {
86		return self.Gy.clone() * T::from(1000000.0_f64);
87	}
88
89	/// Returns a new absorbed dose value from the given number of micrograys
90	/// 
91	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
92	///
93	/// # Arguments
94	/// * `uGy` - Any number-like type, representing a quantity of micrograys
95	pub fn from_uGy(uGy: T) -> Self {
96		AbsorbedDose{Gy: uGy * T::from(1e-06_f64)}
97	}
98
99	/// Returns a copy of this absorbed dose value in nanograys
100	/// 
101	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
102	pub fn to_nGy(&self) -> T {
103		return self.Gy.clone() * T::from(1000000000.0_f64);
104	}
105
106	/// Returns a new absorbed dose value from the given number of nanograys
107	/// 
108	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
109	///
110	/// # Arguments
111	/// * `nGy` - Any number-like type, representing a quantity of nanograys
112	pub fn from_nGy(nGy: T) -> Self {
113		AbsorbedDose{Gy: nGy * T::from(1e-09_f64)}
114	}
115
116	/// Returns a copy of this absorbed dose value in kilograys
117	/// 
118	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
119	pub fn to_kGy(&self) -> T {
120		return self.Gy.clone() * T::from(0.001_f64);
121	}
122
123	/// Returns a new absorbed dose value from the given number of kilograys
124	/// 
125	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
126	///
127	/// # Arguments
128	/// * `kGy` - Any number-like type, representing a quantity of kilograys
129	pub fn from_kGy(kGy: T) -> Self {
130		AbsorbedDose{Gy: kGy * T::from(1000.0_f64)}
131	}
132
133	/// Returns a copy of this absorbed dose value in megagrays
134	/// 
135	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
136	pub fn to_MGy(&self) -> T {
137		return self.Gy.clone() * T::from(1e-06_f64);
138	}
139
140	/// Returns a new absorbed dose value from the given number of megagrays
141	/// 
142	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
143	///
144	/// # Arguments
145	/// * `MGy` - Any number-like type, representing a quantity of megagrays
146	pub fn from_MGy(MGy: T) -> Self {
147		AbsorbedDose{Gy: MGy * T::from(1000000.0_f64)}
148	}
149
150	/// Returns a copy of this absorbed dose value in gigagrays
151	/// 
152	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
153	pub fn to_GGy(&self) -> T {
154		return self.Gy.clone() * T::from(1e-09_f64);
155	}
156
157	/// Returns a new absorbed dose value from the given number of gigagrays
158	/// 
159	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
160	///
161	/// # Arguments
162	/// * `GGy` - Any number-like type, representing a quantity of gigagrays
163	pub fn from_GGy(GGy: T) -> Self {
164		AbsorbedDose{Gy: GGy * T::from(1000000000.0_f64)}
165	}
166
167	/// Returns a copy of this absorbed dose value in rads
168	/// 
169	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
170	pub fn to_rad(&self) -> T {
171		return self.Gy.clone() * T::from(100.0_f64);
172	}
173
174	/// Returns a new absorbed dose value from the given number of rads
175	/// 
176	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
177	///
178	/// # Arguments
179	/// * `rad` - Any number-like type, representing a quantity of rads
180	pub fn from_rad(rad: T) -> Self {
181		AbsorbedDose{Gy: rad * T::from(0.01_f64)}
182	}
183
184	/// Returns a copy of this absorbed dose value in kilorads
185	/// 
186	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
187	pub fn to_krad(&self) -> T {
188		return self.Gy.clone() * T::from(0.1_f64);
189	}
190
191	/// Returns a new absorbed dose value from the given number of kilorads
192	/// 
193	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
194	///
195	/// # Arguments
196	/// * `krad` - Any number-like type, representing a quantity of kilorads
197	pub fn from_krad(krad: T) -> Self {
198		AbsorbedDose{Gy: krad * T::from(10.0_f64)}
199	}
200
201	/// Returns a copy of this absorbed dose value in millirads
202	/// 
203	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
204	pub fn to_mrad(&self) -> T {
205		return self.Gy.clone() * T::from(100000.0_f64);
206	}
207
208	/// Returns a new absorbed dose value from the given number of millirads
209	/// 
210	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
211	///
212	/// # Arguments
213	/// * `mrad` - Any number-like type, representing a quantity of millirads
214	pub fn from_mrad(mrad: T) -> Self {
215		AbsorbedDose{Gy: mrad * T::from(1e-05_f64)}
216	}
217
218	/// Returns a copy of this absorbed dose value in microrads
219	/// 
220	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
221	pub fn to_urad(&self) -> T {
222		return self.Gy.clone() * T::from(100000000.0_f64);
223	}
224
225	/// Returns a new absorbed dose value from the given number of microrads
226	/// 
227	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
228	///
229	/// # Arguments
230	/// * `urad` - Any number-like type, representing a quantity of microrads
231	pub fn from_urad(urad: T) -> Self {
232		AbsorbedDose{Gy: urad * T::from(1e-08_f64)}
233	}
234
235	/// Returns a copy of this absorbed dose value in ergs per gram
236	/// 
237	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
238	pub fn to_erg(&self) -> T {
239		return self.Gy.clone() * T::from(10000.0_f64);
240	}
241
242	/// Returns a new absorbed dose value from the given number of ergs per gram
243	/// 
244	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
245	///
246	/// # Arguments
247	/// * `erg` - Any number-like type, representing a quantity of ergs per gram
248	pub fn from_erg(erg: T) -> Self {
249		AbsorbedDose{Gy: erg * T::from(0.0001_f64)}
250	}
251
252}
253
254
255/// Multiplying a unit value by a scalar value returns a unit value
256#[cfg(feature="num-bigfloat")]
257impl core::ops::Mul<AbsorbedDose<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
258	type Output = AbsorbedDose<num_bigfloat::BigFloat>;
259	fn mul(self, rhs: AbsorbedDose<num_bigfloat::BigFloat>) -> Self::Output {
260		AbsorbedDose{Gy: self * rhs.Gy}
261	}
262}
263/// Multiplying a unit value by a scalar value returns a unit value
264#[cfg(feature="num-bigfloat")]
265impl core::ops::Mul<AbsorbedDose<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
266	type Output = AbsorbedDose<num_bigfloat::BigFloat>;
267	fn mul(self, rhs: AbsorbedDose<num_bigfloat::BigFloat>) -> Self::Output {
268		AbsorbedDose{Gy: self.clone() * rhs.Gy}
269	}
270}
271/// Multiplying a unit value by a scalar value returns a unit value
272#[cfg(feature="num-bigfloat")]
273impl core::ops::Mul<&AbsorbedDose<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
274	type Output = AbsorbedDose<num_bigfloat::BigFloat>;
275	fn mul(self, rhs: &AbsorbedDose<num_bigfloat::BigFloat>) -> Self::Output {
276		AbsorbedDose{Gy: self * rhs.Gy.clone()}
277	}
278}
279/// Multiplying a unit value by a scalar value returns a unit value
280#[cfg(feature="num-bigfloat")]
281impl core::ops::Mul<&AbsorbedDose<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
282	type Output = AbsorbedDose<num_bigfloat::BigFloat>;
283	fn mul(self, rhs: &AbsorbedDose<num_bigfloat::BigFloat>) -> Self::Output {
284		AbsorbedDose{Gy: self.clone() * rhs.Gy.clone()}
285	}
286}
287
288/// Multiplying a unit value by a scalar value returns a unit value
289#[cfg(feature="num-complex")]
290impl core::ops::Mul<AbsorbedDose<num_complex::Complex32>> for num_complex::Complex32 {
291	type Output = AbsorbedDose<num_complex::Complex32>;
292	fn mul(self, rhs: AbsorbedDose<num_complex::Complex32>) -> Self::Output {
293		AbsorbedDose{Gy: self * rhs.Gy}
294	}
295}
296/// Multiplying a unit value by a scalar value returns a unit value
297#[cfg(feature="num-complex")]
298impl core::ops::Mul<AbsorbedDose<num_complex::Complex32>> for &num_complex::Complex32 {
299	type Output = AbsorbedDose<num_complex::Complex32>;
300	fn mul(self, rhs: AbsorbedDose<num_complex::Complex32>) -> Self::Output {
301		AbsorbedDose{Gy: self.clone() * rhs.Gy}
302	}
303}
304/// Multiplying a unit value by a scalar value returns a unit value
305#[cfg(feature="num-complex")]
306impl core::ops::Mul<&AbsorbedDose<num_complex::Complex32>> for num_complex::Complex32 {
307	type Output = AbsorbedDose<num_complex::Complex32>;
308	fn mul(self, rhs: &AbsorbedDose<num_complex::Complex32>) -> Self::Output {
309		AbsorbedDose{Gy: self * rhs.Gy.clone()}
310	}
311}
312/// Multiplying a unit value by a scalar value returns a unit value
313#[cfg(feature="num-complex")]
314impl core::ops::Mul<&AbsorbedDose<num_complex::Complex32>> for &num_complex::Complex32 {
315	type Output = AbsorbedDose<num_complex::Complex32>;
316	fn mul(self, rhs: &AbsorbedDose<num_complex::Complex32>) -> Self::Output {
317		AbsorbedDose{Gy: self.clone() * rhs.Gy.clone()}
318	}
319}
320
321/// Multiplying a unit value by a scalar value returns a unit value
322#[cfg(feature="num-complex")]
323impl core::ops::Mul<AbsorbedDose<num_complex::Complex64>> for num_complex::Complex64 {
324	type Output = AbsorbedDose<num_complex::Complex64>;
325	fn mul(self, rhs: AbsorbedDose<num_complex::Complex64>) -> Self::Output {
326		AbsorbedDose{Gy: self * rhs.Gy}
327	}
328}
329/// Multiplying a unit value by a scalar value returns a unit value
330#[cfg(feature="num-complex")]
331impl core::ops::Mul<AbsorbedDose<num_complex::Complex64>> for &num_complex::Complex64 {
332	type Output = AbsorbedDose<num_complex::Complex64>;
333	fn mul(self, rhs: AbsorbedDose<num_complex::Complex64>) -> Self::Output {
334		AbsorbedDose{Gy: self.clone() * rhs.Gy}
335	}
336}
337/// Multiplying a unit value by a scalar value returns a unit value
338#[cfg(feature="num-complex")]
339impl core::ops::Mul<&AbsorbedDose<num_complex::Complex64>> for num_complex::Complex64 {
340	type Output = AbsorbedDose<num_complex::Complex64>;
341	fn mul(self, rhs: &AbsorbedDose<num_complex::Complex64>) -> Self::Output {
342		AbsorbedDose{Gy: self * rhs.Gy.clone()}
343	}
344}
345/// Multiplying a unit value by a scalar value returns a unit value
346#[cfg(feature="num-complex")]
347impl core::ops::Mul<&AbsorbedDose<num_complex::Complex64>> for &num_complex::Complex64 {
348	type Output = AbsorbedDose<num_complex::Complex64>;
349	fn mul(self, rhs: &AbsorbedDose<num_complex::Complex64>) -> Self::Output {
350		AbsorbedDose{Gy: self.clone() * rhs.Gy.clone()}
351	}
352}
353
354
355
356
357// AbsorbedDose * Mass -> Energy
358/// Multiplying a AbsorbedDose by a Mass returns a value of type Energy
359impl<T> core::ops::Mul<Mass<T>> for AbsorbedDose<T> where T: NumLike {
360	type Output = Energy<T>;
361	fn mul(self, rhs: Mass<T>) -> Self::Output {
362		Energy{J: self.Gy * rhs.kg}
363	}
364}
365/// Multiplying a AbsorbedDose by a Mass returns a value of type Energy
366impl<T> core::ops::Mul<Mass<T>> for &AbsorbedDose<T> where T: NumLike {
367	type Output = Energy<T>;
368	fn mul(self, rhs: Mass<T>) -> Self::Output {
369		Energy{J: self.Gy.clone() * rhs.kg}
370	}
371}
372/// Multiplying a AbsorbedDose by a Mass returns a value of type Energy
373impl<T> core::ops::Mul<&Mass<T>> for AbsorbedDose<T> where T: NumLike {
374	type Output = Energy<T>;
375	fn mul(self, rhs: &Mass<T>) -> Self::Output {
376		Energy{J: self.Gy * rhs.kg.clone()}
377	}
378}
379/// Multiplying a AbsorbedDose by a Mass returns a value of type Energy
380impl<T> core::ops::Mul<&Mass<T>> for &AbsorbedDose<T> where T: NumLike {
381	type Output = Energy<T>;
382	fn mul(self, rhs: &Mass<T>) -> Self::Output {
383		Energy{J: self.Gy.clone() * rhs.kg.clone()}
384	}
385}
386
387/// The radiation dose equivalent unit type, defined as sieverts in SI units
388#[derive(UnitStruct, Debug, Clone)]
389#[cfg_attr(feature="serde", derive(Serialize, Deserialize))]
390pub struct DoseEquivalent<T: NumLike>{
391	/// The value of this Dose equivalent in sieverts
392	pub Sv: T
393}
394
395impl<T> DoseEquivalent<T> where T: NumLike {
396
397	/// Returns the standard unit name of dose equivalent: "sieverts"
398	pub fn unit_name() -> &'static str { "sieverts" }
399	
400	/// Returns the abbreviated name or symbol of dose equivalent: "Sv" for sieverts
401	pub fn unit_symbol() -> &'static str { "Sv" }
402	
403	/// Returns a new dose equivalent value from the given number of sieverts
404	///
405	/// # Arguments
406	/// * `Sv` - Any number-like type, representing a quantity of sieverts
407	pub fn from_Sv(Sv: T) -> Self { DoseEquivalent{Sv: Sv} }
408	
409	/// Returns a copy of this dose equivalent value in sieverts
410	pub fn to_Sv(&self) -> T { self.Sv.clone() }
411
412	/// Returns a new dose equivalent value from the given number of sieverts
413	///
414	/// # Arguments
415	/// * `sieverts` - Any number-like type, representing a quantity of sieverts
416	pub fn from_sieverts(sieverts: T) -> Self { DoseEquivalent{Sv: sieverts} }
417	
418	/// Returns a copy of this dose equivalent value in sieverts
419	pub fn to_sieverts(&self) -> T { self.Sv.clone() }
420
421}
422
423impl<T> fmt::Display for DoseEquivalent<T> where T: NumLike {
424	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
425		write!(f, "{} {}", &self.Sv, Self::unit_symbol())
426	}
427}
428
429impl<T> DoseEquivalent<T> where T: NumLike+From<f64> {
430	
431	/// Returns a copy of this dose equivalent value in millisieverts
432	/// 
433	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
434	pub fn to_mSv(&self) -> T {
435		return self.Sv.clone() * T::from(1000.0_f64);
436	}
437
438	/// Returns a new dose equivalent value from the given number of millisieverts
439	/// 
440	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
441	///
442	/// # Arguments
443	/// * `mSv` - Any number-like type, representing a quantity of millisieverts
444	pub fn from_mSv(mSv: T) -> Self {
445		DoseEquivalent{Sv: mSv * T::from(0.001_f64)}
446	}
447
448	/// Returns a copy of this dose equivalent value in microsieverts
449	/// 
450	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
451	pub fn to_uSv(&self) -> T {
452		return self.Sv.clone() * T::from(1000000.0_f64);
453	}
454
455	/// Returns a new dose equivalent value from the given number of microsieverts
456	/// 
457	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
458	///
459	/// # Arguments
460	/// * `uSv` - Any number-like type, representing a quantity of microsieverts
461	pub fn from_uSv(uSv: T) -> Self {
462		DoseEquivalent{Sv: uSv * T::from(1e-06_f64)}
463	}
464
465	/// Returns a copy of this dose equivalent value in nanosieverts
466	/// 
467	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
468	pub fn to_nSv(&self) -> T {
469		return self.Sv.clone() * T::from(1000000000.0_f64);
470	}
471
472	/// Returns a new dose equivalent value from the given number of nanosieverts
473	/// 
474	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
475	///
476	/// # Arguments
477	/// * `nSv` - Any number-like type, representing a quantity of nanosieverts
478	pub fn from_nSv(nSv: T) -> Self {
479		DoseEquivalent{Sv: nSv * T::from(1e-09_f64)}
480	}
481
482	/// Returns a copy of this dose equivalent value in kilosieverts
483	/// 
484	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
485	pub fn to_kSv(&self) -> T {
486		return self.Sv.clone() * T::from(0.001_f64);
487	}
488
489	/// Returns a new dose equivalent value from the given number of kilosieverts
490	/// 
491	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
492	///
493	/// # Arguments
494	/// * `kSv` - Any number-like type, representing a quantity of kilosieverts
495	pub fn from_kSv(kSv: T) -> Self {
496		DoseEquivalent{Sv: kSv * T::from(1000.0_f64)}
497	}
498
499	/// Returns a copy of this dose equivalent value in megasieverts
500	/// 
501	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
502	pub fn to_MSv(&self) -> T {
503		return self.Sv.clone() * T::from(1e-06_f64);
504	}
505
506	/// Returns a new dose equivalent value from the given number of megasieverts
507	/// 
508	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
509	///
510	/// # Arguments
511	/// * `MSv` - Any number-like type, representing a quantity of megasieverts
512	pub fn from_MSv(MSv: T) -> Self {
513		DoseEquivalent{Sv: MSv * T::from(1000000.0_f64)}
514	}
515
516	/// Returns a copy of this dose equivalent value in gigasieverts
517	/// 
518	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
519	pub fn to_GSv(&self) -> T {
520		return self.Sv.clone() * T::from(1e-09_f64);
521	}
522
523	/// Returns a new dose equivalent value from the given number of gigasieverts
524	/// 
525	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
526	///
527	/// # Arguments
528	/// * `GSv` - Any number-like type, representing a quantity of gigasieverts
529	pub fn from_GSv(GSv: T) -> Self {
530		DoseEquivalent{Sv: GSv * T::from(1000000000.0_f64)}
531	}
532
533	/// Returns a copy of this dose equivalent value in roentgen equivalent man
534	/// 
535	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
536	pub fn to_rem(&self) -> T {
537		return self.Sv.clone() * T::from(100.0_f64);
538	}
539
540	/// Returns a new dose equivalent value from the given number of roentgen equivalent man
541	/// 
542	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
543	///
544	/// # Arguments
545	/// * `rem` - Any number-like type, representing a quantity of roentgen equivalent man
546	pub fn from_rem(rem: T) -> Self {
547		DoseEquivalent{Sv: rem * T::from(0.01_f64)}
548	}
549
550	/// Returns a copy of this dose equivalent value in milli-roentgen equivalents
551	/// 
552	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
553	pub fn to_mrem(&self) -> T {
554		return self.Sv.clone() * T::from(100000.0_f64);
555	}
556
557	/// Returns a new dose equivalent value from the given number of milli-roentgen equivalents
558	/// 
559	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
560	///
561	/// # Arguments
562	/// * `mrem` - Any number-like type, representing a quantity of milli-roentgen equivalents
563	pub fn from_mrem(mrem: T) -> Self {
564		DoseEquivalent{Sv: mrem * T::from(1e-05_f64)}
565	}
566
567	/// Returns a copy of this dose equivalent value in kilo-roentgen equivalents
568	/// 
569	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
570	pub fn to_krem(&self) -> T {
571		return self.Sv.clone() * T::from(0.1_f64);
572	}
573
574	/// Returns a new dose equivalent value from the given number of kilo-roentgen equivalents
575	/// 
576	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
577	///
578	/// # Arguments
579	/// * `krem` - Any number-like type, representing a quantity of kilo-roentgen equivalents
580	pub fn from_krem(krem: T) -> Self {
581		DoseEquivalent{Sv: krem * T::from(10.0_f64)}
582	}
583
584}
585
586
587/// Multiplying a unit value by a scalar value returns a unit value
588#[cfg(feature="num-bigfloat")]
589impl core::ops::Mul<DoseEquivalent<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
590	type Output = DoseEquivalent<num_bigfloat::BigFloat>;
591	fn mul(self, rhs: DoseEquivalent<num_bigfloat::BigFloat>) -> Self::Output {
592		DoseEquivalent{Sv: self * rhs.Sv}
593	}
594}
595/// Multiplying a unit value by a scalar value returns a unit value
596#[cfg(feature="num-bigfloat")]
597impl core::ops::Mul<DoseEquivalent<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
598	type Output = DoseEquivalent<num_bigfloat::BigFloat>;
599	fn mul(self, rhs: DoseEquivalent<num_bigfloat::BigFloat>) -> Self::Output {
600		DoseEquivalent{Sv: self.clone() * rhs.Sv}
601	}
602}
603/// Multiplying a unit value by a scalar value returns a unit value
604#[cfg(feature="num-bigfloat")]
605impl core::ops::Mul<&DoseEquivalent<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
606	type Output = DoseEquivalent<num_bigfloat::BigFloat>;
607	fn mul(self, rhs: &DoseEquivalent<num_bigfloat::BigFloat>) -> Self::Output {
608		DoseEquivalent{Sv: self * rhs.Sv.clone()}
609	}
610}
611/// Multiplying a unit value by a scalar value returns a unit value
612#[cfg(feature="num-bigfloat")]
613impl core::ops::Mul<&DoseEquivalent<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
614	type Output = DoseEquivalent<num_bigfloat::BigFloat>;
615	fn mul(self, rhs: &DoseEquivalent<num_bigfloat::BigFloat>) -> Self::Output {
616		DoseEquivalent{Sv: self.clone() * rhs.Sv.clone()}
617	}
618}
619
620/// Multiplying a unit value by a scalar value returns a unit value
621#[cfg(feature="num-complex")]
622impl core::ops::Mul<DoseEquivalent<num_complex::Complex32>> for num_complex::Complex32 {
623	type Output = DoseEquivalent<num_complex::Complex32>;
624	fn mul(self, rhs: DoseEquivalent<num_complex::Complex32>) -> Self::Output {
625		DoseEquivalent{Sv: self * rhs.Sv}
626	}
627}
628/// Multiplying a unit value by a scalar value returns a unit value
629#[cfg(feature="num-complex")]
630impl core::ops::Mul<DoseEquivalent<num_complex::Complex32>> for &num_complex::Complex32 {
631	type Output = DoseEquivalent<num_complex::Complex32>;
632	fn mul(self, rhs: DoseEquivalent<num_complex::Complex32>) -> Self::Output {
633		DoseEquivalent{Sv: self.clone() * rhs.Sv}
634	}
635}
636/// Multiplying a unit value by a scalar value returns a unit value
637#[cfg(feature="num-complex")]
638impl core::ops::Mul<&DoseEquivalent<num_complex::Complex32>> for num_complex::Complex32 {
639	type Output = DoseEquivalent<num_complex::Complex32>;
640	fn mul(self, rhs: &DoseEquivalent<num_complex::Complex32>) -> Self::Output {
641		DoseEquivalent{Sv: self * rhs.Sv.clone()}
642	}
643}
644/// Multiplying a unit value by a scalar value returns a unit value
645#[cfg(feature="num-complex")]
646impl core::ops::Mul<&DoseEquivalent<num_complex::Complex32>> for &num_complex::Complex32 {
647	type Output = DoseEquivalent<num_complex::Complex32>;
648	fn mul(self, rhs: &DoseEquivalent<num_complex::Complex32>) -> Self::Output {
649		DoseEquivalent{Sv: self.clone() * rhs.Sv.clone()}
650	}
651}
652
653/// Multiplying a unit value by a scalar value returns a unit value
654#[cfg(feature="num-complex")]
655impl core::ops::Mul<DoseEquivalent<num_complex::Complex64>> for num_complex::Complex64 {
656	type Output = DoseEquivalent<num_complex::Complex64>;
657	fn mul(self, rhs: DoseEquivalent<num_complex::Complex64>) -> Self::Output {
658		DoseEquivalent{Sv: self * rhs.Sv}
659	}
660}
661/// Multiplying a unit value by a scalar value returns a unit value
662#[cfg(feature="num-complex")]
663impl core::ops::Mul<DoseEquivalent<num_complex::Complex64>> for &num_complex::Complex64 {
664	type Output = DoseEquivalent<num_complex::Complex64>;
665	fn mul(self, rhs: DoseEquivalent<num_complex::Complex64>) -> Self::Output {
666		DoseEquivalent{Sv: self.clone() * rhs.Sv}
667	}
668}
669/// Multiplying a unit value by a scalar value returns a unit value
670#[cfg(feature="num-complex")]
671impl core::ops::Mul<&DoseEquivalent<num_complex::Complex64>> for num_complex::Complex64 {
672	type Output = DoseEquivalent<num_complex::Complex64>;
673	fn mul(self, rhs: &DoseEquivalent<num_complex::Complex64>) -> Self::Output {
674		DoseEquivalent{Sv: self * rhs.Sv.clone()}
675	}
676}
677/// Multiplying a unit value by a scalar value returns a unit value
678#[cfg(feature="num-complex")]
679impl core::ops::Mul<&DoseEquivalent<num_complex::Complex64>> for &num_complex::Complex64 {
680	type Output = DoseEquivalent<num_complex::Complex64>;
681	fn mul(self, rhs: &DoseEquivalent<num_complex::Complex64>) -> Self::Output {
682		DoseEquivalent{Sv: self.clone() * rhs.Sv.clone()}
683	}
684}
685
686
687
688
689// DoseEquivalent * Mass -> Energy
690/// Multiplying a DoseEquivalent by a Mass returns a value of type Energy
691impl<T> core::ops::Mul<Mass<T>> for DoseEquivalent<T> where T: NumLike {
692	type Output = Energy<T>;
693	fn mul(self, rhs: Mass<T>) -> Self::Output {
694		Energy{J: self.Sv * rhs.kg}
695	}
696}
697/// Multiplying a DoseEquivalent by a Mass returns a value of type Energy
698impl<T> core::ops::Mul<Mass<T>> for &DoseEquivalent<T> where T: NumLike {
699	type Output = Energy<T>;
700	fn mul(self, rhs: Mass<T>) -> Self::Output {
701		Energy{J: self.Sv.clone() * rhs.kg}
702	}
703}
704/// Multiplying a DoseEquivalent by a Mass returns a value of type Energy
705impl<T> core::ops::Mul<&Mass<T>> for DoseEquivalent<T> where T: NumLike {
706	type Output = Energy<T>;
707	fn mul(self, rhs: &Mass<T>) -> Self::Output {
708		Energy{J: self.Sv * rhs.kg.clone()}
709	}
710}
711/// Multiplying a DoseEquivalent by a Mass returns a value of type Energy
712impl<T> core::ops::Mul<&Mass<T>> for &DoseEquivalent<T> where T: NumLike {
713	type Output = Energy<T>;
714	fn mul(self, rhs: &Mass<T>) -> Self::Output {
715		Energy{J: self.Sv.clone() * rhs.kg.clone()}
716	}
717}
718
719/// The inverse of absorbed radiation dose unit type, defined as inverse grays in SI units
720#[derive(UnitStruct, Debug, Clone)]
721#[cfg_attr(feature="serde", derive(Serialize, Deserialize))]
722pub struct InverseAbsorbedDose<T: NumLike>{
723	/// The value of this Inverse absorbed dose in inverse grays
724	pub per_Gy: T
725}
726
727impl<T> InverseAbsorbedDose<T> where T: NumLike {
728
729	/// Returns the standard unit name of inverse absorbed dose: "inverse grays"
730	pub fn unit_name() -> &'static str { "inverse grays" }
731	
732	/// Returns the abbreviated name or symbol of inverse absorbed dose: "1/Gy" for inverse grays
733	pub fn unit_symbol() -> &'static str { "1/Gy" }
734	
735	/// Returns a new inverse absorbed dose value from the given number of inverse grays
736	///
737	/// # Arguments
738	/// * `per_Gy` - Any number-like type, representing a quantity of inverse grays
739	pub fn from_per_Gy(per_Gy: T) -> Self { InverseAbsorbedDose{per_Gy: per_Gy} }
740	
741	/// Returns a copy of this inverse absorbed dose value in inverse grays
742	pub fn to_per_Gy(&self) -> T { self.per_Gy.clone() }
743
744	/// Returns a new inverse absorbed dose value from the given number of inverse grays
745	///
746	/// # Arguments
747	/// * `per_grays` - Any number-like type, representing a quantity of inverse grays
748	pub fn from_per_grays(per_grays: T) -> Self { InverseAbsorbedDose{per_Gy: per_grays} }
749	
750	/// Returns a copy of this inverse absorbed dose value in inverse grays
751	pub fn to_per_grays(&self) -> T { self.per_Gy.clone() }
752
753}
754
755impl<T> fmt::Display for InverseAbsorbedDose<T> where T: NumLike {
756	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
757		write!(f, "{} {}", &self.per_Gy, Self::unit_symbol())
758	}
759}
760
761impl<T> InverseAbsorbedDose<T> where T: NumLike+From<f64> {
762	
763	/// Returns a copy of this inverse absorbed dose value in inverse milligrays
764	/// 
765	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
766	pub fn to_per_mGy(&self) -> T {
767		return self.per_Gy.clone() * T::from(0.001_f64);
768	}
769
770	/// Returns a new inverse absorbed dose value from the given number of inverse milligrays
771	/// 
772	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
773	///
774	/// # Arguments
775	/// * `per_mGy` - Any number-like type, representing a quantity of inverse milligrays
776	pub fn from_per_mGy(per_mGy: T) -> Self {
777		InverseAbsorbedDose{per_Gy: per_mGy * T::from(1000.0_f64)}
778	}
779
780	/// Returns a copy of this inverse absorbed dose value in inverse micrograys
781	/// 
782	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
783	pub fn to_per_uGy(&self) -> T {
784		return self.per_Gy.clone() * T::from(1e-06_f64);
785	}
786
787	/// Returns a new inverse absorbed dose value from the given number of inverse micrograys
788	/// 
789	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
790	///
791	/// # Arguments
792	/// * `per_uGy` - Any number-like type, representing a quantity of inverse micrograys
793	pub fn from_per_uGy(per_uGy: T) -> Self {
794		InverseAbsorbedDose{per_Gy: per_uGy * T::from(1000000.0_f64)}
795	}
796
797	/// Returns a copy of this inverse absorbed dose value in inverse nanograys
798	/// 
799	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
800	pub fn to_per_nGy(&self) -> T {
801		return self.per_Gy.clone() * T::from(1e-09_f64);
802	}
803
804	/// Returns a new inverse absorbed dose value from the given number of inverse nanograys
805	/// 
806	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
807	///
808	/// # Arguments
809	/// * `per_nGy` - Any number-like type, representing a quantity of inverse nanograys
810	pub fn from_per_nGy(per_nGy: T) -> Self {
811		InverseAbsorbedDose{per_Gy: per_nGy * T::from(1000000000.0_f64)}
812	}
813
814	/// Returns a copy of this inverse absorbed dose value in inverse kilograys
815	/// 
816	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
817	pub fn to_per_kGy(&self) -> T {
818		return self.per_Gy.clone() * T::from(1000.0_f64);
819	}
820
821	/// Returns a new inverse absorbed dose value from the given number of inverse kilograys
822	/// 
823	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
824	///
825	/// # Arguments
826	/// * `per_kGy` - Any number-like type, representing a quantity of inverse kilograys
827	pub fn from_per_kGy(per_kGy: T) -> Self {
828		InverseAbsorbedDose{per_Gy: per_kGy * T::from(0.001_f64)}
829	}
830
831	/// Returns a copy of this inverse absorbed dose value in inverse megagrays
832	/// 
833	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
834	pub fn to_per_MGy(&self) -> T {
835		return self.per_Gy.clone() * T::from(1000000.0_f64);
836	}
837
838	/// Returns a new inverse absorbed dose value from the given number of inverse megagrays
839	/// 
840	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
841	///
842	/// # Arguments
843	/// * `per_MGy` - Any number-like type, representing a quantity of inverse megagrays
844	pub fn from_per_MGy(per_MGy: T) -> Self {
845		InverseAbsorbedDose{per_Gy: per_MGy * T::from(1e-06_f64)}
846	}
847
848	/// Returns a copy of this inverse absorbed dose value in inverse gigagrays
849	/// 
850	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
851	pub fn to_per_GGy(&self) -> T {
852		return self.per_Gy.clone() * T::from(1000000000.0_f64);
853	}
854
855	/// Returns a new inverse absorbed dose value from the given number of inverse gigagrays
856	/// 
857	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
858	///
859	/// # Arguments
860	/// * `per_GGy` - Any number-like type, representing a quantity of inverse gigagrays
861	pub fn from_per_GGy(per_GGy: T) -> Self {
862		InverseAbsorbedDose{per_Gy: per_GGy * T::from(1e-09_f64)}
863	}
864
865	/// Returns a copy of this inverse absorbed dose value in inverse rads
866	/// 
867	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
868	pub fn to_per_rad(&self) -> T {
869		return self.per_Gy.clone() * T::from(0.01_f64);
870	}
871
872	/// Returns a new inverse absorbed dose value from the given number of inverse rads
873	/// 
874	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
875	///
876	/// # Arguments
877	/// * `per_rad` - Any number-like type, representing a quantity of inverse rads
878	pub fn from_per_rad(per_rad: T) -> Self {
879		InverseAbsorbedDose{per_Gy: per_rad * T::from(100.0_f64)}
880	}
881
882	/// Returns a copy of this inverse absorbed dose value in inverse kilorads
883	/// 
884	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
885	pub fn to_per_krad(&self) -> T {
886		return self.per_Gy.clone() * T::from(10.0_f64);
887	}
888
889	/// Returns a new inverse absorbed dose value from the given number of inverse kilorads
890	/// 
891	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
892	///
893	/// # Arguments
894	/// * `per_krad` - Any number-like type, representing a quantity of inverse kilorads
895	pub fn from_per_krad(per_krad: T) -> Self {
896		InverseAbsorbedDose{per_Gy: per_krad * T::from(0.1_f64)}
897	}
898
899	/// Returns a copy of this inverse absorbed dose value in inverse millirads
900	/// 
901	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
902	pub fn to_per_mrad(&self) -> T {
903		return self.per_Gy.clone() * T::from(1e-05_f64);
904	}
905
906	/// Returns a new inverse absorbed dose value from the given number of inverse millirads
907	/// 
908	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
909	///
910	/// # Arguments
911	/// * `per_mrad` - Any number-like type, representing a quantity of inverse millirads
912	pub fn from_per_mrad(per_mrad: T) -> Self {
913		InverseAbsorbedDose{per_Gy: per_mrad * T::from(100000.0_f64)}
914	}
915
916	/// Returns a copy of this inverse absorbed dose value in inverse microrads
917	/// 
918	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
919	pub fn to_per_urad(&self) -> T {
920		return self.per_Gy.clone() * T::from(1e-08_f64);
921	}
922
923	/// Returns a new inverse absorbed dose value from the given number of inverse microrads
924	/// 
925	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
926	///
927	/// # Arguments
928	/// * `per_urad` - Any number-like type, representing a quantity of inverse microrads
929	pub fn from_per_urad(per_urad: T) -> Self {
930		InverseAbsorbedDose{per_Gy: per_urad * T::from(100000000.0_f64)}
931	}
932
933	/// Returns a copy of this inverse absorbed dose value in gram per ergs
934	/// 
935	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
936	pub fn to_per_erg(&self) -> T {
937		return self.per_Gy.clone() * T::from(0.0001_f64);
938	}
939
940	/// Returns a new inverse absorbed dose value from the given number of gram per ergs
941	/// 
942	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
943	///
944	/// # Arguments
945	/// * `per_erg` - Any number-like type, representing a quantity of gram per ergs
946	pub fn from_per_erg(per_erg: T) -> Self {
947		InverseAbsorbedDose{per_Gy: per_erg * T::from(10000.0_f64)}
948	}
949
950}
951
952
953/// Multiplying a unit value by a scalar value returns a unit value
954#[cfg(feature="num-bigfloat")]
955impl core::ops::Mul<InverseAbsorbedDose<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
956	type Output = InverseAbsorbedDose<num_bigfloat::BigFloat>;
957	fn mul(self, rhs: InverseAbsorbedDose<num_bigfloat::BigFloat>) -> Self::Output {
958		InverseAbsorbedDose{per_Gy: self * rhs.per_Gy}
959	}
960}
961/// Multiplying a unit value by a scalar value returns a unit value
962#[cfg(feature="num-bigfloat")]
963impl core::ops::Mul<InverseAbsorbedDose<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
964	type Output = InverseAbsorbedDose<num_bigfloat::BigFloat>;
965	fn mul(self, rhs: InverseAbsorbedDose<num_bigfloat::BigFloat>) -> Self::Output {
966		InverseAbsorbedDose{per_Gy: self.clone() * rhs.per_Gy}
967	}
968}
969/// Multiplying a unit value by a scalar value returns a unit value
970#[cfg(feature="num-bigfloat")]
971impl core::ops::Mul<&InverseAbsorbedDose<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
972	type Output = InverseAbsorbedDose<num_bigfloat::BigFloat>;
973	fn mul(self, rhs: &InverseAbsorbedDose<num_bigfloat::BigFloat>) -> Self::Output {
974		InverseAbsorbedDose{per_Gy: self * rhs.per_Gy.clone()}
975	}
976}
977/// Multiplying a unit value by a scalar value returns a unit value
978#[cfg(feature="num-bigfloat")]
979impl core::ops::Mul<&InverseAbsorbedDose<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
980	type Output = InverseAbsorbedDose<num_bigfloat::BigFloat>;
981	fn mul(self, rhs: &InverseAbsorbedDose<num_bigfloat::BigFloat>) -> Self::Output {
982		InverseAbsorbedDose{per_Gy: self.clone() * rhs.per_Gy.clone()}
983	}
984}
985
986/// Multiplying a unit value by a scalar value returns a unit value
987#[cfg(feature="num-complex")]
988impl core::ops::Mul<InverseAbsorbedDose<num_complex::Complex32>> for num_complex::Complex32 {
989	type Output = InverseAbsorbedDose<num_complex::Complex32>;
990	fn mul(self, rhs: InverseAbsorbedDose<num_complex::Complex32>) -> Self::Output {
991		InverseAbsorbedDose{per_Gy: self * rhs.per_Gy}
992	}
993}
994/// Multiplying a unit value by a scalar value returns a unit value
995#[cfg(feature="num-complex")]
996impl core::ops::Mul<InverseAbsorbedDose<num_complex::Complex32>> for &num_complex::Complex32 {
997	type Output = InverseAbsorbedDose<num_complex::Complex32>;
998	fn mul(self, rhs: InverseAbsorbedDose<num_complex::Complex32>) -> Self::Output {
999		InverseAbsorbedDose{per_Gy: self.clone() * rhs.per_Gy}
1000	}
1001}
1002/// Multiplying a unit value by a scalar value returns a unit value
1003#[cfg(feature="num-complex")]
1004impl core::ops::Mul<&InverseAbsorbedDose<num_complex::Complex32>> for num_complex::Complex32 {
1005	type Output = InverseAbsorbedDose<num_complex::Complex32>;
1006	fn mul(self, rhs: &InverseAbsorbedDose<num_complex::Complex32>) -> Self::Output {
1007		InverseAbsorbedDose{per_Gy: self * rhs.per_Gy.clone()}
1008	}
1009}
1010/// Multiplying a unit value by a scalar value returns a unit value
1011#[cfg(feature="num-complex")]
1012impl core::ops::Mul<&InverseAbsorbedDose<num_complex::Complex32>> for &num_complex::Complex32 {
1013	type Output = InverseAbsorbedDose<num_complex::Complex32>;
1014	fn mul(self, rhs: &InverseAbsorbedDose<num_complex::Complex32>) -> Self::Output {
1015		InverseAbsorbedDose{per_Gy: self.clone() * rhs.per_Gy.clone()}
1016	}
1017}
1018
1019/// Multiplying a unit value by a scalar value returns a unit value
1020#[cfg(feature="num-complex")]
1021impl core::ops::Mul<InverseAbsorbedDose<num_complex::Complex64>> for num_complex::Complex64 {
1022	type Output = InverseAbsorbedDose<num_complex::Complex64>;
1023	fn mul(self, rhs: InverseAbsorbedDose<num_complex::Complex64>) -> Self::Output {
1024		InverseAbsorbedDose{per_Gy: self * rhs.per_Gy}
1025	}
1026}
1027/// Multiplying a unit value by a scalar value returns a unit value
1028#[cfg(feature="num-complex")]
1029impl core::ops::Mul<InverseAbsorbedDose<num_complex::Complex64>> for &num_complex::Complex64 {
1030	type Output = InverseAbsorbedDose<num_complex::Complex64>;
1031	fn mul(self, rhs: InverseAbsorbedDose<num_complex::Complex64>) -> Self::Output {
1032		InverseAbsorbedDose{per_Gy: self.clone() * rhs.per_Gy}
1033	}
1034}
1035/// Multiplying a unit value by a scalar value returns a unit value
1036#[cfg(feature="num-complex")]
1037impl core::ops::Mul<&InverseAbsorbedDose<num_complex::Complex64>> for num_complex::Complex64 {
1038	type Output = InverseAbsorbedDose<num_complex::Complex64>;
1039	fn mul(self, rhs: &InverseAbsorbedDose<num_complex::Complex64>) -> Self::Output {
1040		InverseAbsorbedDose{per_Gy: self * rhs.per_Gy.clone()}
1041	}
1042}
1043/// Multiplying a unit value by a scalar value returns a unit value
1044#[cfg(feature="num-complex")]
1045impl core::ops::Mul<&InverseAbsorbedDose<num_complex::Complex64>> for &num_complex::Complex64 {
1046	type Output = InverseAbsorbedDose<num_complex::Complex64>;
1047	fn mul(self, rhs: &InverseAbsorbedDose<num_complex::Complex64>) -> Self::Output {
1048		InverseAbsorbedDose{per_Gy: self.clone() * rhs.per_Gy.clone()}
1049	}
1050}
1051
1052
1053
1054
1055// InverseAbsorbedDose * Distance -> InverseAcceleration
1056/// Multiplying a InverseAbsorbedDose by a Distance returns a value of type InverseAcceleration
1057impl<T> core::ops::Mul<Distance<T>> for InverseAbsorbedDose<T> where T: NumLike {
1058	type Output = InverseAcceleration<T>;
1059	fn mul(self, rhs: Distance<T>) -> Self::Output {
1060		InverseAcceleration{s2pm: self.per_Gy * rhs.m}
1061	}
1062}
1063/// Multiplying a InverseAbsorbedDose by a Distance returns a value of type InverseAcceleration
1064impl<T> core::ops::Mul<Distance<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1065	type Output = InverseAcceleration<T>;
1066	fn mul(self, rhs: Distance<T>) -> Self::Output {
1067		InverseAcceleration{s2pm: self.per_Gy.clone() * rhs.m}
1068	}
1069}
1070/// Multiplying a InverseAbsorbedDose by a Distance returns a value of type InverseAcceleration
1071impl<T> core::ops::Mul<&Distance<T>> for InverseAbsorbedDose<T> where T: NumLike {
1072	type Output = InverseAcceleration<T>;
1073	fn mul(self, rhs: &Distance<T>) -> Self::Output {
1074		InverseAcceleration{s2pm: self.per_Gy * rhs.m.clone()}
1075	}
1076}
1077/// Multiplying a InverseAbsorbedDose by a Distance returns a value of type InverseAcceleration
1078impl<T> core::ops::Mul<&Distance<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1079	type Output = InverseAcceleration<T>;
1080	fn mul(self, rhs: &Distance<T>) -> Self::Output {
1081		InverseAcceleration{s2pm: self.per_Gy.clone() * rhs.m.clone()}
1082	}
1083}
1084
1085// InverseAbsorbedDose / InverseDistance -> InverseAcceleration
1086/// Dividing a InverseAbsorbedDose by a InverseDistance returns a value of type InverseAcceleration
1087impl<T> core::ops::Div<InverseDistance<T>> for InverseAbsorbedDose<T> where T: NumLike {
1088	type Output = InverseAcceleration<T>;
1089	fn div(self, rhs: InverseDistance<T>) -> Self::Output {
1090		InverseAcceleration{s2pm: self.per_Gy / rhs.per_m}
1091	}
1092}
1093/// Dividing a InverseAbsorbedDose by a InverseDistance returns a value of type InverseAcceleration
1094impl<T> core::ops::Div<InverseDistance<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1095	type Output = InverseAcceleration<T>;
1096	fn div(self, rhs: InverseDistance<T>) -> Self::Output {
1097		InverseAcceleration{s2pm: self.per_Gy.clone() / rhs.per_m}
1098	}
1099}
1100/// Dividing a InverseAbsorbedDose by a InverseDistance returns a value of type InverseAcceleration
1101impl<T> core::ops::Div<&InverseDistance<T>> for InverseAbsorbedDose<T> where T: NumLike {
1102	type Output = InverseAcceleration<T>;
1103	fn div(self, rhs: &InverseDistance<T>) -> Self::Output {
1104		InverseAcceleration{s2pm: self.per_Gy / rhs.per_m.clone()}
1105	}
1106}
1107/// Dividing a InverseAbsorbedDose by a InverseDistance returns a value of type InverseAcceleration
1108impl<T> core::ops::Div<&InverseDistance<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1109	type Output = InverseAcceleration<T>;
1110	fn div(self, rhs: &InverseDistance<T>) -> Self::Output {
1111		InverseAcceleration{s2pm: self.per_Gy.clone() / rhs.per_m.clone()}
1112	}
1113}
1114
1115// InverseAbsorbedDose * InverseMass -> InverseEnergy
1116/// Multiplying a InverseAbsorbedDose by a InverseMass returns a value of type InverseEnergy
1117impl<T> core::ops::Mul<InverseMass<T>> for InverseAbsorbedDose<T> where T: NumLike {
1118	type Output = InverseEnergy<T>;
1119	fn mul(self, rhs: InverseMass<T>) -> Self::Output {
1120		InverseEnergy{per_J: self.per_Gy * rhs.per_kg}
1121	}
1122}
1123/// Multiplying a InverseAbsorbedDose by a InverseMass returns a value of type InverseEnergy
1124impl<T> core::ops::Mul<InverseMass<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1125	type Output = InverseEnergy<T>;
1126	fn mul(self, rhs: InverseMass<T>) -> Self::Output {
1127		InverseEnergy{per_J: self.per_Gy.clone() * rhs.per_kg}
1128	}
1129}
1130/// Multiplying a InverseAbsorbedDose by a InverseMass returns a value of type InverseEnergy
1131impl<T> core::ops::Mul<&InverseMass<T>> for InverseAbsorbedDose<T> where T: NumLike {
1132	type Output = InverseEnergy<T>;
1133	fn mul(self, rhs: &InverseMass<T>) -> Self::Output {
1134		InverseEnergy{per_J: self.per_Gy * rhs.per_kg.clone()}
1135	}
1136}
1137/// Multiplying a InverseAbsorbedDose by a InverseMass returns a value of type InverseEnergy
1138impl<T> core::ops::Mul<&InverseMass<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1139	type Output = InverseEnergy<T>;
1140	fn mul(self, rhs: &InverseMass<T>) -> Self::Output {
1141		InverseEnergy{per_J: self.per_Gy.clone() * rhs.per_kg.clone()}
1142	}
1143}
1144
1145// InverseAbsorbedDose / InverseTemperature -> InverseSpecificHeatCapacity
1146/// Dividing a InverseAbsorbedDose by a InverseTemperature returns a value of type InverseSpecificHeatCapacity
1147impl<T> core::ops::Div<InverseTemperature<T>> for InverseAbsorbedDose<T> where T: NumLike {
1148	type Output = InverseSpecificHeatCapacity<T>;
1149	fn div(self, rhs: InverseTemperature<T>) -> Self::Output {
1150		InverseSpecificHeatCapacity{kgK_per_J: self.per_Gy / rhs.per_K}
1151	}
1152}
1153/// Dividing a InverseAbsorbedDose by a InverseTemperature returns a value of type InverseSpecificHeatCapacity
1154impl<T> core::ops::Div<InverseTemperature<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1155	type Output = InverseSpecificHeatCapacity<T>;
1156	fn div(self, rhs: InverseTemperature<T>) -> Self::Output {
1157		InverseSpecificHeatCapacity{kgK_per_J: self.per_Gy.clone() / rhs.per_K}
1158	}
1159}
1160/// Dividing a InverseAbsorbedDose by a InverseTemperature returns a value of type InverseSpecificHeatCapacity
1161impl<T> core::ops::Div<&InverseTemperature<T>> for InverseAbsorbedDose<T> where T: NumLike {
1162	type Output = InverseSpecificHeatCapacity<T>;
1163	fn div(self, rhs: &InverseTemperature<T>) -> Self::Output {
1164		InverseSpecificHeatCapacity{kgK_per_J: self.per_Gy / rhs.per_K.clone()}
1165	}
1166}
1167/// Dividing a InverseAbsorbedDose by a InverseTemperature returns a value of type InverseSpecificHeatCapacity
1168impl<T> core::ops::Div<&InverseTemperature<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1169	type Output = InverseSpecificHeatCapacity<T>;
1170	fn div(self, rhs: &InverseTemperature<T>) -> Self::Output {
1171		InverseSpecificHeatCapacity{kgK_per_J: self.per_Gy.clone() / rhs.per_K.clone()}
1172	}
1173}
1174
1175// InverseAbsorbedDose / Mass -> InverseEnergy
1176/// Dividing a InverseAbsorbedDose by a Mass returns a value of type InverseEnergy
1177impl<T> core::ops::Div<Mass<T>> for InverseAbsorbedDose<T> where T: NumLike {
1178	type Output = InverseEnergy<T>;
1179	fn div(self, rhs: Mass<T>) -> Self::Output {
1180		InverseEnergy{per_J: self.per_Gy / rhs.kg}
1181	}
1182}
1183/// Dividing a InverseAbsorbedDose by a Mass returns a value of type InverseEnergy
1184impl<T> core::ops::Div<Mass<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1185	type Output = InverseEnergy<T>;
1186	fn div(self, rhs: Mass<T>) -> Self::Output {
1187		InverseEnergy{per_J: self.per_Gy.clone() / rhs.kg}
1188	}
1189}
1190/// Dividing a InverseAbsorbedDose by a Mass returns a value of type InverseEnergy
1191impl<T> core::ops::Div<&Mass<T>> for InverseAbsorbedDose<T> where T: NumLike {
1192	type Output = InverseEnergy<T>;
1193	fn div(self, rhs: &Mass<T>) -> Self::Output {
1194		InverseEnergy{per_J: self.per_Gy / rhs.kg.clone()}
1195	}
1196}
1197/// Dividing a InverseAbsorbedDose by a Mass returns a value of type InverseEnergy
1198impl<T> core::ops::Div<&Mass<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1199	type Output = InverseEnergy<T>;
1200	fn div(self, rhs: &Mass<T>) -> Self::Output {
1201		InverseEnergy{per_J: self.per_Gy.clone() / rhs.kg.clone()}
1202	}
1203}
1204
1205// InverseAbsorbedDose * Temperature -> InverseSpecificHeatCapacity
1206/// Multiplying a InverseAbsorbedDose by a Temperature returns a value of type InverseSpecificHeatCapacity
1207impl<T> core::ops::Mul<Temperature<T>> for InverseAbsorbedDose<T> where T: NumLike {
1208	type Output = InverseSpecificHeatCapacity<T>;
1209	fn mul(self, rhs: Temperature<T>) -> Self::Output {
1210		InverseSpecificHeatCapacity{kgK_per_J: self.per_Gy * rhs.K}
1211	}
1212}
1213/// Multiplying a InverseAbsorbedDose by a Temperature returns a value of type InverseSpecificHeatCapacity
1214impl<T> core::ops::Mul<Temperature<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1215	type Output = InverseSpecificHeatCapacity<T>;
1216	fn mul(self, rhs: Temperature<T>) -> Self::Output {
1217		InverseSpecificHeatCapacity{kgK_per_J: self.per_Gy.clone() * rhs.K}
1218	}
1219}
1220/// Multiplying a InverseAbsorbedDose by a Temperature returns a value of type InverseSpecificHeatCapacity
1221impl<T> core::ops::Mul<&Temperature<T>> for InverseAbsorbedDose<T> where T: NumLike {
1222	type Output = InverseSpecificHeatCapacity<T>;
1223	fn mul(self, rhs: &Temperature<T>) -> Self::Output {
1224		InverseSpecificHeatCapacity{kgK_per_J: self.per_Gy * rhs.K.clone()}
1225	}
1226}
1227/// Multiplying a InverseAbsorbedDose by a Temperature returns a value of type InverseSpecificHeatCapacity
1228impl<T> core::ops::Mul<&Temperature<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1229	type Output = InverseSpecificHeatCapacity<T>;
1230	fn mul(self, rhs: &Temperature<T>) -> Self::Output {
1231		InverseSpecificHeatCapacity{kgK_per_J: self.per_Gy.clone() * rhs.K.clone()}
1232	}
1233}
1234
1235// InverseAbsorbedDose / InverseSpecificHeatCapacity -> InverseTemperature
1236/// Dividing a InverseAbsorbedDose by a InverseSpecificHeatCapacity returns a value of type InverseTemperature
1237impl<T> core::ops::Div<InverseSpecificHeatCapacity<T>> for InverseAbsorbedDose<T> where T: NumLike {
1238	type Output = InverseTemperature<T>;
1239	fn div(self, rhs: InverseSpecificHeatCapacity<T>) -> Self::Output {
1240		InverseTemperature{per_K: self.per_Gy / rhs.kgK_per_J}
1241	}
1242}
1243/// Dividing a InverseAbsorbedDose by a InverseSpecificHeatCapacity returns a value of type InverseTemperature
1244impl<T> core::ops::Div<InverseSpecificHeatCapacity<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1245	type Output = InverseTemperature<T>;
1246	fn div(self, rhs: InverseSpecificHeatCapacity<T>) -> Self::Output {
1247		InverseTemperature{per_K: self.per_Gy.clone() / rhs.kgK_per_J}
1248	}
1249}
1250/// Dividing a InverseAbsorbedDose by a InverseSpecificHeatCapacity returns a value of type InverseTemperature
1251impl<T> core::ops::Div<&InverseSpecificHeatCapacity<T>> for InverseAbsorbedDose<T> where T: NumLike {
1252	type Output = InverseTemperature<T>;
1253	fn div(self, rhs: &InverseSpecificHeatCapacity<T>) -> Self::Output {
1254		InverseTemperature{per_K: self.per_Gy / rhs.kgK_per_J.clone()}
1255	}
1256}
1257/// Dividing a InverseAbsorbedDose by a InverseSpecificHeatCapacity returns a value of type InverseTemperature
1258impl<T> core::ops::Div<&InverseSpecificHeatCapacity<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1259	type Output = InverseTemperature<T>;
1260	fn div(self, rhs: &InverseSpecificHeatCapacity<T>) -> Self::Output {
1261		InverseTemperature{per_K: self.per_Gy.clone() / rhs.kgK_per_J.clone()}
1262	}
1263}
1264
1265// InverseAbsorbedDose * SpecificHeatCapacity -> InverseTemperature
1266/// Multiplying a InverseAbsorbedDose by a SpecificHeatCapacity returns a value of type InverseTemperature
1267impl<T> core::ops::Mul<SpecificHeatCapacity<T>> for InverseAbsorbedDose<T> where T: NumLike {
1268	type Output = InverseTemperature<T>;
1269	fn mul(self, rhs: SpecificHeatCapacity<T>) -> Self::Output {
1270		InverseTemperature{per_K: self.per_Gy * rhs.J_per_kgK}
1271	}
1272}
1273/// Multiplying a InverseAbsorbedDose by a SpecificHeatCapacity returns a value of type InverseTemperature
1274impl<T> core::ops::Mul<SpecificHeatCapacity<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1275	type Output = InverseTemperature<T>;
1276	fn mul(self, rhs: SpecificHeatCapacity<T>) -> Self::Output {
1277		InverseTemperature{per_K: self.per_Gy.clone() * rhs.J_per_kgK}
1278	}
1279}
1280/// Multiplying a InverseAbsorbedDose by a SpecificHeatCapacity returns a value of type InverseTemperature
1281impl<T> core::ops::Mul<&SpecificHeatCapacity<T>> for InverseAbsorbedDose<T> where T: NumLike {
1282	type Output = InverseTemperature<T>;
1283	fn mul(self, rhs: &SpecificHeatCapacity<T>) -> Self::Output {
1284		InverseTemperature{per_K: self.per_Gy * rhs.J_per_kgK.clone()}
1285	}
1286}
1287/// Multiplying a InverseAbsorbedDose by a SpecificHeatCapacity returns a value of type InverseTemperature
1288impl<T> core::ops::Mul<&SpecificHeatCapacity<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1289	type Output = InverseTemperature<T>;
1290	fn mul(self, rhs: &SpecificHeatCapacity<T>) -> Self::Output {
1291		InverseTemperature{per_K: self.per_Gy.clone() * rhs.J_per_kgK.clone()}
1292	}
1293}
1294
1295// InverseAbsorbedDose * Acceleration -> InverseDistance
1296/// Multiplying a InverseAbsorbedDose by a Acceleration returns a value of type InverseDistance
1297impl<T> core::ops::Mul<Acceleration<T>> for InverseAbsorbedDose<T> where T: NumLike {
1298	type Output = InverseDistance<T>;
1299	fn mul(self, rhs: Acceleration<T>) -> Self::Output {
1300		InverseDistance{per_m: self.per_Gy * rhs.mps2}
1301	}
1302}
1303/// Multiplying a InverseAbsorbedDose by a Acceleration returns a value of type InverseDistance
1304impl<T> core::ops::Mul<Acceleration<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1305	type Output = InverseDistance<T>;
1306	fn mul(self, rhs: Acceleration<T>) -> Self::Output {
1307		InverseDistance{per_m: self.per_Gy.clone() * rhs.mps2}
1308	}
1309}
1310/// Multiplying a InverseAbsorbedDose by a Acceleration returns a value of type InverseDistance
1311impl<T> core::ops::Mul<&Acceleration<T>> for InverseAbsorbedDose<T> where T: NumLike {
1312	type Output = InverseDistance<T>;
1313	fn mul(self, rhs: &Acceleration<T>) -> Self::Output {
1314		InverseDistance{per_m: self.per_Gy * rhs.mps2.clone()}
1315	}
1316}
1317/// Multiplying a InverseAbsorbedDose by a Acceleration returns a value of type InverseDistance
1318impl<T> core::ops::Mul<&Acceleration<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1319	type Output = InverseDistance<T>;
1320	fn mul(self, rhs: &Acceleration<T>) -> Self::Output {
1321		InverseDistance{per_m: self.per_Gy.clone() * rhs.mps2.clone()}
1322	}
1323}
1324
1325// InverseAbsorbedDose / Density -> InversePressure
1326/// Dividing a InverseAbsorbedDose by a Density returns a value of type InversePressure
1327impl<T> core::ops::Div<Density<T>> for InverseAbsorbedDose<T> where T: NumLike {
1328	type Output = InversePressure<T>;
1329	fn div(self, rhs: Density<T>) -> Self::Output {
1330		InversePressure{per_Pa: self.per_Gy / rhs.kgpm3}
1331	}
1332}
1333/// Dividing a InverseAbsorbedDose by a Density returns a value of type InversePressure
1334impl<T> core::ops::Div<Density<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1335	type Output = InversePressure<T>;
1336	fn div(self, rhs: Density<T>) -> Self::Output {
1337		InversePressure{per_Pa: self.per_Gy.clone() / rhs.kgpm3}
1338	}
1339}
1340/// Dividing a InverseAbsorbedDose by a Density returns a value of type InversePressure
1341impl<T> core::ops::Div<&Density<T>> for InverseAbsorbedDose<T> where T: NumLike {
1342	type Output = InversePressure<T>;
1343	fn div(self, rhs: &Density<T>) -> Self::Output {
1344		InversePressure{per_Pa: self.per_Gy / rhs.kgpm3.clone()}
1345	}
1346}
1347/// Dividing a InverseAbsorbedDose by a Density returns a value of type InversePressure
1348impl<T> core::ops::Div<&Density<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1349	type Output = InversePressure<T>;
1350	fn div(self, rhs: &Density<T>) -> Self::Output {
1351		InversePressure{per_Pa: self.per_Gy.clone() / rhs.kgpm3.clone()}
1352	}
1353}
1354
1355// InverseAbsorbedDose * Energy -> Mass
1356/// Multiplying a InverseAbsorbedDose by a Energy returns a value of type Mass
1357impl<T> core::ops::Mul<Energy<T>> for InverseAbsorbedDose<T> where T: NumLike {
1358	type Output = Mass<T>;
1359	fn mul(self, rhs: Energy<T>) -> Self::Output {
1360		Mass{kg: self.per_Gy * rhs.J}
1361	}
1362}
1363/// Multiplying a InverseAbsorbedDose by a Energy returns a value of type Mass
1364impl<T> core::ops::Mul<Energy<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1365	type Output = Mass<T>;
1366	fn mul(self, rhs: Energy<T>) -> Self::Output {
1367		Mass{kg: self.per_Gy.clone() * rhs.J}
1368	}
1369}
1370/// Multiplying a InverseAbsorbedDose by a Energy returns a value of type Mass
1371impl<T> core::ops::Mul<&Energy<T>> for InverseAbsorbedDose<T> where T: NumLike {
1372	type Output = Mass<T>;
1373	fn mul(self, rhs: &Energy<T>) -> Self::Output {
1374		Mass{kg: self.per_Gy * rhs.J.clone()}
1375	}
1376}
1377/// Multiplying a InverseAbsorbedDose by a Energy returns a value of type Mass
1378impl<T> core::ops::Mul<&Energy<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1379	type Output = Mass<T>;
1380	fn mul(self, rhs: &Energy<T>) -> Self::Output {
1381		Mass{kg: self.per_Gy.clone() * rhs.J.clone()}
1382	}
1383}
1384
1385// InverseAbsorbedDose * Torque -> Mass
1386/// Multiplying a InverseAbsorbedDose by a Torque returns a value of type Mass
1387impl<T> core::ops::Mul<Torque<T>> for InverseAbsorbedDose<T> where T: NumLike {
1388	type Output = Mass<T>;
1389	fn mul(self, rhs: Torque<T>) -> Self::Output {
1390		Mass{kg: self.per_Gy * rhs.Nm}
1391	}
1392}
1393/// Multiplying a InverseAbsorbedDose by a Torque returns a value of type Mass
1394impl<T> core::ops::Mul<Torque<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1395	type Output = Mass<T>;
1396	fn mul(self, rhs: Torque<T>) -> Self::Output {
1397		Mass{kg: self.per_Gy.clone() * rhs.Nm}
1398	}
1399}
1400/// Multiplying a InverseAbsorbedDose by a Torque returns a value of type Mass
1401impl<T> core::ops::Mul<&Torque<T>> for InverseAbsorbedDose<T> where T: NumLike {
1402	type Output = Mass<T>;
1403	fn mul(self, rhs: &Torque<T>) -> Self::Output {
1404		Mass{kg: self.per_Gy * rhs.Nm.clone()}
1405	}
1406}
1407/// Multiplying a InverseAbsorbedDose by a Torque returns a value of type Mass
1408impl<T> core::ops::Mul<&Torque<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1409	type Output = Mass<T>;
1410	fn mul(self, rhs: &Torque<T>) -> Self::Output {
1411		Mass{kg: self.per_Gy.clone() * rhs.Nm.clone()}
1412	}
1413}
1414
1415// InverseAbsorbedDose / InverseAcceleration -> InverseDistance
1416/// Dividing a InverseAbsorbedDose by a InverseAcceleration returns a value of type InverseDistance
1417impl<T> core::ops::Div<InverseAcceleration<T>> for InverseAbsorbedDose<T> where T: NumLike {
1418	type Output = InverseDistance<T>;
1419	fn div(self, rhs: InverseAcceleration<T>) -> Self::Output {
1420		InverseDistance{per_m: self.per_Gy / rhs.s2pm}
1421	}
1422}
1423/// Dividing a InverseAbsorbedDose by a InverseAcceleration returns a value of type InverseDistance
1424impl<T> core::ops::Div<InverseAcceleration<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1425	type Output = InverseDistance<T>;
1426	fn div(self, rhs: InverseAcceleration<T>) -> Self::Output {
1427		InverseDistance{per_m: self.per_Gy.clone() / rhs.s2pm}
1428	}
1429}
1430/// Dividing a InverseAbsorbedDose by a InverseAcceleration returns a value of type InverseDistance
1431impl<T> core::ops::Div<&InverseAcceleration<T>> for InverseAbsorbedDose<T> where T: NumLike {
1432	type Output = InverseDistance<T>;
1433	fn div(self, rhs: &InverseAcceleration<T>) -> Self::Output {
1434		InverseDistance{per_m: self.per_Gy / rhs.s2pm.clone()}
1435	}
1436}
1437/// Dividing a InverseAbsorbedDose by a InverseAcceleration returns a value of type InverseDistance
1438impl<T> core::ops::Div<&InverseAcceleration<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1439	type Output = InverseDistance<T>;
1440	fn div(self, rhs: &InverseAcceleration<T>) -> Self::Output {
1441		InverseDistance{per_m: self.per_Gy.clone() / rhs.s2pm.clone()}
1442	}
1443}
1444
1445// InverseAbsorbedDose / InverseEnergy -> Mass
1446/// Dividing a InverseAbsorbedDose by a InverseEnergy returns a value of type Mass
1447impl<T> core::ops::Div<InverseEnergy<T>> for InverseAbsorbedDose<T> where T: NumLike {
1448	type Output = Mass<T>;
1449	fn div(self, rhs: InverseEnergy<T>) -> Self::Output {
1450		Mass{kg: self.per_Gy / rhs.per_J}
1451	}
1452}
1453/// Dividing a InverseAbsorbedDose by a InverseEnergy returns a value of type Mass
1454impl<T> core::ops::Div<InverseEnergy<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1455	type Output = Mass<T>;
1456	fn div(self, rhs: InverseEnergy<T>) -> Self::Output {
1457		Mass{kg: self.per_Gy.clone() / rhs.per_J}
1458	}
1459}
1460/// Dividing a InverseAbsorbedDose by a InverseEnergy returns a value of type Mass
1461impl<T> core::ops::Div<&InverseEnergy<T>> for InverseAbsorbedDose<T> where T: NumLike {
1462	type Output = Mass<T>;
1463	fn div(self, rhs: &InverseEnergy<T>) -> Self::Output {
1464		Mass{kg: self.per_Gy / rhs.per_J.clone()}
1465	}
1466}
1467/// Dividing a InverseAbsorbedDose by a InverseEnergy returns a value of type Mass
1468impl<T> core::ops::Div<&InverseEnergy<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1469	type Output = Mass<T>;
1470	fn div(self, rhs: &InverseEnergy<T>) -> Self::Output {
1471		Mass{kg: self.per_Gy.clone() / rhs.per_J.clone()}
1472	}
1473}
1474
1475// InverseAbsorbedDose / InverseTorque -> Mass
1476/// Dividing a InverseAbsorbedDose by a InverseTorque returns a value of type Mass
1477impl<T> core::ops::Div<InverseTorque<T>> for InverseAbsorbedDose<T> where T: NumLike {
1478	type Output = Mass<T>;
1479	fn div(self, rhs: InverseTorque<T>) -> Self::Output {
1480		Mass{kg: self.per_Gy / rhs.per_Nm}
1481	}
1482}
1483/// Dividing a InverseAbsorbedDose by a InverseTorque returns a value of type Mass
1484impl<T> core::ops::Div<InverseTorque<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1485	type Output = Mass<T>;
1486	fn div(self, rhs: InverseTorque<T>) -> Self::Output {
1487		Mass{kg: self.per_Gy.clone() / rhs.per_Nm}
1488	}
1489}
1490/// Dividing a InverseAbsorbedDose by a InverseTorque returns a value of type Mass
1491impl<T> core::ops::Div<&InverseTorque<T>> for InverseAbsorbedDose<T> where T: NumLike {
1492	type Output = Mass<T>;
1493	fn div(self, rhs: &InverseTorque<T>) -> Self::Output {
1494		Mass{kg: self.per_Gy / rhs.per_Nm.clone()}
1495	}
1496}
1497/// Dividing a InverseAbsorbedDose by a InverseTorque returns a value of type Mass
1498impl<T> core::ops::Div<&InverseTorque<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1499	type Output = Mass<T>;
1500	fn div(self, rhs: &InverseTorque<T>) -> Self::Output {
1501		Mass{kg: self.per_Gy.clone() / rhs.per_Nm.clone()}
1502	}
1503}
1504
1505// InverseAbsorbedDose / InversePressure -> Density
1506/// Dividing a InverseAbsorbedDose by a InversePressure returns a value of type Density
1507impl<T> core::ops::Div<InversePressure<T>> for InverseAbsorbedDose<T> where T: NumLike {
1508	type Output = Density<T>;
1509	fn div(self, rhs: InversePressure<T>) -> Self::Output {
1510		Density{kgpm3: self.per_Gy / rhs.per_Pa}
1511	}
1512}
1513/// Dividing a InverseAbsorbedDose by a InversePressure returns a value of type Density
1514impl<T> core::ops::Div<InversePressure<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1515	type Output = Density<T>;
1516	fn div(self, rhs: InversePressure<T>) -> Self::Output {
1517		Density{kgpm3: self.per_Gy.clone() / rhs.per_Pa}
1518	}
1519}
1520/// Dividing a InverseAbsorbedDose by a InversePressure returns a value of type Density
1521impl<T> core::ops::Div<&InversePressure<T>> for InverseAbsorbedDose<T> where T: NumLike {
1522	type Output = Density<T>;
1523	fn div(self, rhs: &InversePressure<T>) -> Self::Output {
1524		Density{kgpm3: self.per_Gy / rhs.per_Pa.clone()}
1525	}
1526}
1527/// Dividing a InverseAbsorbedDose by a InversePressure returns a value of type Density
1528impl<T> core::ops::Div<&InversePressure<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1529	type Output = Density<T>;
1530	fn div(self, rhs: &InversePressure<T>) -> Self::Output {
1531		Density{kgpm3: self.per_Gy.clone() / rhs.per_Pa.clone()}
1532	}
1533}
1534
1535// InverseAbsorbedDose * Pressure -> Density
1536/// Multiplying a InverseAbsorbedDose by a Pressure returns a value of type Density
1537impl<T> core::ops::Mul<Pressure<T>> for InverseAbsorbedDose<T> where T: NumLike {
1538	type Output = Density<T>;
1539	fn mul(self, rhs: Pressure<T>) -> Self::Output {
1540		Density{kgpm3: self.per_Gy * rhs.Pa}
1541	}
1542}
1543/// Multiplying a InverseAbsorbedDose by a Pressure returns a value of type Density
1544impl<T> core::ops::Mul<Pressure<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1545	type Output = Density<T>;
1546	fn mul(self, rhs: Pressure<T>) -> Self::Output {
1547		Density{kgpm3: self.per_Gy.clone() * rhs.Pa}
1548	}
1549}
1550/// Multiplying a InverseAbsorbedDose by a Pressure returns a value of type Density
1551impl<T> core::ops::Mul<&Pressure<T>> for InverseAbsorbedDose<T> where T: NumLike {
1552	type Output = Density<T>;
1553	fn mul(self, rhs: &Pressure<T>) -> Self::Output {
1554		Density{kgpm3: self.per_Gy * rhs.Pa.clone()}
1555	}
1556}
1557/// Multiplying a InverseAbsorbedDose by a Pressure returns a value of type Density
1558impl<T> core::ops::Mul<&Pressure<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1559	type Output = Density<T>;
1560	fn mul(self, rhs: &Pressure<T>) -> Self::Output {
1561		Density{kgpm3: self.per_Gy.clone() * rhs.Pa.clone()}
1562	}
1563}
1564
1565// InverseAbsorbedDose / TimePerDistance -> TimePerDistance
1566/// Dividing a InverseAbsorbedDose by a TimePerDistance returns a value of type TimePerDistance
1567impl<T> core::ops::Div<TimePerDistance<T>> for InverseAbsorbedDose<T> where T: NumLike {
1568	type Output = TimePerDistance<T>;
1569	fn div(self, rhs: TimePerDistance<T>) -> Self::Output {
1570		TimePerDistance{spm: self.per_Gy / rhs.spm}
1571	}
1572}
1573/// Dividing a InverseAbsorbedDose by a TimePerDistance returns a value of type TimePerDistance
1574impl<T> core::ops::Div<TimePerDistance<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1575	type Output = TimePerDistance<T>;
1576	fn div(self, rhs: TimePerDistance<T>) -> Self::Output {
1577		TimePerDistance{spm: self.per_Gy.clone() / rhs.spm}
1578	}
1579}
1580/// Dividing a InverseAbsorbedDose by a TimePerDistance returns a value of type TimePerDistance
1581impl<T> core::ops::Div<&TimePerDistance<T>> for InverseAbsorbedDose<T> where T: NumLike {
1582	type Output = TimePerDistance<T>;
1583	fn div(self, rhs: &TimePerDistance<T>) -> Self::Output {
1584		TimePerDistance{spm: self.per_Gy / rhs.spm.clone()}
1585	}
1586}
1587/// Dividing a InverseAbsorbedDose by a TimePerDistance returns a value of type TimePerDistance
1588impl<T> core::ops::Div<&TimePerDistance<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1589	type Output = TimePerDistance<T>;
1590	fn div(self, rhs: &TimePerDistance<T>) -> Self::Output {
1591		TimePerDistance{spm: self.per_Gy.clone() / rhs.spm.clone()}
1592	}
1593}
1594
1595// InverseAbsorbedDose * Velocity -> TimePerDistance
1596/// Multiplying a InverseAbsorbedDose by a Velocity returns a value of type TimePerDistance
1597impl<T> core::ops::Mul<Velocity<T>> for InverseAbsorbedDose<T> where T: NumLike {
1598	type Output = TimePerDistance<T>;
1599	fn mul(self, rhs: Velocity<T>) -> Self::Output {
1600		TimePerDistance{spm: self.per_Gy * rhs.mps}
1601	}
1602}
1603/// Multiplying a InverseAbsorbedDose by a Velocity returns a value of type TimePerDistance
1604impl<T> core::ops::Mul<Velocity<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1605	type Output = TimePerDistance<T>;
1606	fn mul(self, rhs: Velocity<T>) -> Self::Output {
1607		TimePerDistance{spm: self.per_Gy.clone() * rhs.mps}
1608	}
1609}
1610/// Multiplying a InverseAbsorbedDose by a Velocity returns a value of type TimePerDistance
1611impl<T> core::ops::Mul<&Velocity<T>> for InverseAbsorbedDose<T> where T: NumLike {
1612	type Output = TimePerDistance<T>;
1613	fn mul(self, rhs: &Velocity<T>) -> Self::Output {
1614		TimePerDistance{spm: self.per_Gy * rhs.mps.clone()}
1615	}
1616}
1617/// Multiplying a InverseAbsorbedDose by a Velocity returns a value of type TimePerDistance
1618impl<T> core::ops::Mul<&Velocity<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1619	type Output = TimePerDistance<T>;
1620	fn mul(self, rhs: &Velocity<T>) -> Self::Output {
1621		TimePerDistance{spm: self.per_Gy.clone() * rhs.mps.clone()}
1622	}
1623}
1624
1625// InverseAbsorbedDose * VolumePerMass -> InversePressure
1626/// Multiplying a InverseAbsorbedDose by a VolumePerMass returns a value of type InversePressure
1627impl<T> core::ops::Mul<VolumePerMass<T>> for InverseAbsorbedDose<T> where T: NumLike {
1628	type Output = InversePressure<T>;
1629	fn mul(self, rhs: VolumePerMass<T>) -> Self::Output {
1630		InversePressure{per_Pa: self.per_Gy * rhs.m3_per_kg}
1631	}
1632}
1633/// Multiplying a InverseAbsorbedDose by a VolumePerMass returns a value of type InversePressure
1634impl<T> core::ops::Mul<VolumePerMass<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1635	type Output = InversePressure<T>;
1636	fn mul(self, rhs: VolumePerMass<T>) -> Self::Output {
1637		InversePressure{per_Pa: self.per_Gy.clone() * rhs.m3_per_kg}
1638	}
1639}
1640/// Multiplying a InverseAbsorbedDose by a VolumePerMass returns a value of type InversePressure
1641impl<T> core::ops::Mul<&VolumePerMass<T>> for InverseAbsorbedDose<T> where T: NumLike {
1642	type Output = InversePressure<T>;
1643	fn mul(self, rhs: &VolumePerMass<T>) -> Self::Output {
1644		InversePressure{per_Pa: self.per_Gy * rhs.m3_per_kg.clone()}
1645	}
1646}
1647/// Multiplying a InverseAbsorbedDose by a VolumePerMass returns a value of type InversePressure
1648impl<T> core::ops::Mul<&VolumePerMass<T>> for &InverseAbsorbedDose<T> where T: NumLike {
1649	type Output = InversePressure<T>;
1650	fn mul(self, rhs: &VolumePerMass<T>) -> Self::Output {
1651		InversePressure{per_Pa: self.per_Gy.clone() * rhs.m3_per_kg.clone()}
1652	}
1653}
1654
1655/// The inverse of radiation dose equivalent unit type, defined as inverse sieverts in SI units
1656#[derive(UnitStruct, Debug, Clone)]
1657#[cfg_attr(feature="serde", derive(Serialize, Deserialize))]
1658pub struct InverseDoseEquivalent<T: NumLike>{
1659	/// The value of this Inverse dose equivalent in inverse sieverts
1660	pub per_Sv: T
1661}
1662
1663impl<T> InverseDoseEquivalent<T> where T: NumLike {
1664
1665	/// Returns the standard unit name of inverse dose equivalent: "inverse sieverts"
1666	pub fn unit_name() -> &'static str { "inverse sieverts" }
1667	
1668	/// Returns the abbreviated name or symbol of inverse dose equivalent: "1/Sv" for inverse sieverts
1669	pub fn unit_symbol() -> &'static str { "1/Sv" }
1670	
1671	/// Returns a new inverse dose equivalent value from the given number of inverse sieverts
1672	///
1673	/// # Arguments
1674	/// * `per_Sv` - Any number-like type, representing a quantity of inverse sieverts
1675	pub fn from_per_Sv(per_Sv: T) -> Self { InverseDoseEquivalent{per_Sv: per_Sv} }
1676	
1677	/// Returns a copy of this inverse dose equivalent value in inverse sieverts
1678	pub fn to_per_Sv(&self) -> T { self.per_Sv.clone() }
1679
1680	/// Returns a new inverse dose equivalent value from the given number of inverse sieverts
1681	///
1682	/// # Arguments
1683	/// * `per_sieverts` - Any number-like type, representing a quantity of inverse sieverts
1684	pub fn from_per_sieverts(per_sieverts: T) -> Self { InverseDoseEquivalent{per_Sv: per_sieverts} }
1685	
1686	/// Returns a copy of this inverse dose equivalent value in inverse sieverts
1687	pub fn to_per_sieverts(&self) -> T { self.per_Sv.clone() }
1688
1689}
1690
1691impl<T> fmt::Display for InverseDoseEquivalent<T> where T: NumLike {
1692	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1693		write!(f, "{} {}", &self.per_Sv, Self::unit_symbol())
1694	}
1695}
1696
1697impl<T> InverseDoseEquivalent<T> where T: NumLike+From<f64> {
1698	
1699	/// Returns a copy of this inverse dose equivalent value in inverse millisieverts
1700	/// 
1701	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1702	pub fn to_per_mSv(&self) -> T {
1703		return self.per_Sv.clone() * T::from(0.001_f64);
1704	}
1705
1706	/// Returns a new inverse dose equivalent value from the given number of inverse millisieverts
1707	/// 
1708	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1709	///
1710	/// # Arguments
1711	/// * `per_mSv` - Any number-like type, representing a quantity of inverse millisieverts
1712	pub fn from_per_mSv(per_mSv: T) -> Self {
1713		InverseDoseEquivalent{per_Sv: per_mSv * T::from(1000.0_f64)}
1714	}
1715
1716	/// Returns a copy of this inverse dose equivalent value in inverse microsieverts
1717	/// 
1718	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1719	pub fn to_per_uSv(&self) -> T {
1720		return self.per_Sv.clone() * T::from(1e-06_f64);
1721	}
1722
1723	/// Returns a new inverse dose equivalent value from the given number of inverse microsieverts
1724	/// 
1725	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1726	///
1727	/// # Arguments
1728	/// * `per_uSv` - Any number-like type, representing a quantity of inverse microsieverts
1729	pub fn from_per_uSv(per_uSv: T) -> Self {
1730		InverseDoseEquivalent{per_Sv: per_uSv * T::from(1000000.0_f64)}
1731	}
1732
1733	/// Returns a copy of this inverse dose equivalent value in inverse nanosieverts
1734	/// 
1735	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1736	pub fn to_per_nSv(&self) -> T {
1737		return self.per_Sv.clone() * T::from(1e-09_f64);
1738	}
1739
1740	/// Returns a new inverse dose equivalent value from the given number of inverse nanosieverts
1741	/// 
1742	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1743	///
1744	/// # Arguments
1745	/// * `per_nSv` - Any number-like type, representing a quantity of inverse nanosieverts
1746	pub fn from_per_nSv(per_nSv: T) -> Self {
1747		InverseDoseEquivalent{per_Sv: per_nSv * T::from(1000000000.0_f64)}
1748	}
1749
1750	/// Returns a copy of this inverse dose equivalent value in inverse kilosieverts
1751	/// 
1752	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1753	pub fn to_per_kSv(&self) -> T {
1754		return self.per_Sv.clone() * T::from(1000.0_f64);
1755	}
1756
1757	/// Returns a new inverse dose equivalent value from the given number of inverse kilosieverts
1758	/// 
1759	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1760	///
1761	/// # Arguments
1762	/// * `per_kSv` - Any number-like type, representing a quantity of inverse kilosieverts
1763	pub fn from_per_kSv(per_kSv: T) -> Self {
1764		InverseDoseEquivalent{per_Sv: per_kSv * T::from(0.001_f64)}
1765	}
1766
1767	/// Returns a copy of this inverse dose equivalent value in inverse megasieverts
1768	/// 
1769	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1770	pub fn to_per_MSv(&self) -> T {
1771		return self.per_Sv.clone() * T::from(1000000.0_f64);
1772	}
1773
1774	/// Returns a new inverse dose equivalent value from the given number of inverse megasieverts
1775	/// 
1776	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1777	///
1778	/// # Arguments
1779	/// * `per_MSv` - Any number-like type, representing a quantity of inverse megasieverts
1780	pub fn from_per_MSv(per_MSv: T) -> Self {
1781		InverseDoseEquivalent{per_Sv: per_MSv * T::from(1e-06_f64)}
1782	}
1783
1784	/// Returns a copy of this inverse dose equivalent value in inverse gigasieverts
1785	/// 
1786	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1787	pub fn to_per_GSv(&self) -> T {
1788		return self.per_Sv.clone() * T::from(1000000000.0_f64);
1789	}
1790
1791	/// Returns a new inverse dose equivalent value from the given number of inverse gigasieverts
1792	/// 
1793	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1794	///
1795	/// # Arguments
1796	/// * `per_GSv` - Any number-like type, representing a quantity of inverse gigasieverts
1797	pub fn from_per_GSv(per_GSv: T) -> Self {
1798		InverseDoseEquivalent{per_Sv: per_GSv * T::from(1e-09_f64)}
1799	}
1800
1801	/// Returns a copy of this inverse dose equivalent value in inverse roentgen equivalent man
1802	/// 
1803	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1804	pub fn to_per_rem(&self) -> T {
1805		return self.per_Sv.clone() * T::from(0.01_f64);
1806	}
1807
1808	/// Returns a new inverse dose equivalent value from the given number of inverse roentgen equivalent man
1809	/// 
1810	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1811	///
1812	/// # Arguments
1813	/// * `per_rem` - Any number-like type, representing a quantity of inverse roentgen equivalent man
1814	pub fn from_per_rem(per_rem: T) -> Self {
1815		InverseDoseEquivalent{per_Sv: per_rem * T::from(100.0_f64)}
1816	}
1817
1818	/// Returns a copy of this inverse dose equivalent value in inverse milli-roentgen equivalents
1819	/// 
1820	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1821	pub fn to_per_mrem(&self) -> T {
1822		return self.per_Sv.clone() * T::from(1e-05_f64);
1823	}
1824
1825	/// Returns a new inverse dose equivalent value from the given number of inverse milli-roentgen equivalents
1826	/// 
1827	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1828	///
1829	/// # Arguments
1830	/// * `per_mrem` - Any number-like type, representing a quantity of inverse milli-roentgen equivalents
1831	pub fn from_per_mrem(per_mrem: T) -> Self {
1832		InverseDoseEquivalent{per_Sv: per_mrem * T::from(100000.0_f64)}
1833	}
1834
1835	/// Returns a copy of this inverse dose equivalent value in inverse kilo-roentgen equivalents
1836	/// 
1837	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1838	pub fn to_per_krem(&self) -> T {
1839		return self.per_Sv.clone() * T::from(10.0_f64);
1840	}
1841
1842	/// Returns a new inverse dose equivalent value from the given number of inverse kilo-roentgen equivalents
1843	/// 
1844	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
1845	///
1846	/// # Arguments
1847	/// * `per_krem` - Any number-like type, representing a quantity of inverse kilo-roentgen equivalents
1848	pub fn from_per_krem(per_krem: T) -> Self {
1849		InverseDoseEquivalent{per_Sv: per_krem * T::from(0.1_f64)}
1850	}
1851
1852}
1853
1854
1855/// Multiplying a unit value by a scalar value returns a unit value
1856#[cfg(feature="num-bigfloat")]
1857impl core::ops::Mul<InverseDoseEquivalent<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
1858	type Output = InverseDoseEquivalent<num_bigfloat::BigFloat>;
1859	fn mul(self, rhs: InverseDoseEquivalent<num_bigfloat::BigFloat>) -> Self::Output {
1860		InverseDoseEquivalent{per_Sv: self * rhs.per_Sv}
1861	}
1862}
1863/// Multiplying a unit value by a scalar value returns a unit value
1864#[cfg(feature="num-bigfloat")]
1865impl core::ops::Mul<InverseDoseEquivalent<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
1866	type Output = InverseDoseEquivalent<num_bigfloat::BigFloat>;
1867	fn mul(self, rhs: InverseDoseEquivalent<num_bigfloat::BigFloat>) -> Self::Output {
1868		InverseDoseEquivalent{per_Sv: self.clone() * rhs.per_Sv}
1869	}
1870}
1871/// Multiplying a unit value by a scalar value returns a unit value
1872#[cfg(feature="num-bigfloat")]
1873impl core::ops::Mul<&InverseDoseEquivalent<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
1874	type Output = InverseDoseEquivalent<num_bigfloat::BigFloat>;
1875	fn mul(self, rhs: &InverseDoseEquivalent<num_bigfloat::BigFloat>) -> Self::Output {
1876		InverseDoseEquivalent{per_Sv: self * rhs.per_Sv.clone()}
1877	}
1878}
1879/// Multiplying a unit value by a scalar value returns a unit value
1880#[cfg(feature="num-bigfloat")]
1881impl core::ops::Mul<&InverseDoseEquivalent<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
1882	type Output = InverseDoseEquivalent<num_bigfloat::BigFloat>;
1883	fn mul(self, rhs: &InverseDoseEquivalent<num_bigfloat::BigFloat>) -> Self::Output {
1884		InverseDoseEquivalent{per_Sv: self.clone() * rhs.per_Sv.clone()}
1885	}
1886}
1887
1888/// Multiplying a unit value by a scalar value returns a unit value
1889#[cfg(feature="num-complex")]
1890impl core::ops::Mul<InverseDoseEquivalent<num_complex::Complex32>> for num_complex::Complex32 {
1891	type Output = InverseDoseEquivalent<num_complex::Complex32>;
1892	fn mul(self, rhs: InverseDoseEquivalent<num_complex::Complex32>) -> Self::Output {
1893		InverseDoseEquivalent{per_Sv: self * rhs.per_Sv}
1894	}
1895}
1896/// Multiplying a unit value by a scalar value returns a unit value
1897#[cfg(feature="num-complex")]
1898impl core::ops::Mul<InverseDoseEquivalent<num_complex::Complex32>> for &num_complex::Complex32 {
1899	type Output = InverseDoseEquivalent<num_complex::Complex32>;
1900	fn mul(self, rhs: InverseDoseEquivalent<num_complex::Complex32>) -> Self::Output {
1901		InverseDoseEquivalent{per_Sv: self.clone() * rhs.per_Sv}
1902	}
1903}
1904/// Multiplying a unit value by a scalar value returns a unit value
1905#[cfg(feature="num-complex")]
1906impl core::ops::Mul<&InverseDoseEquivalent<num_complex::Complex32>> for num_complex::Complex32 {
1907	type Output = InverseDoseEquivalent<num_complex::Complex32>;
1908	fn mul(self, rhs: &InverseDoseEquivalent<num_complex::Complex32>) -> Self::Output {
1909		InverseDoseEquivalent{per_Sv: self * rhs.per_Sv.clone()}
1910	}
1911}
1912/// Multiplying a unit value by a scalar value returns a unit value
1913#[cfg(feature="num-complex")]
1914impl core::ops::Mul<&InverseDoseEquivalent<num_complex::Complex32>> for &num_complex::Complex32 {
1915	type Output = InverseDoseEquivalent<num_complex::Complex32>;
1916	fn mul(self, rhs: &InverseDoseEquivalent<num_complex::Complex32>) -> Self::Output {
1917		InverseDoseEquivalent{per_Sv: self.clone() * rhs.per_Sv.clone()}
1918	}
1919}
1920
1921/// Multiplying a unit value by a scalar value returns a unit value
1922#[cfg(feature="num-complex")]
1923impl core::ops::Mul<InverseDoseEquivalent<num_complex::Complex64>> for num_complex::Complex64 {
1924	type Output = InverseDoseEquivalent<num_complex::Complex64>;
1925	fn mul(self, rhs: InverseDoseEquivalent<num_complex::Complex64>) -> Self::Output {
1926		InverseDoseEquivalent{per_Sv: self * rhs.per_Sv}
1927	}
1928}
1929/// Multiplying a unit value by a scalar value returns a unit value
1930#[cfg(feature="num-complex")]
1931impl core::ops::Mul<InverseDoseEquivalent<num_complex::Complex64>> for &num_complex::Complex64 {
1932	type Output = InverseDoseEquivalent<num_complex::Complex64>;
1933	fn mul(self, rhs: InverseDoseEquivalent<num_complex::Complex64>) -> Self::Output {
1934		InverseDoseEquivalent{per_Sv: self.clone() * rhs.per_Sv}
1935	}
1936}
1937/// Multiplying a unit value by a scalar value returns a unit value
1938#[cfg(feature="num-complex")]
1939impl core::ops::Mul<&InverseDoseEquivalent<num_complex::Complex64>> for num_complex::Complex64 {
1940	type Output = InverseDoseEquivalent<num_complex::Complex64>;
1941	fn mul(self, rhs: &InverseDoseEquivalent<num_complex::Complex64>) -> Self::Output {
1942		InverseDoseEquivalent{per_Sv: self * rhs.per_Sv.clone()}
1943	}
1944}
1945/// Multiplying a unit value by a scalar value returns a unit value
1946#[cfg(feature="num-complex")]
1947impl core::ops::Mul<&InverseDoseEquivalent<num_complex::Complex64>> for &num_complex::Complex64 {
1948	type Output = InverseDoseEquivalent<num_complex::Complex64>;
1949	fn mul(self, rhs: &InverseDoseEquivalent<num_complex::Complex64>) -> Self::Output {
1950		InverseDoseEquivalent{per_Sv: self.clone() * rhs.per_Sv.clone()}
1951	}
1952}
1953
1954
1955
1956
1957// InverseDoseEquivalent * Distance -> InverseAcceleration
1958/// Multiplying a InverseDoseEquivalent by a Distance returns a value of type InverseAcceleration
1959impl<T> core::ops::Mul<Distance<T>> for InverseDoseEquivalent<T> where T: NumLike {
1960	type Output = InverseAcceleration<T>;
1961	fn mul(self, rhs: Distance<T>) -> Self::Output {
1962		InverseAcceleration{s2pm: self.per_Sv * rhs.m}
1963	}
1964}
1965/// Multiplying a InverseDoseEquivalent by a Distance returns a value of type InverseAcceleration
1966impl<T> core::ops::Mul<Distance<T>> for &InverseDoseEquivalent<T> where T: NumLike {
1967	type Output = InverseAcceleration<T>;
1968	fn mul(self, rhs: Distance<T>) -> Self::Output {
1969		InverseAcceleration{s2pm: self.per_Sv.clone() * rhs.m}
1970	}
1971}
1972/// Multiplying a InverseDoseEquivalent by a Distance returns a value of type InverseAcceleration
1973impl<T> core::ops::Mul<&Distance<T>> for InverseDoseEquivalent<T> where T: NumLike {
1974	type Output = InverseAcceleration<T>;
1975	fn mul(self, rhs: &Distance<T>) -> Self::Output {
1976		InverseAcceleration{s2pm: self.per_Sv * rhs.m.clone()}
1977	}
1978}
1979/// Multiplying a InverseDoseEquivalent by a Distance returns a value of type InverseAcceleration
1980impl<T> core::ops::Mul<&Distance<T>> for &InverseDoseEquivalent<T> where T: NumLike {
1981	type Output = InverseAcceleration<T>;
1982	fn mul(self, rhs: &Distance<T>) -> Self::Output {
1983		InverseAcceleration{s2pm: self.per_Sv.clone() * rhs.m.clone()}
1984	}
1985}
1986
1987// InverseDoseEquivalent / InverseDistance -> InverseAcceleration
1988/// Dividing a InverseDoseEquivalent by a InverseDistance returns a value of type InverseAcceleration
1989impl<T> core::ops::Div<InverseDistance<T>> for InverseDoseEquivalent<T> where T: NumLike {
1990	type Output = InverseAcceleration<T>;
1991	fn div(self, rhs: InverseDistance<T>) -> Self::Output {
1992		InverseAcceleration{s2pm: self.per_Sv / rhs.per_m}
1993	}
1994}
1995/// Dividing a InverseDoseEquivalent by a InverseDistance returns a value of type InverseAcceleration
1996impl<T> core::ops::Div<InverseDistance<T>> for &InverseDoseEquivalent<T> where T: NumLike {
1997	type Output = InverseAcceleration<T>;
1998	fn div(self, rhs: InverseDistance<T>) -> Self::Output {
1999		InverseAcceleration{s2pm: self.per_Sv.clone() / rhs.per_m}
2000	}
2001}
2002/// Dividing a InverseDoseEquivalent by a InverseDistance returns a value of type InverseAcceleration
2003impl<T> core::ops::Div<&InverseDistance<T>> for InverseDoseEquivalent<T> where T: NumLike {
2004	type Output = InverseAcceleration<T>;
2005	fn div(self, rhs: &InverseDistance<T>) -> Self::Output {
2006		InverseAcceleration{s2pm: self.per_Sv / rhs.per_m.clone()}
2007	}
2008}
2009/// Dividing a InverseDoseEquivalent by a InverseDistance returns a value of type InverseAcceleration
2010impl<T> core::ops::Div<&InverseDistance<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2011	type Output = InverseAcceleration<T>;
2012	fn div(self, rhs: &InverseDistance<T>) -> Self::Output {
2013		InverseAcceleration{s2pm: self.per_Sv.clone() / rhs.per_m.clone()}
2014	}
2015}
2016
2017// InverseDoseEquivalent * InverseMass -> InverseEnergy
2018/// Multiplying a InverseDoseEquivalent by a InverseMass returns a value of type InverseEnergy
2019impl<T> core::ops::Mul<InverseMass<T>> for InverseDoseEquivalent<T> where T: NumLike {
2020	type Output = InverseEnergy<T>;
2021	fn mul(self, rhs: InverseMass<T>) -> Self::Output {
2022		InverseEnergy{per_J: self.per_Sv * rhs.per_kg}
2023	}
2024}
2025/// Multiplying a InverseDoseEquivalent by a InverseMass returns a value of type InverseEnergy
2026impl<T> core::ops::Mul<InverseMass<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2027	type Output = InverseEnergy<T>;
2028	fn mul(self, rhs: InverseMass<T>) -> Self::Output {
2029		InverseEnergy{per_J: self.per_Sv.clone() * rhs.per_kg}
2030	}
2031}
2032/// Multiplying a InverseDoseEquivalent by a InverseMass returns a value of type InverseEnergy
2033impl<T> core::ops::Mul<&InverseMass<T>> for InverseDoseEquivalent<T> where T: NumLike {
2034	type Output = InverseEnergy<T>;
2035	fn mul(self, rhs: &InverseMass<T>) -> Self::Output {
2036		InverseEnergy{per_J: self.per_Sv * rhs.per_kg.clone()}
2037	}
2038}
2039/// Multiplying a InverseDoseEquivalent by a InverseMass returns a value of type InverseEnergy
2040impl<T> core::ops::Mul<&InverseMass<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2041	type Output = InverseEnergy<T>;
2042	fn mul(self, rhs: &InverseMass<T>) -> Self::Output {
2043		InverseEnergy{per_J: self.per_Sv.clone() * rhs.per_kg.clone()}
2044	}
2045}
2046
2047// InverseDoseEquivalent / InverseTemperature -> InverseSpecificHeatCapacity
2048/// Dividing a InverseDoseEquivalent by a InverseTemperature returns a value of type InverseSpecificHeatCapacity
2049impl<T> core::ops::Div<InverseTemperature<T>> for InverseDoseEquivalent<T> where T: NumLike {
2050	type Output = InverseSpecificHeatCapacity<T>;
2051	fn div(self, rhs: InverseTemperature<T>) -> Self::Output {
2052		InverseSpecificHeatCapacity{kgK_per_J: self.per_Sv / rhs.per_K}
2053	}
2054}
2055/// Dividing a InverseDoseEquivalent by a InverseTemperature returns a value of type InverseSpecificHeatCapacity
2056impl<T> core::ops::Div<InverseTemperature<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2057	type Output = InverseSpecificHeatCapacity<T>;
2058	fn div(self, rhs: InverseTemperature<T>) -> Self::Output {
2059		InverseSpecificHeatCapacity{kgK_per_J: self.per_Sv.clone() / rhs.per_K}
2060	}
2061}
2062/// Dividing a InverseDoseEquivalent by a InverseTemperature returns a value of type InverseSpecificHeatCapacity
2063impl<T> core::ops::Div<&InverseTemperature<T>> for InverseDoseEquivalent<T> where T: NumLike {
2064	type Output = InverseSpecificHeatCapacity<T>;
2065	fn div(self, rhs: &InverseTemperature<T>) -> Self::Output {
2066		InverseSpecificHeatCapacity{kgK_per_J: self.per_Sv / rhs.per_K.clone()}
2067	}
2068}
2069/// Dividing a InverseDoseEquivalent by a InverseTemperature returns a value of type InverseSpecificHeatCapacity
2070impl<T> core::ops::Div<&InverseTemperature<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2071	type Output = InverseSpecificHeatCapacity<T>;
2072	fn div(self, rhs: &InverseTemperature<T>) -> Self::Output {
2073		InverseSpecificHeatCapacity{kgK_per_J: self.per_Sv.clone() / rhs.per_K.clone()}
2074	}
2075}
2076
2077// InverseDoseEquivalent / Mass -> InverseEnergy
2078/// Dividing a InverseDoseEquivalent by a Mass returns a value of type InverseEnergy
2079impl<T> core::ops::Div<Mass<T>> for InverseDoseEquivalent<T> where T: NumLike {
2080	type Output = InverseEnergy<T>;
2081	fn div(self, rhs: Mass<T>) -> Self::Output {
2082		InverseEnergy{per_J: self.per_Sv / rhs.kg}
2083	}
2084}
2085/// Dividing a InverseDoseEquivalent by a Mass returns a value of type InverseEnergy
2086impl<T> core::ops::Div<Mass<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2087	type Output = InverseEnergy<T>;
2088	fn div(self, rhs: Mass<T>) -> Self::Output {
2089		InverseEnergy{per_J: self.per_Sv.clone() / rhs.kg}
2090	}
2091}
2092/// Dividing a InverseDoseEquivalent by a Mass returns a value of type InverseEnergy
2093impl<T> core::ops::Div<&Mass<T>> for InverseDoseEquivalent<T> where T: NumLike {
2094	type Output = InverseEnergy<T>;
2095	fn div(self, rhs: &Mass<T>) -> Self::Output {
2096		InverseEnergy{per_J: self.per_Sv / rhs.kg.clone()}
2097	}
2098}
2099/// Dividing a InverseDoseEquivalent by a Mass returns a value of type InverseEnergy
2100impl<T> core::ops::Div<&Mass<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2101	type Output = InverseEnergy<T>;
2102	fn div(self, rhs: &Mass<T>) -> Self::Output {
2103		InverseEnergy{per_J: self.per_Sv.clone() / rhs.kg.clone()}
2104	}
2105}
2106
2107// InverseDoseEquivalent * Temperature -> InverseSpecificHeatCapacity
2108/// Multiplying a InverseDoseEquivalent by a Temperature returns a value of type InverseSpecificHeatCapacity
2109impl<T> core::ops::Mul<Temperature<T>> for InverseDoseEquivalent<T> where T: NumLike {
2110	type Output = InverseSpecificHeatCapacity<T>;
2111	fn mul(self, rhs: Temperature<T>) -> Self::Output {
2112		InverseSpecificHeatCapacity{kgK_per_J: self.per_Sv * rhs.K}
2113	}
2114}
2115/// Multiplying a InverseDoseEquivalent by a Temperature returns a value of type InverseSpecificHeatCapacity
2116impl<T> core::ops::Mul<Temperature<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2117	type Output = InverseSpecificHeatCapacity<T>;
2118	fn mul(self, rhs: Temperature<T>) -> Self::Output {
2119		InverseSpecificHeatCapacity{kgK_per_J: self.per_Sv.clone() * rhs.K}
2120	}
2121}
2122/// Multiplying a InverseDoseEquivalent by a Temperature returns a value of type InverseSpecificHeatCapacity
2123impl<T> core::ops::Mul<&Temperature<T>> for InverseDoseEquivalent<T> where T: NumLike {
2124	type Output = InverseSpecificHeatCapacity<T>;
2125	fn mul(self, rhs: &Temperature<T>) -> Self::Output {
2126		InverseSpecificHeatCapacity{kgK_per_J: self.per_Sv * rhs.K.clone()}
2127	}
2128}
2129/// Multiplying a InverseDoseEquivalent by a Temperature returns a value of type InverseSpecificHeatCapacity
2130impl<T> core::ops::Mul<&Temperature<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2131	type Output = InverseSpecificHeatCapacity<T>;
2132	fn mul(self, rhs: &Temperature<T>) -> Self::Output {
2133		InverseSpecificHeatCapacity{kgK_per_J: self.per_Sv.clone() * rhs.K.clone()}
2134	}
2135}
2136
2137// InverseDoseEquivalent / InverseSpecificHeatCapacity -> InverseTemperature
2138/// Dividing a InverseDoseEquivalent by a InverseSpecificHeatCapacity returns a value of type InverseTemperature
2139impl<T> core::ops::Div<InverseSpecificHeatCapacity<T>> for InverseDoseEquivalent<T> where T: NumLike {
2140	type Output = InverseTemperature<T>;
2141	fn div(self, rhs: InverseSpecificHeatCapacity<T>) -> Self::Output {
2142		InverseTemperature{per_K: self.per_Sv / rhs.kgK_per_J}
2143	}
2144}
2145/// Dividing a InverseDoseEquivalent by a InverseSpecificHeatCapacity returns a value of type InverseTemperature
2146impl<T> core::ops::Div<InverseSpecificHeatCapacity<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2147	type Output = InverseTemperature<T>;
2148	fn div(self, rhs: InverseSpecificHeatCapacity<T>) -> Self::Output {
2149		InverseTemperature{per_K: self.per_Sv.clone() / rhs.kgK_per_J}
2150	}
2151}
2152/// Dividing a InverseDoseEquivalent by a InverseSpecificHeatCapacity returns a value of type InverseTemperature
2153impl<T> core::ops::Div<&InverseSpecificHeatCapacity<T>> for InverseDoseEquivalent<T> where T: NumLike {
2154	type Output = InverseTemperature<T>;
2155	fn div(self, rhs: &InverseSpecificHeatCapacity<T>) -> Self::Output {
2156		InverseTemperature{per_K: self.per_Sv / rhs.kgK_per_J.clone()}
2157	}
2158}
2159/// Dividing a InverseDoseEquivalent by a InverseSpecificHeatCapacity returns a value of type InverseTemperature
2160impl<T> core::ops::Div<&InverseSpecificHeatCapacity<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2161	type Output = InverseTemperature<T>;
2162	fn div(self, rhs: &InverseSpecificHeatCapacity<T>) -> Self::Output {
2163		InverseTemperature{per_K: self.per_Sv.clone() / rhs.kgK_per_J.clone()}
2164	}
2165}
2166
2167// InverseDoseEquivalent * SpecificHeatCapacity -> InverseTemperature
2168/// Multiplying a InverseDoseEquivalent by a SpecificHeatCapacity returns a value of type InverseTemperature
2169impl<T> core::ops::Mul<SpecificHeatCapacity<T>> for InverseDoseEquivalent<T> where T: NumLike {
2170	type Output = InverseTemperature<T>;
2171	fn mul(self, rhs: SpecificHeatCapacity<T>) -> Self::Output {
2172		InverseTemperature{per_K: self.per_Sv * rhs.J_per_kgK}
2173	}
2174}
2175/// Multiplying a InverseDoseEquivalent by a SpecificHeatCapacity returns a value of type InverseTemperature
2176impl<T> core::ops::Mul<SpecificHeatCapacity<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2177	type Output = InverseTemperature<T>;
2178	fn mul(self, rhs: SpecificHeatCapacity<T>) -> Self::Output {
2179		InverseTemperature{per_K: self.per_Sv.clone() * rhs.J_per_kgK}
2180	}
2181}
2182/// Multiplying a InverseDoseEquivalent by a SpecificHeatCapacity returns a value of type InverseTemperature
2183impl<T> core::ops::Mul<&SpecificHeatCapacity<T>> for InverseDoseEquivalent<T> where T: NumLike {
2184	type Output = InverseTemperature<T>;
2185	fn mul(self, rhs: &SpecificHeatCapacity<T>) -> Self::Output {
2186		InverseTemperature{per_K: self.per_Sv * rhs.J_per_kgK.clone()}
2187	}
2188}
2189/// Multiplying a InverseDoseEquivalent by a SpecificHeatCapacity returns a value of type InverseTemperature
2190impl<T> core::ops::Mul<&SpecificHeatCapacity<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2191	type Output = InverseTemperature<T>;
2192	fn mul(self, rhs: &SpecificHeatCapacity<T>) -> Self::Output {
2193		InverseTemperature{per_K: self.per_Sv.clone() * rhs.J_per_kgK.clone()}
2194	}
2195}
2196
2197// InverseDoseEquivalent * Acceleration -> InverseDistance
2198/// Multiplying a InverseDoseEquivalent by a Acceleration returns a value of type InverseDistance
2199impl<T> core::ops::Mul<Acceleration<T>> for InverseDoseEquivalent<T> where T: NumLike {
2200	type Output = InverseDistance<T>;
2201	fn mul(self, rhs: Acceleration<T>) -> Self::Output {
2202		InverseDistance{per_m: self.per_Sv * rhs.mps2}
2203	}
2204}
2205/// Multiplying a InverseDoseEquivalent by a Acceleration returns a value of type InverseDistance
2206impl<T> core::ops::Mul<Acceleration<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2207	type Output = InverseDistance<T>;
2208	fn mul(self, rhs: Acceleration<T>) -> Self::Output {
2209		InverseDistance{per_m: self.per_Sv.clone() * rhs.mps2}
2210	}
2211}
2212/// Multiplying a InverseDoseEquivalent by a Acceleration returns a value of type InverseDistance
2213impl<T> core::ops::Mul<&Acceleration<T>> for InverseDoseEquivalent<T> where T: NumLike {
2214	type Output = InverseDistance<T>;
2215	fn mul(self, rhs: &Acceleration<T>) -> Self::Output {
2216		InverseDistance{per_m: self.per_Sv * rhs.mps2.clone()}
2217	}
2218}
2219/// Multiplying a InverseDoseEquivalent by a Acceleration returns a value of type InverseDistance
2220impl<T> core::ops::Mul<&Acceleration<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2221	type Output = InverseDistance<T>;
2222	fn mul(self, rhs: &Acceleration<T>) -> Self::Output {
2223		InverseDistance{per_m: self.per_Sv.clone() * rhs.mps2.clone()}
2224	}
2225}
2226
2227// InverseDoseEquivalent / Density -> InversePressure
2228/// Dividing a InverseDoseEquivalent by a Density returns a value of type InversePressure
2229impl<T> core::ops::Div<Density<T>> for InverseDoseEquivalent<T> where T: NumLike {
2230	type Output = InversePressure<T>;
2231	fn div(self, rhs: Density<T>) -> Self::Output {
2232		InversePressure{per_Pa: self.per_Sv / rhs.kgpm3}
2233	}
2234}
2235/// Dividing a InverseDoseEquivalent by a Density returns a value of type InversePressure
2236impl<T> core::ops::Div<Density<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2237	type Output = InversePressure<T>;
2238	fn div(self, rhs: Density<T>) -> Self::Output {
2239		InversePressure{per_Pa: self.per_Sv.clone() / rhs.kgpm3}
2240	}
2241}
2242/// Dividing a InverseDoseEquivalent by a Density returns a value of type InversePressure
2243impl<T> core::ops::Div<&Density<T>> for InverseDoseEquivalent<T> where T: NumLike {
2244	type Output = InversePressure<T>;
2245	fn div(self, rhs: &Density<T>) -> Self::Output {
2246		InversePressure{per_Pa: self.per_Sv / rhs.kgpm3.clone()}
2247	}
2248}
2249/// Dividing a InverseDoseEquivalent by a Density returns a value of type InversePressure
2250impl<T> core::ops::Div<&Density<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2251	type Output = InversePressure<T>;
2252	fn div(self, rhs: &Density<T>) -> Self::Output {
2253		InversePressure{per_Pa: self.per_Sv.clone() / rhs.kgpm3.clone()}
2254	}
2255}
2256
2257// InverseDoseEquivalent * Energy -> Mass
2258/// Multiplying a InverseDoseEquivalent by a Energy returns a value of type Mass
2259impl<T> core::ops::Mul<Energy<T>> for InverseDoseEquivalent<T> where T: NumLike {
2260	type Output = Mass<T>;
2261	fn mul(self, rhs: Energy<T>) -> Self::Output {
2262		Mass{kg: self.per_Sv * rhs.J}
2263	}
2264}
2265/// Multiplying a InverseDoseEquivalent by a Energy returns a value of type Mass
2266impl<T> core::ops::Mul<Energy<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2267	type Output = Mass<T>;
2268	fn mul(self, rhs: Energy<T>) -> Self::Output {
2269		Mass{kg: self.per_Sv.clone() * rhs.J}
2270	}
2271}
2272/// Multiplying a InverseDoseEquivalent by a Energy returns a value of type Mass
2273impl<T> core::ops::Mul<&Energy<T>> for InverseDoseEquivalent<T> where T: NumLike {
2274	type Output = Mass<T>;
2275	fn mul(self, rhs: &Energy<T>) -> Self::Output {
2276		Mass{kg: self.per_Sv * rhs.J.clone()}
2277	}
2278}
2279/// Multiplying a InverseDoseEquivalent by a Energy returns a value of type Mass
2280impl<T> core::ops::Mul<&Energy<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2281	type Output = Mass<T>;
2282	fn mul(self, rhs: &Energy<T>) -> Self::Output {
2283		Mass{kg: self.per_Sv.clone() * rhs.J.clone()}
2284	}
2285}
2286
2287// InverseDoseEquivalent * Torque -> Mass
2288/// Multiplying a InverseDoseEquivalent by a Torque returns a value of type Mass
2289impl<T> core::ops::Mul<Torque<T>> for InverseDoseEquivalent<T> where T: NumLike {
2290	type Output = Mass<T>;
2291	fn mul(self, rhs: Torque<T>) -> Self::Output {
2292		Mass{kg: self.per_Sv * rhs.Nm}
2293	}
2294}
2295/// Multiplying a InverseDoseEquivalent by a Torque returns a value of type Mass
2296impl<T> core::ops::Mul<Torque<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2297	type Output = Mass<T>;
2298	fn mul(self, rhs: Torque<T>) -> Self::Output {
2299		Mass{kg: self.per_Sv.clone() * rhs.Nm}
2300	}
2301}
2302/// Multiplying a InverseDoseEquivalent by a Torque returns a value of type Mass
2303impl<T> core::ops::Mul<&Torque<T>> for InverseDoseEquivalent<T> where T: NumLike {
2304	type Output = Mass<T>;
2305	fn mul(self, rhs: &Torque<T>) -> Self::Output {
2306		Mass{kg: self.per_Sv * rhs.Nm.clone()}
2307	}
2308}
2309/// Multiplying a InverseDoseEquivalent by a Torque returns a value of type Mass
2310impl<T> core::ops::Mul<&Torque<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2311	type Output = Mass<T>;
2312	fn mul(self, rhs: &Torque<T>) -> Self::Output {
2313		Mass{kg: self.per_Sv.clone() * rhs.Nm.clone()}
2314	}
2315}
2316
2317// InverseDoseEquivalent / InverseAcceleration -> InverseDistance
2318/// Dividing a InverseDoseEquivalent by a InverseAcceleration returns a value of type InverseDistance
2319impl<T> core::ops::Div<InverseAcceleration<T>> for InverseDoseEquivalent<T> where T: NumLike {
2320	type Output = InverseDistance<T>;
2321	fn div(self, rhs: InverseAcceleration<T>) -> Self::Output {
2322		InverseDistance{per_m: self.per_Sv / rhs.s2pm}
2323	}
2324}
2325/// Dividing a InverseDoseEquivalent by a InverseAcceleration returns a value of type InverseDistance
2326impl<T> core::ops::Div<InverseAcceleration<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2327	type Output = InverseDistance<T>;
2328	fn div(self, rhs: InverseAcceleration<T>) -> Self::Output {
2329		InverseDistance{per_m: self.per_Sv.clone() / rhs.s2pm}
2330	}
2331}
2332/// Dividing a InverseDoseEquivalent by a InverseAcceleration returns a value of type InverseDistance
2333impl<T> core::ops::Div<&InverseAcceleration<T>> for InverseDoseEquivalent<T> where T: NumLike {
2334	type Output = InverseDistance<T>;
2335	fn div(self, rhs: &InverseAcceleration<T>) -> Self::Output {
2336		InverseDistance{per_m: self.per_Sv / rhs.s2pm.clone()}
2337	}
2338}
2339/// Dividing a InverseDoseEquivalent by a InverseAcceleration returns a value of type InverseDistance
2340impl<T> core::ops::Div<&InverseAcceleration<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2341	type Output = InverseDistance<T>;
2342	fn div(self, rhs: &InverseAcceleration<T>) -> Self::Output {
2343		InverseDistance{per_m: self.per_Sv.clone() / rhs.s2pm.clone()}
2344	}
2345}
2346
2347// InverseDoseEquivalent / InverseEnergy -> Mass
2348/// Dividing a InverseDoseEquivalent by a InverseEnergy returns a value of type Mass
2349impl<T> core::ops::Div<InverseEnergy<T>> for InverseDoseEquivalent<T> where T: NumLike {
2350	type Output = Mass<T>;
2351	fn div(self, rhs: InverseEnergy<T>) -> Self::Output {
2352		Mass{kg: self.per_Sv / rhs.per_J}
2353	}
2354}
2355/// Dividing a InverseDoseEquivalent by a InverseEnergy returns a value of type Mass
2356impl<T> core::ops::Div<InverseEnergy<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2357	type Output = Mass<T>;
2358	fn div(self, rhs: InverseEnergy<T>) -> Self::Output {
2359		Mass{kg: self.per_Sv.clone() / rhs.per_J}
2360	}
2361}
2362/// Dividing a InverseDoseEquivalent by a InverseEnergy returns a value of type Mass
2363impl<T> core::ops::Div<&InverseEnergy<T>> for InverseDoseEquivalent<T> where T: NumLike {
2364	type Output = Mass<T>;
2365	fn div(self, rhs: &InverseEnergy<T>) -> Self::Output {
2366		Mass{kg: self.per_Sv / rhs.per_J.clone()}
2367	}
2368}
2369/// Dividing a InverseDoseEquivalent by a InverseEnergy returns a value of type Mass
2370impl<T> core::ops::Div<&InverseEnergy<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2371	type Output = Mass<T>;
2372	fn div(self, rhs: &InverseEnergy<T>) -> Self::Output {
2373		Mass{kg: self.per_Sv.clone() / rhs.per_J.clone()}
2374	}
2375}
2376
2377// InverseDoseEquivalent / InverseTorque -> Mass
2378/// Dividing a InverseDoseEquivalent by a InverseTorque returns a value of type Mass
2379impl<T> core::ops::Div<InverseTorque<T>> for InverseDoseEquivalent<T> where T: NumLike {
2380	type Output = Mass<T>;
2381	fn div(self, rhs: InverseTorque<T>) -> Self::Output {
2382		Mass{kg: self.per_Sv / rhs.per_Nm}
2383	}
2384}
2385/// Dividing a InverseDoseEquivalent by a InverseTorque returns a value of type Mass
2386impl<T> core::ops::Div<InverseTorque<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2387	type Output = Mass<T>;
2388	fn div(self, rhs: InverseTorque<T>) -> Self::Output {
2389		Mass{kg: self.per_Sv.clone() / rhs.per_Nm}
2390	}
2391}
2392/// Dividing a InverseDoseEquivalent by a InverseTorque returns a value of type Mass
2393impl<T> core::ops::Div<&InverseTorque<T>> for InverseDoseEquivalent<T> where T: NumLike {
2394	type Output = Mass<T>;
2395	fn div(self, rhs: &InverseTorque<T>) -> Self::Output {
2396		Mass{kg: self.per_Sv / rhs.per_Nm.clone()}
2397	}
2398}
2399/// Dividing a InverseDoseEquivalent by a InverseTorque returns a value of type Mass
2400impl<T> core::ops::Div<&InverseTorque<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2401	type Output = Mass<T>;
2402	fn div(self, rhs: &InverseTorque<T>) -> Self::Output {
2403		Mass{kg: self.per_Sv.clone() / rhs.per_Nm.clone()}
2404	}
2405}
2406
2407// InverseDoseEquivalent / InversePressure -> Density
2408/// Dividing a InverseDoseEquivalent by a InversePressure returns a value of type Density
2409impl<T> core::ops::Div<InversePressure<T>> for InverseDoseEquivalent<T> where T: NumLike {
2410	type Output = Density<T>;
2411	fn div(self, rhs: InversePressure<T>) -> Self::Output {
2412		Density{kgpm3: self.per_Sv / rhs.per_Pa}
2413	}
2414}
2415/// Dividing a InverseDoseEquivalent by a InversePressure returns a value of type Density
2416impl<T> core::ops::Div<InversePressure<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2417	type Output = Density<T>;
2418	fn div(self, rhs: InversePressure<T>) -> Self::Output {
2419		Density{kgpm3: self.per_Sv.clone() / rhs.per_Pa}
2420	}
2421}
2422/// Dividing a InverseDoseEquivalent by a InversePressure returns a value of type Density
2423impl<T> core::ops::Div<&InversePressure<T>> for InverseDoseEquivalent<T> where T: NumLike {
2424	type Output = Density<T>;
2425	fn div(self, rhs: &InversePressure<T>) -> Self::Output {
2426		Density{kgpm3: self.per_Sv / rhs.per_Pa.clone()}
2427	}
2428}
2429/// Dividing a InverseDoseEquivalent by a InversePressure returns a value of type Density
2430impl<T> core::ops::Div<&InversePressure<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2431	type Output = Density<T>;
2432	fn div(self, rhs: &InversePressure<T>) -> Self::Output {
2433		Density{kgpm3: self.per_Sv.clone() / rhs.per_Pa.clone()}
2434	}
2435}
2436
2437// InverseDoseEquivalent * Pressure -> Density
2438/// Multiplying a InverseDoseEquivalent by a Pressure returns a value of type Density
2439impl<T> core::ops::Mul<Pressure<T>> for InverseDoseEquivalent<T> where T: NumLike {
2440	type Output = Density<T>;
2441	fn mul(self, rhs: Pressure<T>) -> Self::Output {
2442		Density{kgpm3: self.per_Sv * rhs.Pa}
2443	}
2444}
2445/// Multiplying a InverseDoseEquivalent by a Pressure returns a value of type Density
2446impl<T> core::ops::Mul<Pressure<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2447	type Output = Density<T>;
2448	fn mul(self, rhs: Pressure<T>) -> Self::Output {
2449		Density{kgpm3: self.per_Sv.clone() * rhs.Pa}
2450	}
2451}
2452/// Multiplying a InverseDoseEquivalent by a Pressure returns a value of type Density
2453impl<T> core::ops::Mul<&Pressure<T>> for InverseDoseEquivalent<T> where T: NumLike {
2454	type Output = Density<T>;
2455	fn mul(self, rhs: &Pressure<T>) -> Self::Output {
2456		Density{kgpm3: self.per_Sv * rhs.Pa.clone()}
2457	}
2458}
2459/// Multiplying a InverseDoseEquivalent by a Pressure returns a value of type Density
2460impl<T> core::ops::Mul<&Pressure<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2461	type Output = Density<T>;
2462	fn mul(self, rhs: &Pressure<T>) -> Self::Output {
2463		Density{kgpm3: self.per_Sv.clone() * rhs.Pa.clone()}
2464	}
2465}
2466
2467// InverseDoseEquivalent / TimePerDistance -> TimePerDistance
2468/// Dividing a InverseDoseEquivalent by a TimePerDistance returns a value of type TimePerDistance
2469impl<T> core::ops::Div<TimePerDistance<T>> for InverseDoseEquivalent<T> where T: NumLike {
2470	type Output = TimePerDistance<T>;
2471	fn div(self, rhs: TimePerDistance<T>) -> Self::Output {
2472		TimePerDistance{spm: self.per_Sv / rhs.spm}
2473	}
2474}
2475/// Dividing a InverseDoseEquivalent by a TimePerDistance returns a value of type TimePerDistance
2476impl<T> core::ops::Div<TimePerDistance<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2477	type Output = TimePerDistance<T>;
2478	fn div(self, rhs: TimePerDistance<T>) -> Self::Output {
2479		TimePerDistance{spm: self.per_Sv.clone() / rhs.spm}
2480	}
2481}
2482/// Dividing a InverseDoseEquivalent by a TimePerDistance returns a value of type TimePerDistance
2483impl<T> core::ops::Div<&TimePerDistance<T>> for InverseDoseEquivalent<T> where T: NumLike {
2484	type Output = TimePerDistance<T>;
2485	fn div(self, rhs: &TimePerDistance<T>) -> Self::Output {
2486		TimePerDistance{spm: self.per_Sv / rhs.spm.clone()}
2487	}
2488}
2489/// Dividing a InverseDoseEquivalent by a TimePerDistance returns a value of type TimePerDistance
2490impl<T> core::ops::Div<&TimePerDistance<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2491	type Output = TimePerDistance<T>;
2492	fn div(self, rhs: &TimePerDistance<T>) -> Self::Output {
2493		TimePerDistance{spm: self.per_Sv.clone() / rhs.spm.clone()}
2494	}
2495}
2496
2497// InverseDoseEquivalent * Velocity -> TimePerDistance
2498/// Multiplying a InverseDoseEquivalent by a Velocity returns a value of type TimePerDistance
2499impl<T> core::ops::Mul<Velocity<T>> for InverseDoseEquivalent<T> where T: NumLike {
2500	type Output = TimePerDistance<T>;
2501	fn mul(self, rhs: Velocity<T>) -> Self::Output {
2502		TimePerDistance{spm: self.per_Sv * rhs.mps}
2503	}
2504}
2505/// Multiplying a InverseDoseEquivalent by a Velocity returns a value of type TimePerDistance
2506impl<T> core::ops::Mul<Velocity<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2507	type Output = TimePerDistance<T>;
2508	fn mul(self, rhs: Velocity<T>) -> Self::Output {
2509		TimePerDistance{spm: self.per_Sv.clone() * rhs.mps}
2510	}
2511}
2512/// Multiplying a InverseDoseEquivalent by a Velocity returns a value of type TimePerDistance
2513impl<T> core::ops::Mul<&Velocity<T>> for InverseDoseEquivalent<T> where T: NumLike {
2514	type Output = TimePerDistance<T>;
2515	fn mul(self, rhs: &Velocity<T>) -> Self::Output {
2516		TimePerDistance{spm: self.per_Sv * rhs.mps.clone()}
2517	}
2518}
2519/// Multiplying a InverseDoseEquivalent by a Velocity returns a value of type TimePerDistance
2520impl<T> core::ops::Mul<&Velocity<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2521	type Output = TimePerDistance<T>;
2522	fn mul(self, rhs: &Velocity<T>) -> Self::Output {
2523		TimePerDistance{spm: self.per_Sv.clone() * rhs.mps.clone()}
2524	}
2525}
2526
2527// InverseDoseEquivalent * VolumePerMass -> InversePressure
2528/// Multiplying a InverseDoseEquivalent by a VolumePerMass returns a value of type InversePressure
2529impl<T> core::ops::Mul<VolumePerMass<T>> for InverseDoseEquivalent<T> where T: NumLike {
2530	type Output = InversePressure<T>;
2531	fn mul(self, rhs: VolumePerMass<T>) -> Self::Output {
2532		InversePressure{per_Pa: self.per_Sv * rhs.m3_per_kg}
2533	}
2534}
2535/// Multiplying a InverseDoseEquivalent by a VolumePerMass returns a value of type InversePressure
2536impl<T> core::ops::Mul<VolumePerMass<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2537	type Output = InversePressure<T>;
2538	fn mul(self, rhs: VolumePerMass<T>) -> Self::Output {
2539		InversePressure{per_Pa: self.per_Sv.clone() * rhs.m3_per_kg}
2540	}
2541}
2542/// Multiplying a InverseDoseEquivalent by a VolumePerMass returns a value of type InversePressure
2543impl<T> core::ops::Mul<&VolumePerMass<T>> for InverseDoseEquivalent<T> where T: NumLike {
2544	type Output = InversePressure<T>;
2545	fn mul(self, rhs: &VolumePerMass<T>) -> Self::Output {
2546		InversePressure{per_Pa: self.per_Sv * rhs.m3_per_kg.clone()}
2547	}
2548}
2549/// Multiplying a InverseDoseEquivalent by a VolumePerMass returns a value of type InversePressure
2550impl<T> core::ops::Mul<&VolumePerMass<T>> for &InverseDoseEquivalent<T> where T: NumLike {
2551	type Output = InversePressure<T>;
2552	fn mul(self, rhs: &VolumePerMass<T>) -> Self::Output {
2553		InversePressure{per_Pa: self.per_Sv.clone() * rhs.m3_per_kg.clone()}
2554	}
2555}
2556
2557/// The radioactivity unit type, defined as becquerels in SI units
2558#[derive(UnitStruct, Debug, Clone)]
2559#[cfg_attr(feature="serde", derive(Serialize, Deserialize))]
2560pub struct Radioactivity<T: NumLike>{
2561	/// The value of this Radioactivity in becquerels
2562	pub Bq: T
2563}
2564
2565impl<T> Radioactivity<T> where T: NumLike {
2566
2567	/// Returns the standard unit name of radioactivity: "becquerels"
2568	pub fn unit_name() -> &'static str { "becquerels" }
2569	
2570	/// Returns the abbreviated name or symbol of radioactivity: "Bq" for becquerels
2571	pub fn unit_symbol() -> &'static str { "Bq" }
2572	
2573	/// Returns a new radioactivity value from the given number of becquerels
2574	///
2575	/// # Arguments
2576	/// * `Bq` - Any number-like type, representing a quantity of becquerels
2577	pub fn from_Bq(Bq: T) -> Self { Radioactivity{Bq: Bq} }
2578	
2579	/// Returns a copy of this radioactivity value in becquerels
2580	pub fn to_Bq(&self) -> T { self.Bq.clone() }
2581
2582	/// Returns a new radioactivity value from the given number of becquerels
2583	///
2584	/// # Arguments
2585	/// * `becquerels` - Any number-like type, representing a quantity of becquerels
2586	pub fn from_becquerels(becquerels: T) -> Self { Radioactivity{Bq: becquerels} }
2587	
2588	/// Returns a copy of this radioactivity value in becquerels
2589	pub fn to_becquerels(&self) -> T { self.Bq.clone() }
2590
2591}
2592
2593impl<T> fmt::Display for Radioactivity<T> where T: NumLike {
2594	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2595		write!(f, "{} {}", &self.Bq, Self::unit_symbol())
2596	}
2597}
2598
2599impl<T> Radioactivity<T> where T: NumLike+From<f64> {
2600	
2601	/// Returns a copy of this radioactivity value in millibecquerels
2602	/// 
2603	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2604	pub fn to_mBq(&self) -> T {
2605		return self.Bq.clone() * T::from(1000.0_f64);
2606	}
2607
2608	/// Returns a new radioactivity value from the given number of millibecquerels
2609	/// 
2610	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2611	///
2612	/// # Arguments
2613	/// * `mBq` - Any number-like type, representing a quantity of millibecquerels
2614	pub fn from_mBq(mBq: T) -> Self {
2615		Radioactivity{Bq: mBq * T::from(0.001_f64)}
2616	}
2617
2618	/// Returns a copy of this radioactivity value in microbecquerels
2619	/// 
2620	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2621	pub fn to_uBq(&self) -> T {
2622		return self.Bq.clone() * T::from(1000000.0_f64);
2623	}
2624
2625	/// Returns a new radioactivity value from the given number of microbecquerels
2626	/// 
2627	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2628	///
2629	/// # Arguments
2630	/// * `uBq` - Any number-like type, representing a quantity of microbecquerels
2631	pub fn from_uBq(uBq: T) -> Self {
2632		Radioactivity{Bq: uBq * T::from(1e-06_f64)}
2633	}
2634
2635	/// Returns a copy of this radioactivity value in nanobecquerels
2636	/// 
2637	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2638	pub fn to_nBq(&self) -> T {
2639		return self.Bq.clone() * T::from(1000000000.0_f64);
2640	}
2641
2642	/// Returns a new radioactivity value from the given number of nanobecquerels
2643	/// 
2644	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2645	///
2646	/// # Arguments
2647	/// * `nBq` - Any number-like type, representing a quantity of nanobecquerels
2648	pub fn from_nBq(nBq: T) -> Self {
2649		Radioactivity{Bq: nBq * T::from(1e-09_f64)}
2650	}
2651
2652	/// Returns a copy of this radioactivity value in kilobecquerels
2653	/// 
2654	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2655	pub fn to_kBq(&self) -> T {
2656		return self.Bq.clone() * T::from(0.001_f64);
2657	}
2658
2659	/// Returns a new radioactivity value from the given number of kilobecquerels
2660	/// 
2661	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2662	///
2663	/// # Arguments
2664	/// * `kBq` - Any number-like type, representing a quantity of kilobecquerels
2665	pub fn from_kBq(kBq: T) -> Self {
2666		Radioactivity{Bq: kBq * T::from(1000.0_f64)}
2667	}
2668
2669	/// Returns a copy of this radioactivity value in megabecquerels
2670	/// 
2671	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2672	pub fn to_MBq(&self) -> T {
2673		return self.Bq.clone() * T::from(1e-06_f64);
2674	}
2675
2676	/// Returns a new radioactivity value from the given number of megabecquerels
2677	/// 
2678	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2679	///
2680	/// # Arguments
2681	/// * `MBq` - Any number-like type, representing a quantity of megabecquerels
2682	pub fn from_MBq(MBq: T) -> Self {
2683		Radioactivity{Bq: MBq * T::from(1000000.0_f64)}
2684	}
2685
2686	/// Returns a copy of this radioactivity value in gigabecquerels
2687	/// 
2688	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2689	pub fn to_GBq(&self) -> T {
2690		return self.Bq.clone() * T::from(1e-09_f64);
2691	}
2692
2693	/// Returns a new radioactivity value from the given number of gigabecquerels
2694	/// 
2695	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2696	///
2697	/// # Arguments
2698	/// * `GBq` - Any number-like type, representing a quantity of gigabecquerels
2699	pub fn from_GBq(GBq: T) -> Self {
2700		Radioactivity{Bq: GBq * T::from(1000000000.0_f64)}
2701	}
2702
2703	/// Returns a copy of this radioactivity value in curies
2704	/// 
2705	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2706	pub fn to_Ci(&self) -> T {
2707		return self.Bq.clone() * T::from(2.7027027027027e-11_f64);
2708	}
2709
2710	/// Returns a new radioactivity value from the given number of curies
2711	/// 
2712	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2713	///
2714	/// # Arguments
2715	/// * `Ci` - Any number-like type, representing a quantity of curies
2716	pub fn from_Ci(Ci: T) -> Self {
2717		Radioactivity{Bq: Ci * T::from(37000000000.0_f64)}
2718	}
2719
2720	/// Returns a copy of this radioactivity value in millicuries
2721	/// 
2722	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2723	pub fn to_mCi(&self) -> T {
2724		return self.Bq.clone() * T::from(2.7027027027027e-08_f64);
2725	}
2726
2727	/// Returns a new radioactivity value from the given number of millicuries
2728	/// 
2729	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2730	///
2731	/// # Arguments
2732	/// * `mCi` - Any number-like type, representing a quantity of millicuries
2733	pub fn from_mCi(mCi: T) -> Self {
2734		Radioactivity{Bq: mCi * T::from(37000000.0_f64)}
2735	}
2736
2737	/// Returns a copy of this radioactivity value in microcuries
2738	/// 
2739	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2740	pub fn to_uCi(&self) -> T {
2741		return self.Bq.clone() * T::from(2.7027027027027e-05_f64);
2742	}
2743
2744	/// Returns a new radioactivity value from the given number of microcuries
2745	/// 
2746	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2747	///
2748	/// # Arguments
2749	/// * `uCi` - Any number-like type, representing a quantity of microcuries
2750	pub fn from_uCi(uCi: T) -> Self {
2751		Radioactivity{Bq: uCi * T::from(37000.0_f64)}
2752	}
2753
2754	/// Returns a copy of this radioactivity value in nanocuries
2755	/// 
2756	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2757	pub fn to_nCi(&self) -> T {
2758		return self.Bq.clone() * T::from(0.027027027027027_f64);
2759	}
2760
2761	/// Returns a new radioactivity value from the given number of nanocuries
2762	/// 
2763	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2764	///
2765	/// # Arguments
2766	/// * `nCi` - Any number-like type, representing a quantity of nanocuries
2767	pub fn from_nCi(nCi: T) -> Self {
2768		Radioactivity{Bq: nCi * T::from(37.0_f64)}
2769	}
2770
2771	/// Returns a copy of this radioactivity value in picocuries
2772	/// 
2773	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2774	pub fn to_pCi(&self) -> T {
2775		return self.Bq.clone() * T::from(27.027027027027_f64);
2776	}
2777
2778	/// Returns a new radioactivity value from the given number of picocuries
2779	/// 
2780	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2781	///
2782	/// # Arguments
2783	/// * `pCi` - Any number-like type, representing a quantity of picocuries
2784	pub fn from_pCi(pCi: T) -> Self {
2785		Radioactivity{Bq: pCi * T::from(0.037_f64)}
2786	}
2787
2788	/// Returns a copy of this radioactivity value in rutherfords
2789	/// 
2790	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2791	pub fn to_Rd(&self) -> T {
2792		return self.Bq.clone() * T::from(1e-06_f64);
2793	}
2794
2795	/// Returns a new radioactivity value from the given number of rutherfords
2796	/// 
2797	/// *Note: This method is not available for `f32` and other number types lacking the `From<f64>` trait*
2798	///
2799	/// # Arguments
2800	/// * `Rd` - Any number-like type, representing a quantity of rutherfords
2801	pub fn from_Rd(Rd: T) -> Self {
2802		Radioactivity{Bq: Rd * T::from(1000000.0_f64)}
2803	}
2804
2805}
2806
2807
2808/// Multiplying a unit value by a scalar value returns a unit value
2809#[cfg(feature="num-bigfloat")]
2810impl core::ops::Mul<Radioactivity<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
2811	type Output = Radioactivity<num_bigfloat::BigFloat>;
2812	fn mul(self, rhs: Radioactivity<num_bigfloat::BigFloat>) -> Self::Output {
2813		Radioactivity{Bq: self * rhs.Bq}
2814	}
2815}
2816/// Multiplying a unit value by a scalar value returns a unit value
2817#[cfg(feature="num-bigfloat")]
2818impl core::ops::Mul<Radioactivity<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
2819	type Output = Radioactivity<num_bigfloat::BigFloat>;
2820	fn mul(self, rhs: Radioactivity<num_bigfloat::BigFloat>) -> Self::Output {
2821		Radioactivity{Bq: self.clone() * rhs.Bq}
2822	}
2823}
2824/// Multiplying a unit value by a scalar value returns a unit value
2825#[cfg(feature="num-bigfloat")]
2826impl core::ops::Mul<&Radioactivity<num_bigfloat::BigFloat>> for num_bigfloat::BigFloat {
2827	type Output = Radioactivity<num_bigfloat::BigFloat>;
2828	fn mul(self, rhs: &Radioactivity<num_bigfloat::BigFloat>) -> Self::Output {
2829		Radioactivity{Bq: self * rhs.Bq.clone()}
2830	}
2831}
2832/// Multiplying a unit value by a scalar value returns a unit value
2833#[cfg(feature="num-bigfloat")]
2834impl core::ops::Mul<&Radioactivity<num_bigfloat::BigFloat>> for &num_bigfloat::BigFloat {
2835	type Output = Radioactivity<num_bigfloat::BigFloat>;
2836	fn mul(self, rhs: &Radioactivity<num_bigfloat::BigFloat>) -> Self::Output {
2837		Radioactivity{Bq: self.clone() * rhs.Bq.clone()}
2838	}
2839}
2840
2841/// Multiplying a unit value by a scalar value returns a unit value
2842#[cfg(feature="num-complex")]
2843impl core::ops::Mul<Radioactivity<num_complex::Complex32>> for num_complex::Complex32 {
2844	type Output = Radioactivity<num_complex::Complex32>;
2845	fn mul(self, rhs: Radioactivity<num_complex::Complex32>) -> Self::Output {
2846		Radioactivity{Bq: self * rhs.Bq}
2847	}
2848}
2849/// Multiplying a unit value by a scalar value returns a unit value
2850#[cfg(feature="num-complex")]
2851impl core::ops::Mul<Radioactivity<num_complex::Complex32>> for &num_complex::Complex32 {
2852	type Output = Radioactivity<num_complex::Complex32>;
2853	fn mul(self, rhs: Radioactivity<num_complex::Complex32>) -> Self::Output {
2854		Radioactivity{Bq: self.clone() * rhs.Bq}
2855	}
2856}
2857/// Multiplying a unit value by a scalar value returns a unit value
2858#[cfg(feature="num-complex")]
2859impl core::ops::Mul<&Radioactivity<num_complex::Complex32>> for num_complex::Complex32 {
2860	type Output = Radioactivity<num_complex::Complex32>;
2861	fn mul(self, rhs: &Radioactivity<num_complex::Complex32>) -> Self::Output {
2862		Radioactivity{Bq: self * rhs.Bq.clone()}
2863	}
2864}
2865/// Multiplying a unit value by a scalar value returns a unit value
2866#[cfg(feature="num-complex")]
2867impl core::ops::Mul<&Radioactivity<num_complex::Complex32>> for &num_complex::Complex32 {
2868	type Output = Radioactivity<num_complex::Complex32>;
2869	fn mul(self, rhs: &Radioactivity<num_complex::Complex32>) -> Self::Output {
2870		Radioactivity{Bq: self.clone() * rhs.Bq.clone()}
2871	}
2872}
2873
2874/// Multiplying a unit value by a scalar value returns a unit value
2875#[cfg(feature="num-complex")]
2876impl core::ops::Mul<Radioactivity<num_complex::Complex64>> for num_complex::Complex64 {
2877	type Output = Radioactivity<num_complex::Complex64>;
2878	fn mul(self, rhs: Radioactivity<num_complex::Complex64>) -> Self::Output {
2879		Radioactivity{Bq: self * rhs.Bq}
2880	}
2881}
2882/// Multiplying a unit value by a scalar value returns a unit value
2883#[cfg(feature="num-complex")]
2884impl core::ops::Mul<Radioactivity<num_complex::Complex64>> for &num_complex::Complex64 {
2885	type Output = Radioactivity<num_complex::Complex64>;
2886	fn mul(self, rhs: Radioactivity<num_complex::Complex64>) -> Self::Output {
2887		Radioactivity{Bq: self.clone() * rhs.Bq}
2888	}
2889}
2890/// Multiplying a unit value by a scalar value returns a unit value
2891#[cfg(feature="num-complex")]
2892impl core::ops::Mul<&Radioactivity<num_complex::Complex64>> for num_complex::Complex64 {
2893	type Output = Radioactivity<num_complex::Complex64>;
2894	fn mul(self, rhs: &Radioactivity<num_complex::Complex64>) -> Self::Output {
2895		Radioactivity{Bq: self * rhs.Bq.clone()}
2896	}
2897}
2898/// Multiplying a unit value by a scalar value returns a unit value
2899#[cfg(feature="num-complex")]
2900impl core::ops::Mul<&Radioactivity<num_complex::Complex64>> for &num_complex::Complex64 {
2901	type Output = Radioactivity<num_complex::Complex64>;
2902	fn mul(self, rhs: &Radioactivity<num_complex::Complex64>) -> Self::Output {
2903		Radioactivity{Bq: self.clone() * rhs.Bq.clone()}
2904	}
2905}
2906
2907
2908
2909/// Converts a Radioactivity into the equivalent [uom](https://crates.io/crates/uom) type [Radioactivity](https://docs.rs/uom/0.34.0/uom/si/f32/type.Radioactivity.html)
2910#[cfg(feature = "uom")]
2911impl<T> Into<uom::si::f32::Radioactivity> for Radioactivity<T> where T: NumLike+Into<f32> {
2912	fn into(self) -> uom::si::f32::Radioactivity {
2913		uom::si::f32::Radioactivity::new::<uom::si::radioactivity::becquerel>(self.Bq.into())
2914	}
2915}
2916
2917/// Creates a Radioactivity from the equivalent [uom](https://crates.io/crates/uom) type [Radioactivity](https://docs.rs/uom/0.34.0/uom/si/f32/type.Radioactivity.html)
2918#[cfg(feature = "uom")]
2919impl<T> From<uom::si::f32::Radioactivity> for Radioactivity<T> where T: NumLike+From<f32> {
2920	fn from(src: uom::si::f32::Radioactivity) -> Self {
2921		Radioactivity{Bq: T::from(src.value)}
2922	}
2923}
2924
2925/// Converts a Radioactivity into the equivalent [uom](https://crates.io/crates/uom) type [Radioactivity](https://docs.rs/uom/0.34.0/uom/si/f64/type.Radioactivity.html)
2926#[cfg(feature = "uom")]
2927impl<T> Into<uom::si::f64::Radioactivity> for Radioactivity<T> where T: NumLike+Into<f64> {
2928	fn into(self) -> uom::si::f64::Radioactivity {
2929		uom::si::f64::Radioactivity::new::<uom::si::radioactivity::becquerel>(self.Bq.into())
2930	}
2931}
2932
2933/// Creates a Radioactivity from the equivalent [uom](https://crates.io/crates/uom) type [Radioactivity](https://docs.rs/uom/0.34.0/uom/si/f64/type.Radioactivity.html)
2934#[cfg(feature = "uom")]
2935impl<T> From<uom::si::f64::Radioactivity> for Radioactivity<T> where T: NumLike+From<f64> {
2936	fn from(src: uom::si::f64::Radioactivity) -> Self {
2937		Radioactivity{Bq: T::from(src.value)}
2938	}
2939}
2940
2941
2942// 1/Radioactivity -> Time
2943/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
2944impl<T> core::ops::Div<Radioactivity<T>> for f64 where T: NumLike+From<f64> {
2945	type Output = Time<T>;
2946	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
2947		Time{s: T::from(self) / rhs.Bq}
2948	}
2949}
2950/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
2951impl<T> core::ops::Div<Radioactivity<T>> for &f64 where T: NumLike+From<f64> {
2952	type Output = Time<T>;
2953	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
2954		Time{s: T::from(self.clone()) / rhs.Bq}
2955	}
2956}
2957/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
2958impl<T> core::ops::Div<&Radioactivity<T>> for f64 where T: NumLike+From<f64> {
2959	type Output = Time<T>;
2960	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
2961		Time{s: T::from(self) / rhs.Bq.clone()}
2962	}
2963}
2964/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
2965impl<T> core::ops::Div<&Radioactivity<T>> for &f64 where T: NumLike+From<f64> {
2966	type Output = Time<T>;
2967	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
2968		Time{s: T::from(self.clone()) / rhs.Bq.clone()}
2969	}
2970}
2971
2972// 1/Radioactivity -> Time
2973/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
2974impl<T> core::ops::Div<Radioactivity<T>> for f32 where T: NumLike+From<f32> {
2975	type Output = Time<T>;
2976	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
2977		Time{s: T::from(self) / rhs.Bq}
2978	}
2979}
2980/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
2981impl<T> core::ops::Div<Radioactivity<T>> for &f32 where T: NumLike+From<f32> {
2982	type Output = Time<T>;
2983	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
2984		Time{s: T::from(self.clone()) / rhs.Bq}
2985	}
2986}
2987/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
2988impl<T> core::ops::Div<&Radioactivity<T>> for f32 where T: NumLike+From<f32> {
2989	type Output = Time<T>;
2990	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
2991		Time{s: T::from(self) / rhs.Bq.clone()}
2992	}
2993}
2994/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
2995impl<T> core::ops::Div<&Radioactivity<T>> for &f32 where T: NumLike+From<f32> {
2996	type Output = Time<T>;
2997	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
2998		Time{s: T::from(self.clone()) / rhs.Bq.clone()}
2999	}
3000}
3001
3002// 1/Radioactivity -> Time
3003/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3004impl<T> core::ops::Div<Radioactivity<T>> for i64 where T: NumLike+From<i64> {
3005	type Output = Time<T>;
3006	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3007		Time{s: T::from(self) / rhs.Bq}
3008	}
3009}
3010/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3011impl<T> core::ops::Div<Radioactivity<T>> for &i64 where T: NumLike+From<i64> {
3012	type Output = Time<T>;
3013	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3014		Time{s: T::from(self.clone()) / rhs.Bq}
3015	}
3016}
3017/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3018impl<T> core::ops::Div<&Radioactivity<T>> for i64 where T: NumLike+From<i64> {
3019	type Output = Time<T>;
3020	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3021		Time{s: T::from(self) / rhs.Bq.clone()}
3022	}
3023}
3024/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3025impl<T> core::ops::Div<&Radioactivity<T>> for &i64 where T: NumLike+From<i64> {
3026	type Output = Time<T>;
3027	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3028		Time{s: T::from(self.clone()) / rhs.Bq.clone()}
3029	}
3030}
3031
3032// 1/Radioactivity -> Time
3033/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3034impl<T> core::ops::Div<Radioactivity<T>> for i32 where T: NumLike+From<i32> {
3035	type Output = Time<T>;
3036	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3037		Time{s: T::from(self) / rhs.Bq}
3038	}
3039}
3040/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3041impl<T> core::ops::Div<Radioactivity<T>> for &i32 where T: NumLike+From<i32> {
3042	type Output = Time<T>;
3043	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3044		Time{s: T::from(self.clone()) / rhs.Bq}
3045	}
3046}
3047/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3048impl<T> core::ops::Div<&Radioactivity<T>> for i32 where T: NumLike+From<i32> {
3049	type Output = Time<T>;
3050	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3051		Time{s: T::from(self) / rhs.Bq.clone()}
3052	}
3053}
3054/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3055impl<T> core::ops::Div<&Radioactivity<T>> for &i32 where T: NumLike+From<i32> {
3056	type Output = Time<T>;
3057	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3058		Time{s: T::from(self.clone()) / rhs.Bq.clone()}
3059	}
3060}
3061
3062// 1/Radioactivity -> Time
3063/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3064#[cfg(feature="num-bigfloat")]
3065impl<T> core::ops::Div<Radioactivity<T>> for num_bigfloat::BigFloat where T: NumLike+From<num_bigfloat::BigFloat> {
3066	type Output = Time<T>;
3067	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3068		Time{s: T::from(self) / rhs.Bq}
3069	}
3070}
3071/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3072#[cfg(feature="num-bigfloat")]
3073impl<T> core::ops::Div<Radioactivity<T>> for &num_bigfloat::BigFloat where T: NumLike+From<num_bigfloat::BigFloat> {
3074	type Output = Time<T>;
3075	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3076		Time{s: T::from(self.clone()) / rhs.Bq}
3077	}
3078}
3079/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3080#[cfg(feature="num-bigfloat")]
3081impl<T> core::ops::Div<&Radioactivity<T>> for num_bigfloat::BigFloat where T: NumLike+From<num_bigfloat::BigFloat> {
3082	type Output = Time<T>;
3083	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3084		Time{s: T::from(self) / rhs.Bq.clone()}
3085	}
3086}
3087/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3088#[cfg(feature="num-bigfloat")]
3089impl<T> core::ops::Div<&Radioactivity<T>> for &num_bigfloat::BigFloat where T: NumLike+From<num_bigfloat::BigFloat> {
3090	type Output = Time<T>;
3091	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3092		Time{s: T::from(self.clone()) / rhs.Bq.clone()}
3093	}
3094}
3095
3096// 1/Radioactivity -> Time
3097/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3098#[cfg(feature="num-complex")]
3099impl<T> core::ops::Div<Radioactivity<T>> for num_complex::Complex32 where T: NumLike+From<num_complex::Complex32> {
3100	type Output = Time<T>;
3101	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3102		Time{s: T::from(self) / rhs.Bq}
3103	}
3104}
3105/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3106#[cfg(feature="num-complex")]
3107impl<T> core::ops::Div<Radioactivity<T>> for &num_complex::Complex32 where T: NumLike+From<num_complex::Complex32> {
3108	type Output = Time<T>;
3109	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3110		Time{s: T::from(self.clone()) / rhs.Bq}
3111	}
3112}
3113/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3114#[cfg(feature="num-complex")]
3115impl<T> core::ops::Div<&Radioactivity<T>> for num_complex::Complex32 where T: NumLike+From<num_complex::Complex32> {
3116	type Output = Time<T>;
3117	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3118		Time{s: T::from(self) / rhs.Bq.clone()}
3119	}
3120}
3121/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3122#[cfg(feature="num-complex")]
3123impl<T> core::ops::Div<&Radioactivity<T>> for &num_complex::Complex32 where T: NumLike+From<num_complex::Complex32> {
3124	type Output = Time<T>;
3125	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3126		Time{s: T::from(self.clone()) / rhs.Bq.clone()}
3127	}
3128}
3129
3130// 1/Radioactivity -> Time
3131/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3132#[cfg(feature="num-complex")]
3133impl<T> core::ops::Div<Radioactivity<T>> for num_complex::Complex64 where T: NumLike+From<num_complex::Complex64> {
3134	type Output = Time<T>;
3135	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3136		Time{s: T::from(self) / rhs.Bq}
3137	}
3138}
3139/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3140#[cfg(feature="num-complex")]
3141impl<T> core::ops::Div<Radioactivity<T>> for &num_complex::Complex64 where T: NumLike+From<num_complex::Complex64> {
3142	type Output = Time<T>;
3143	fn div(self, rhs: Radioactivity<T>) -> Self::Output {
3144		Time{s: T::from(self.clone()) / rhs.Bq}
3145	}
3146}
3147/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3148#[cfg(feature="num-complex")]
3149impl<T> core::ops::Div<&Radioactivity<T>> for num_complex::Complex64 where T: NumLike+From<num_complex::Complex64> {
3150	type Output = Time<T>;
3151	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3152		Time{s: T::from(self) / rhs.Bq.clone()}
3153	}
3154}
3155/// Dividing a scalar value by a Radioactivity unit value returns a value of type Time
3156#[cfg(feature="num-complex")]
3157impl<T> core::ops::Div<&Radioactivity<T>> for &num_complex::Complex64 where T: NumLike+From<num_complex::Complex64> {
3158	type Output = Time<T>;
3159	fn div(self, rhs: &Radioactivity<T>) -> Self::Output {
3160		Time{s: T::from(self.clone()) / rhs.Bq.clone()}
3161	}
3162}
3163
3164
3165