1use std::ops::Mul;
2
3use crate::Scalar;
4
5pub struct PseudoScalar {
7 pub e012: Scalar,
8}
9
10impl Mul<Scalar> for PseudoScalar {
11 type Output = PseudoScalar;
12
13 fn mul(self, s: Scalar) -> PseudoScalar {
14 PseudoScalar::from(self.e012 * s)
15 }
16}
17
18impl Mul<PseudoScalar> for Scalar {
19 type Output = PseudoScalar;
20
21 fn mul(self, ps: PseudoScalar) -> PseudoScalar {
22 ps * self
23 }
24}
25
26impl From<Scalar> for PseudoScalar {
27 fn from(s: Scalar) -> PseudoScalar {
28 PseudoScalar { e012: s }
29 }
30}
31
32impl From<PseudoScalar> for Scalar {
33 fn from(ps: PseudoScalar) -> Scalar {
34 ps.e012
35 }
36}
37
38impl PseudoScalar {
39 pub fn ideal_norm(self) -> Scalar {
40 self.e012
41 }
42}