1use std::{fmt, ops::{Add, Div, Mul, Neg, Rem, Shl, Shr, Sub}};
10
11pub mod multivariate;
12pub mod polynomial;
13pub mod imaginary;
14pub mod linear_algebra;
15pub mod rotation;
16pub mod utils; pub use rotation::axes;
19
20pub trait Construct<T>: fmt::Debug + Copy + Clone + PartialEq + Add<Self, Output = Self> + Add<T, Output = Self>
23 + Sub<Self, Output = Self> + Sub<T, Output = Self>
24 + Mul<Self, Output = Self> + Mul<T, Output = Self>
25 + Div<Self, Output = Self> + Div<T, Output = Self>
26 + Rem<Self, Output = Self> + Rem<T, Output = Self>
27 + Neg<Output = Self> + SignOps
28 + Zero + One + Two
29 + F32Fmt {}
30
31pub trait Typed<T> {} impl<T: Construct<A>, A> Typed<T> for A {} impl<T: fmt::Debug + Copy + Clone + PartialEq
63 + Add<T, Output = T>
64 + Sub<T, Output = T>
65 + Mul<T, Output = T>
66 + Div<T, Output = T>
67 + Rem<T, Output = T>
68 + Neg<Output = T> + SignOps
69 + Zero + One + Two
70 + F32Fmt
71 + Primitive> Construct<T> for T {}
72
73pub trait IntUtils{
74 fn isqrt(self) -> Self;
75 fn icbrt(self) -> Self;
76 fn isin_mul(self, mul_by: Self) -> Self;
77 fn icos_mul(self, mul_by: Self) -> Self;
78 fn itan_mul(self, mul_by: Self) -> Self;
79 fn iasin_mul(self, mul_by: Self) -> Self;
80 fn iacos_mul(self, mul_by: Self) -> Self;
81 fn iatan_mul(self, mul_by: Self) -> Self;
82 fn iatan2_mul(self, other: Self, mul_by: Self) -> Self;
83
84 fn itanh_mul(self, mul_by: Self) -> Self;
85 fn isinh_mul(self, mul_by: Self) -> Self;
86 fn icosh_mul(self, mul_by: Self) -> Self;
87}
88
89pub trait UintUtils{
90 fn usqrt(self) -> Self;
91 fn ucbrt(self) -> Self;
92 fn usin_mul(self, mul_by: Self) -> Self;
93 fn ucos_mul(self, mul_by: Self) -> Self;
94 fn utan_mul(self, mul_by: Self) -> Self;
95 fn uasin_mul(self, mul_by: Self) -> Self;
96 fn uacos_mul(self, mul_by: Self) -> Self;
97 fn uatan_mul(self, mul_by: Self) -> Self;
98 fn uatan2_mul(self, other: Self, mul_by: Self) -> Self;
99
100 fn utanh_mul(self, mul_by: Self) -> Self;
101 fn usinh_mul(self, mul_by: Self) -> Self;
102 fn ucosh_mul(self, mul_by: Self) -> Self;
103}
104
105impl<T: Uint +
106 Copy +
107 One + Two + Three +
108 F32Fmt<F32Fmt = f32> +
109 PartialOrd +
110 Shr<T, Output = T> +
111 Shl<T, Output = T> +
112 Add<T, Output = T> +
113 Mul<T, Output = T>> UintUtils for T {
114 #[inline] fn usqrt(self) -> Self {
115 if self < Self::TWO { return self; }
116 let s_option = Self::usqrt(self >> Self::TWO) << Self::ONE;
117 let l_option = s_option + Self::ONE;
118 if l_option * l_option > self { s_option } else { l_option }
119 }
120 #[inline] fn ucbrt(self) -> Self {
121 if self < Self::THREE { return self; }
122 let s_option = Self::ucbrt(self >> Self::THREE) << Self::ONE;
123 let l_option = s_option + Self::ONE;
124 if l_option * l_option > self { s_option } else { l_option }
125 }
126 #[inline] fn usin_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().sin() * mul_by.intoF32Fmt()) }
128 #[inline] fn ucos_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().cos() * mul_by.intoF32Fmt()) }
129 #[inline] fn utan_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().tan() * mul_by.intoF32Fmt()) }
130 #[inline] fn uasin_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().asin() * mul_by.intoF32Fmt()) }
131 #[inline] fn uacos_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().acos() * mul_by.intoF32Fmt()) }
132 #[inline] fn uatan_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().atan() * mul_by.intoF32Fmt()) }
133 #[inline] fn uatan2_mul(self, other: Self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().atan2(other.intoF32Fmt()) * mul_by.intoF32Fmt()) }
134
135 #[inline] fn usinh_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().sinh() * mul_by.intoF32Fmt()) }
136 #[inline] fn ucosh_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().cosh() * mul_by.intoF32Fmt()) }
137 #[inline] fn utanh_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().tanh() * mul_by.intoF32Fmt()) }
138}
139
140impl<T: Int +
141 Copy +
142 Zero + One + Two + Three +
143 F32Fmt<F32Fmt = f32> +
144 PartialOrd +
145 Shr<T, Output = T> +
146 Shl<T, Output = T> +
147 Add<T, Output = T> +
148 Mul<T, Output = T>> IntUtils for T {
149 #[inline] fn isqrt(self) -> Self {
150 assert!(self >= Self::ZERO, "sqrt works for only non-negative inputs");
151 if self < Self::TWO { return self; }
152 let s_option = Self::isqrt(self >> Self::TWO) << Self::ONE;
153 let l_option = s_option + Self::ONE;
154 if l_option * l_option > self { s_option } else { l_option }
155 }
156 #[inline] fn icbrt(self) -> Self {
157 assert!(self >= Self::ZERO, "sqrt works for only non-negative inputs");
158 if self < Self::THREE { return self; }
159 let s_option = Self::icbrt(self >> Self::THREE) << Self::ONE;
160 let l_option = s_option + Self::ONE;
161 if l_option * l_option > self { s_option } else { l_option }
162 }
163 #[inline] fn isin_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().sin() * mul_by.intoF32Fmt()) }
165 #[inline] fn icos_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().cos() * mul_by.intoF32Fmt()) }
166 #[inline] fn itan_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().tan() * mul_by.intoF32Fmt()) }
167 #[inline] fn iasin_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().asin() * mul_by.intoF32Fmt()) }
168 #[inline] fn iacos_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().acos() * mul_by.intoF32Fmt()) }
169 #[inline] fn iatan_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().atan() * mul_by.intoF32Fmt()) }
170 #[inline] fn iatan2_mul(self, other: Self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().atan2(other.intoF32Fmt()) * mul_by.intoF32Fmt()) }
171
172 #[inline] fn isinh_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().sinh() * mul_by.intoF32Fmt()) }
173 #[inline] fn icosh_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().cosh() * mul_by.intoF32Fmt()) }
174 #[inline] fn itanh_mul(self, mul_by: Self) -> Self { Self::fromF32Fmt(self.intoF32Fmt().tanh() * mul_by.intoF32Fmt()) }
175}
176
177pub trait Zero { const ZERO: Self; }
178impl Zero for bool { const ZERO: Self = false; }
179impl Zero for f32 { const ZERO: Self = 0_f32; }
180impl Zero for f64 { const ZERO: Self = 0_f64; }
181impl Zero for i8 { const ZERO: Self = 0_i8; } impl Zero for u8 { const ZERO: Self = 0_u8; }
182impl Zero for i16 { const ZERO: Self = 0_i16; } impl Zero for u16 { const ZERO: Self = 0_u16; }
183impl Zero for i32 { const ZERO: Self = 0_i32; } impl Zero for u32 { const ZERO: Self = 0_u32; }
184impl Zero for i64 { const ZERO: Self = 0_i64; } impl Zero for u64 { const ZERO: Self = 0_u64; }
185impl Zero for i128 { const ZERO: Self = 0_i128; } impl Zero for u128 { const ZERO: Self = 0_u128; }
186impl Zero for isize { const ZERO: Self = 0_isize; } impl Zero for usize { const ZERO: Self = 0_usize; }
187
188pub trait One { const ONE: Self; }
189impl One for bool { const ONE: Self = true; }
190impl One for f32 { const ONE: Self = 1_f32; }
191impl One for f64 { const ONE: Self = 1_f64; }
192impl One for i8 { const ONE: Self = 1_i8; } impl One for u8 { const ONE: Self = 1_u8; }
193impl One for i16 { const ONE: Self = 1_i16; } impl One for u16 { const ONE: Self = 1_u16; }
194impl One for i32 { const ONE: Self = 1_i32; } impl One for u32 { const ONE: Self = 1_u32; }
195impl One for i64 { const ONE: Self = 1_i64; } impl One for u64 { const ONE: Self = 1_u64; }
196impl One for i128 { const ONE: Self = 1_i128; } impl One for u128 { const ONE: Self = 1_u128; }
197impl One for isize { const ONE: Self = 1_isize; } impl One for usize { const ONE: Self = 1_usize; }
198
199pub trait Two { const TWO: Self; }
200impl Two for f32 { const TWO: Self = 2_f32; }
201impl Two for f64 { const TWO: Self = 2_f64; }
202impl Two for i8 { const TWO: Self = 2_i8; } impl Two for u8 { const TWO: Self = 2_u8; }
203impl Two for i16 { const TWO: Self = 2_i16; } impl Two for u16 { const TWO: Self = 2_u16; }
204impl Two for i32 { const TWO: Self = 2_i32; } impl Two for u32 { const TWO: Self = 2_u32; }
205impl Two for i64 { const TWO: Self = 2_i64; } impl Two for u64 { const TWO: Self = 2_u64; }
206impl Two for i128 { const TWO: Self = 2_i128; } impl Two for u128 { const TWO: Self = 2_u128; }
207impl Two for isize { const TWO: Self = 2_isize; } impl Two for usize { const TWO: Self = 2_usize; }
208
209pub trait Three { const THREE: Self; }
210impl Three for f32 { const THREE: Self = 3_f32; }
211impl Three for f64 { const THREE: Self = 3_f64; }
212impl Three for i8 { const THREE: Self = 3_i8; } impl Three for u8 { const THREE: Self = 3_u8; }
213impl Three for i16 { const THREE: Self = 3_i16; } impl Three for u16 { const THREE: Self = 3_u16; }
214impl Three for i32 { const THREE: Self = 3_i32; } impl Three for u32 { const THREE: Self = 3_u32; }
215impl Three for i64 { const THREE: Self = 3_i64; } impl Three for u64 { const THREE: Self = 3_u64; }
216impl Three for i128 { const THREE: Self = 3_i128; } impl Three for u128 { const THREE: Self = 3_u128; }
217impl Three for isize { const THREE: Self = 3_isize; } impl Three for usize { const THREE: Self = 3_usize; }
218
219pub trait SignOps { fn ptcopysign(self, sign: Self) -> Self; fn ptsignum(self) -> i8; fn abs(self) -> Self; }
220impl SignOps for f32 { #[inline] fn ptcopysign(self, sign: Self) -> Self { self.copysign(sign) } #[inline] fn ptsignum(self) -> i8 { if self == 0.0 { 0_i8 } else if self.signum() > 0.0 { 1_i8 } else { -1_i8 } } #[inline] fn abs(self) -> Self { self.abs() } }
221impl SignOps for f64 { #[inline] fn ptcopysign(self, sign: Self) -> Self { self.copysign(sign) } #[inline] fn ptsignum(self) -> i8 { if self == 0.0 { 0_i8 } else if self.signum() > 0.0 { 1_i8 } else { -1_i8 } } #[inline] fn abs(self) -> Self { self.abs() } }
222impl SignOps for i8 { #[inline] fn ptcopysign(self, sign: Self) -> Self { if sign >> 7 ^ self >> 7 != 0 { -self } else { self } } #[inline] fn ptsignum(self) -> i8 { self.signum() } #[inline] fn abs(self) -> Self { self.abs() } }
223impl SignOps for i16 { #[inline] fn ptcopysign(self, sign: Self) -> Self { if sign >> 15 ^ self >> 15 != 0 { -self } else { self } } #[inline] fn ptsignum(self) -> i8 { self.signum() as i8 } #[inline] fn abs(self) -> Self { self.abs() } }
224impl SignOps for i32 { #[inline] fn ptcopysign(self, sign: Self) -> Self { if sign >> 31 ^ self >> 31 != 0 { -self } else { self } } #[inline] fn ptsignum(self) -> i8 { self.signum() as i8 } #[inline] fn abs(self) -> Self { self.abs() } }
225impl SignOps for i64 { #[inline] fn ptcopysign(self, sign: Self) -> Self { if sign >> 63 ^ self >> 63 != 0 { -self } else { self } } #[inline] fn ptsignum(self) -> i8 { self.signum() as i8 } #[inline] fn abs(self) -> Self { self.abs() } }
226impl SignOps for i128 { #[inline] fn ptcopysign(self, sign: Self) -> Self { if sign >> 127 ^ self >> 127 != 0 { -self } else { self } } #[inline] fn ptsignum(self) -> i8 { self.signum() as i8 } #[inline] fn abs(self) -> Self { self.abs() } }
227impl SignOps for isize { #[inline] fn ptcopysign(self, sign: Self) -> Self { if sign.reverse_bits() >> 1 ^ self.reverse_bits() >> 1 != 0 { -self } else { self } } #[inline] fn ptsignum(self) -> i8 { self.signum() as i8 } #[inline] fn abs(self) -> Self { self.abs() } }
228impl SignOps for u8 { #[inline] fn ptcopysign(self, _: Self) -> Self { self } #[inline] fn ptsignum(self) -> i8 { if self != 0_u8 { 1_i8 } else { 0_i8 } } #[inline] fn abs(self) -> Self { self } }
229impl SignOps for u16 { #[inline] fn ptcopysign(self, _: Self) -> Self { self } #[inline] fn ptsignum(self) -> i8 { if self != 0_u16 { 1_i8 } else { 0_i8 } } #[inline] fn abs(self) -> Self { self } }
230impl SignOps for u32 { #[inline] fn ptcopysign(self, _: Self) -> Self { self } #[inline] fn ptsignum(self) -> i8 { if self != 0_u32 { 1_i8 } else { 0_i8 } } #[inline] fn abs(self) -> Self { self } }
231impl SignOps for u64 { #[inline] fn ptcopysign(self, _: Self) -> Self { self } #[inline] fn ptsignum(self) -> i8 { if self != 0_u64 { 1_i8 } else { 0_i8 } } #[inline] fn abs(self) -> Self { self } }
232impl SignOps for u128 { #[inline] fn ptcopysign(self, _: Self) -> Self { self } #[inline] fn ptsignum(self) -> i8 { if self != 0_u128 { 1_i8 } else { 0_i8 } } #[inline] fn abs(self) -> Self { self } }
233impl SignOps for usize { #[inline] fn ptcopysign(self, _: Self) -> Self { self } #[inline] fn ptsignum(self) -> i8 { if self != 0_usize { 1_i8 } else { 0_i8 } } #[inline] fn abs(self) -> Self { self } }
234impl SignOps for bool { #[inline] fn ptcopysign(self, sign: Self) -> Self { sign } #[inline] fn ptsignum(self) -> i8 { if self { 1_i8 } else { 0_i8 } } #[inline] fn abs(self) -> Self { false } }
235
236pub trait Primitive {}
238impl Primitive for f32 {}
239impl Primitive for f64 {}
240impl Primitive for i8 {}
241impl Primitive for i16 {}
242impl Primitive for i32 {}
243impl Primitive for i64 {}
244impl Primitive for i128 {}
245impl Primitive for isize {}
246impl Primitive for u8 {}
247impl Primitive for u16 {}
248impl Primitive for u32 {}
249impl Primitive for u64 {}
250impl Primitive for u128 {}
251impl Primitive for usize {}
252impl Primitive for bool {}
253
254pub trait Float {}
255impl Float for f32 {}
256impl Float for f64 {}
257
258pub trait Int {}
259impl Int for i8 {}
260impl Int for i16 {}
261impl Int for i32 {}
262impl Int for i64 {}
263impl Int for i128 {}
264impl Int for isize {}
265
266pub trait Uint {}
267impl Uint for u8 {}
268impl Uint for u16 {}
269impl Uint for u32 {}
270impl Uint for u64 {}
271impl Uint for u128 {}
272impl Uint for usize {}
273impl Uint for bool {}
274
275pub trait F32Fmt {
276 type F32Fmt: F32Fmt + Copy + Clone + PartialEq
277 + Add<Self::F32Fmt, Output = Self::F32Fmt>
278 + Sub<Self::F32Fmt, Output = Self::F32Fmt>
279 + Mul<Self::F32Fmt, Output = Self::F32Fmt>
280 + Div<Self::F32Fmt, Output = Self::F32Fmt>
281 + Rem<Self::F32Fmt, Output = Self::F32Fmt>
282 + Neg<Output = Self::F32Fmt> + SignOps
283 + Zero + One + Two;
284 #[allow(non_snake_case)]
285 fn intoF32Fmt(self) -> Self::F32Fmt;
286 #[allow(non_snake_case)]
287 fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self;
288 fn sqrt(self) -> Self;
289 fn cbrt(self) -> Self;
290 fn f32_const_mul(self, constant: f32) -> Self;
291 fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
292 fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
293 fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
294 fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
295 fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
296 fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
297 fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
298
299 fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
300 fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
301 fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized;
302}
303impl F32Fmt for f32 { type F32Fmt = Self;
304 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self }
305 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt }
306 #[inline] fn sqrt(self) -> Self { Self::sqrt(self) }
307 #[inline] fn cbrt(self) -> Self { Self::cbrt(self) }
308 #[inline] fn f32_const_mul(self, constant: f32) -> Self { self * constant }
309 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::sin(self) * mul_by }
310 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::cos(self) * mul_by }
311 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::tan(self) * mul_by }
312 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::asin(self) * mul_by }
313 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::acos(self) * mul_by }
314 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::atan(self) * mul_by }
315 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::atan2(self, other) * mul_by }
316
317 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::sinh(self) * mul_by }
318 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::cosh(self) * mul_by }
319 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::tanh(self) * mul_by }
320}
321impl F32Fmt for f64 {
322 type F32Fmt = f32;
323 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
324 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
325 #[inline] fn sqrt(self) -> Self { Self::sqrt(self) }
326 #[inline] fn cbrt(self) -> Self { Self::cbrt(self) }
327 #[inline] fn f32_const_mul(self, constant: f32) -> Self where Self: Mul<f64, Output = Self> { (self as f32 * constant) as Self }
328 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::sin(self) * mul_by }
329 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::cos(self) * mul_by }
330 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::tan(self) * mul_by }
331 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::asin(self) * mul_by }
332 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::acos(self) * mul_by }
333 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::atan(self) * mul_by }
334 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::atan2(self, other) * mul_by }
335
336 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::sinh(self) * mul_by }
337 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::cosh(self) * mul_by }
338 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::tanh(self) * mul_by }
339}
340impl F32Fmt for i8 {
341 type F32Fmt = f32;
342 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
343 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
344 #[inline] fn sqrt(self) -> Self { Self::isqrt(self) }
345 #[inline] fn cbrt(self) -> Self { Self::icbrt(self) }
346 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
347 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isin_mul(self, mul_by) }
348 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icos_mul(self, mul_by) }
349 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itan_mul(self, mul_by) }
350 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iasin_mul(self, mul_by) }
351 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iacos_mul(self, mul_by) }
352 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan_mul(self, mul_by) }
353 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan2_mul(self, other, mul_by) }
354
355 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isinh_mul(self, mul_by) }
356 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icosh_mul(self, mul_by) }
357 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itanh_mul(self, mul_by) }
358}
359impl F32Fmt for i16 {
360 type F32Fmt = f32;
361 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
362 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
363 #[inline] fn sqrt(self) -> Self { Self::isqrt(self) }
364 #[inline] fn cbrt(self) -> Self { Self::icbrt(self) }
365 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
366 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isin_mul(self, mul_by) }
367 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icos_mul(self, mul_by) }
368 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itan_mul(self, mul_by) }
369 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iasin_mul(self, mul_by) }
370 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iacos_mul(self, mul_by) }
371 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan_mul(self, mul_by) }
372 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan2_mul(self, other, mul_by) }
373
374 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isinh_mul(self, mul_by) }
375 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icosh_mul(self, mul_by) }
376 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itanh_mul(self, mul_by) }
377}
378impl F32Fmt for i32 {
379 type F32Fmt = f32;
380 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
381 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
382 #[inline] fn sqrt(self) -> Self { Self::isqrt(self) }
383 #[inline] fn cbrt(self) -> Self { Self::icbrt(self) }
384 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
385 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isin_mul(self, mul_by) }
386 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icos_mul(self, mul_by) }
387 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itan_mul(self, mul_by) }
388 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iasin_mul(self, mul_by) }
389 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iacos_mul(self, mul_by) }
390 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan_mul(self, mul_by) }
391 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan2_mul(self, other, mul_by) }
392
393 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isinh_mul(self, mul_by) }
394 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icosh_mul(self, mul_by) }
395 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itanh_mul(self, mul_by) }
396}
397impl F32Fmt for i64 {
398 type F32Fmt = f32;
399 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
400 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
401 #[inline] fn sqrt(self) -> Self { Self::isqrt(self) }
402 #[inline] fn cbrt(self) -> Self { Self::icbrt(self) }
403 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
404 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isin_mul(self, mul_by) }
405 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icos_mul(self, mul_by) }
406 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itan_mul(self, mul_by) }
407 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iasin_mul(self, mul_by) }
408 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iacos_mul(self, mul_by) }
409 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan_mul(self, mul_by) }
410 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan2_mul(self, other, mul_by) }
411
412 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isinh_mul(self, mul_by) }
413 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icosh_mul(self, mul_by) }
414 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itanh_mul(self, mul_by) }
415}
416impl F32Fmt for i128 {
417 type F32Fmt = f32;
418 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
419 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
420 #[inline] fn sqrt(self) -> Self { Self::isqrt(self) }
421 #[inline] fn cbrt(self) -> Self { Self::icbrt(self) }
422 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
423 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isin_mul(self, mul_by) }
424 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icos_mul(self, mul_by) }
425 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itan_mul(self, mul_by) }
426 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iasin_mul(self, mul_by) }
427 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iacos_mul(self, mul_by) }
428 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan_mul(self, mul_by) }
429 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan2_mul(self, other, mul_by) }
430
431 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isinh_mul(self, mul_by) }
432 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icosh_mul(self, mul_by) }
433 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itanh_mul(self, mul_by) }
434}
435impl F32Fmt for isize {
436 type F32Fmt = f32;
437 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
438 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
439 #[inline] fn sqrt(self) -> Self { Self::isqrt(self) }
440 #[inline] fn cbrt(self) -> Self { Self::icbrt(self) }
441 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
442 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isin_mul(self, mul_by) }
443 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icos_mul(self, mul_by) }
444 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itan_mul(self, mul_by) }
445 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iasin_mul(self, mul_by) }
446 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iacos_mul(self, mul_by) }
447 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan_mul(self, mul_by) }
448 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::iatan2_mul(self, other, mul_by) }
449
450 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::isinh_mul(self, mul_by) }
451 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::icosh_mul(self, mul_by) }
452 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::itanh_mul(self, mul_by) }
453}
454impl F32Fmt for u8 {
455 type F32Fmt = f32;
456 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
457 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
458 #[inline] fn sqrt(self) -> Self { Self::usqrt(self) }
459 #[inline] fn cbrt(self) -> Self { Self::ucbrt(self) }
460 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
461 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usin_mul(self, mul_by) }
462 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucos_mul(self, mul_by) }
463 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utan_mul(self, mul_by) }
464 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uasin_mul(self, mul_by) }
465 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uacos_mul(self, mul_by) }
466 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan_mul(self, mul_by) }
467 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan2_mul(self, other, mul_by) }
468
469 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usinh_mul(self, mul_by) }
470 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucosh_mul(self, mul_by) }
471 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utanh_mul(self, mul_by) }
472}
473impl F32Fmt for u16 {
474 type F32Fmt = f32;
475 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
476 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
477 #[inline] fn sqrt(self) -> Self { Self::usqrt(self) }
478 #[inline] fn cbrt(self) -> Self { Self::ucbrt(self) }
479 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
480 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usin_mul(self, mul_by) }
481 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucos_mul(self, mul_by) }
482 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utan_mul(self, mul_by) }
483 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uasin_mul(self, mul_by) }
484 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uacos_mul(self, mul_by) }
485 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan_mul(self, mul_by) }
486 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan2_mul(self, other, mul_by) }
487
488 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usinh_mul(self, mul_by) }
489 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucosh_mul(self, mul_by) }
490 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utanh_mul(self, mul_by) }
491}
492impl F32Fmt for u32 {
493 type F32Fmt = f32;
494 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
495 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
496 #[inline] fn sqrt(self) -> Self { Self::usqrt(self) }
497 #[inline] fn cbrt(self) -> Self { Self::ucbrt(self) }
498 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
499 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usin_mul(self, mul_by) }
500 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucos_mul(self, mul_by) }
501 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utan_mul(self, mul_by) }
502 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uasin_mul(self, mul_by) }
503 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uacos_mul(self, mul_by) }
504 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan_mul(self, mul_by) }
505 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan2_mul(self, other, mul_by) }
506
507 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usinh_mul(self, mul_by) }
508 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucosh_mul(self, mul_by) }
509 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utanh_mul(self, mul_by) }
510}
511impl F32Fmt for u64 {
512 type F32Fmt = f32;
513 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
514 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
515 #[inline] fn sqrt(self) -> Self { Self::usqrt(self) }
516 #[inline] fn cbrt(self) -> Self { Self::ucbrt(self) }
517 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
518 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usin_mul(self, mul_by) }
519 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucos_mul(self, mul_by) }
520 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utan_mul(self, mul_by) }
521 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uasin_mul(self, mul_by) }
522 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uacos_mul(self, mul_by) }
523 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan_mul(self, mul_by) }
524 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan2_mul(self, other, mul_by) }
525
526 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usinh_mul(self, mul_by) }
527 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucosh_mul(self, mul_by) }
528 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utanh_mul(self, mul_by) }
529}
530impl F32Fmt for u128 {
531 type F32Fmt = f32;
532 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
533 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
534 #[inline] fn sqrt(self) -> Self { Self::usqrt(self) }
535 #[inline] fn cbrt(self) -> Self { Self::ucbrt(self) }
536 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
537 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usin_mul(self, mul_by) }
538 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucos_mul(self, mul_by) }
539 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utan_mul(self, mul_by) }
540 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uasin_mul(self, mul_by) }
541 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uacos_mul(self, mul_by) }
542 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan_mul(self, mul_by) }
543 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan2_mul(self, other, mul_by) }
544
545 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usinh_mul(self, mul_by) }
546 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucosh_mul(self, mul_by) }
547 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utanh_mul(self, mul_by) }
548}
549impl F32Fmt for usize {
550 type F32Fmt = f32;
551 #[inline] fn intoF32Fmt(self) -> Self::F32Fmt { self as f32 }
552 #[inline] fn fromF32Fmt(f32_fmt: Self::F32Fmt) -> Self { f32_fmt as Self }
553 #[inline] fn sqrt(self) -> Self { Self::usqrt(self) }
554 #[inline] fn cbrt(self) -> Self { Self::ucbrt(self) }
555 #[inline] fn f32_const_mul(self, constant: f32) -> Self { (self as f32 * constant) as Self }
556 #[inline] fn sin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usin_mul(self, mul_by) }
557 #[inline] fn cos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucos_mul(self, mul_by) }
558 #[inline] fn tan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utan_mul(self, mul_by) }
559 #[inline] fn asin_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uasin_mul(self, mul_by) }
560 #[inline] fn acos_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uacos_mul(self, mul_by) }
561 #[inline] fn atan_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan_mul(self, mul_by) }
562 #[inline] fn atan2_mul(self, other: Self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::uatan2_mul(self, other, mul_by) }
563
564 #[inline] fn sinh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::usinh_mul(self, mul_by) }
565 #[inline] fn cosh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::ucosh_mul(self, mul_by) }
566 #[inline] fn tanh_mul(self, mul_by: Self) -> Self where Self: Mul<Self, Output = Self> + Sized { Self::utanh_mul(self, mul_by) }
567}