@@ -6,7 +6,7 @@ use std::{
6
6
str:: FromStr ,
7
7
} ;
8
8
9
- use num:: { rational:: Ratio , BigUint , CheckedSub , Integer } ;
9
+ use num:: { pow :: Pow , rational:: Ratio , BigUint , CheckedSub , Integer } ;
10
10
use num_derive:: { Num , NumOps , One , Zero } ;
11
11
use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
12
12
@@ -99,6 +99,46 @@ impl Integer for BigNum {
99
99
}
100
100
}
101
101
102
+ impl Pow < BigNum > for BigNum {
103
+ type Output = BigNum ;
104
+
105
+ fn pow ( self , rhs : BigNum ) -> Self :: Output {
106
+ Self ( self . 0 . pow ( rhs. 0 ) )
107
+ }
108
+ }
109
+
110
+ impl Pow < & BigNum > for BigNum {
111
+ type Output = BigNum ;
112
+
113
+ fn pow ( self , rhs : & BigNum ) -> Self :: Output {
114
+ BigNum ( self . 0 . pow ( & rhs. 0 ) )
115
+ }
116
+ }
117
+
118
+ impl Pow < BigNum > for & BigNum {
119
+ type Output = BigNum ;
120
+
121
+ fn pow ( self , rhs : BigNum ) -> Self :: Output {
122
+ BigNum ( Pow :: pow ( & self . 0 , rhs. 0 ) )
123
+ }
124
+ }
125
+
126
+ impl Pow < & BigNum > for & BigNum {
127
+ type Output = BigNum ;
128
+
129
+ fn pow ( self , rhs : & BigNum ) -> Self :: Output {
130
+ BigNum ( Pow :: pow ( & self . 0 , & rhs. 0 ) )
131
+ }
132
+ }
133
+
134
+ impl Pow < u8 > for BigNum {
135
+ type Output = BigNum ;
136
+
137
+ fn pow ( self , rhs : u8 ) -> Self :: Output {
138
+ BigNum ( self . 0 . pow ( rhs) )
139
+ }
140
+ }
141
+
102
142
impl Add < & BigNum > for & BigNum {
103
143
type Output = BigNum ;
104
144
0 commit comments