@@ -134,7 +134,8 @@ impl ExtensionField for BabyBearExt3x16 {
134
134
#[ inline( always) ]
135
135
fn mul_by_x ( & self ) -> Self {
136
136
Self {
137
- v : [ self . v [ 2 ] * BabyBearx16 :: from ( Self :: W ) , self . v [ 0 ] , self . v [ 1 ] ] ,
137
+ // Note: W = 2
138
+ v : [ self . v [ 2 ] . double ( ) , self . v [ 0 ] , self . v [ 1 ] ] ,
138
139
}
139
140
}
140
141
}
@@ -249,10 +250,10 @@ impl Mul<BabyBearExt3> for BabyBearExt3x16 {
249
250
// + {(a0 b1 + a1 b0) + w * a2 b2} x
250
251
// + {(a0 b2 + a1 b1 + a2 b0)} x^2
251
252
252
- let w = BabyBear :: from ( BabyBearExt3x16 :: W ) ;
253
+ // Note: W = 2
253
254
let mut res = [ BabyBearx16 :: ZERO ; 3 ] ;
254
- res[ 0 ] = self . v [ 0 ] * rhs. v [ 0 ] + ( self . v [ 1 ] * rhs. v [ 2 ] + self . v [ 2 ] * rhs. v [ 1 ] ) * w ;
255
- res[ 1 ] = self . v [ 0 ] * rhs. v [ 1 ] + self . v [ 1 ] * rhs. v [ 0 ] + self . v [ 2 ] * rhs. v [ 2 ] * w ;
255
+ res[ 0 ] = self . v [ 0 ] * rhs. v [ 0 ] + ( self . v [ 1 ] * rhs. v [ 2 ] + self . v [ 2 ] * rhs. v [ 1 ] ) . double ( ) ;
256
+ res[ 1 ] = self . v [ 0 ] * rhs. v [ 1 ] + self . v [ 1 ] * rhs. v [ 0 ] + self . v [ 2 ] * rhs. v [ 2 ] . double ( ) ;
256
257
res[ 2 ] = self . v [ 0 ] * rhs. v [ 2 ] + self . v [ 1 ] * rhs. v [ 1 ] + self . v [ 2 ] * rhs. v [ 0 ] ;
257
258
Self { v : res }
258
259
}
@@ -336,9 +337,9 @@ fn mul_internal(a: &BabyBearExt3x16, b: &BabyBearExt3x16) -> BabyBearExt3x16 {
336
337
let a = & a. v ;
337
338
let b = & b. v ;
338
339
let mut res = [ BabyBearx16 :: default ( ) ; 3 ] ;
339
- let w = BabyBear :: from ( BabyBearExt3x16 :: W ) ;
340
- res[ 0 ] = a[ 0 ] * b[ 0 ] + ( a[ 1 ] * b[ 2 ] + a[ 2 ] * b[ 1 ] ) * w ;
341
- res[ 1 ] = ( a[ 0 ] * b[ 1 ] + a[ 1 ] * b[ 0 ] ) + a[ 2 ] * b[ 2 ] * w ;
340
+ // Note: W = 2
341
+ res[ 0 ] = a[ 0 ] * b[ 0 ] + ( a[ 1 ] * b[ 2 ] + a[ 2 ] * b[ 1 ] ) . double ( ) ;
342
+ res[ 1 ] = ( a[ 0 ] * b[ 1 ] + a[ 1 ] * b[ 0 ] ) + a[ 2 ] * b[ 2 ] . double ( ) ;
342
343
res[ 2 ] = a[ 0 ] * b[ 2 ] + a[ 1 ] * b[ 1 ] + a[ 2 ] * b[ 0 ] ;
343
344
344
345
BabyBearExt3x16 { v : res }
@@ -347,9 +348,9 @@ fn mul_internal(a: &BabyBearExt3x16, b: &BabyBearExt3x16) -> BabyBearExt3x16 {
347
348
#[ inline( always) ]
348
349
fn square_internal ( a : & [ BabyBearx16 ; 3 ] ) -> [ BabyBearx16 ; 3 ] {
349
350
let mut res = [ BabyBearx16 :: default ( ) ; 3 ] ;
350
- let w = BabyBear :: from ( BabyBearExt3x16 :: W ) ;
351
- res[ 0 ] = a[ 0 ] . square ( ) + ( a[ 1 ] * a[ 2 ] ) . double ( ) * w ;
352
- res[ 1 ] = ( a[ 0 ] * a[ 1 ] ) . double ( ) + a[ 2 ] . square ( ) * w ;
351
+ // Note: W = 2
352
+ res[ 0 ] = a[ 0 ] . square ( ) + ( a[ 1 ] * a[ 2 ] ) . double ( ) . double ( ) ;
353
+ res[ 1 ] = ( a[ 0 ] * a[ 1 ] ) . double ( ) + a[ 2 ] . square ( ) . double ( ) ;
353
354
res[ 2 ] = a[ 0 ] * a[ 2 ] . double ( ) + a[ 1 ] . square ( ) ;
354
355
355
356
res
0 commit comments