File tree 2 files changed +6
-10
lines changed
2 files changed +6
-10
lines changed Original file line number Diff line number Diff line change @@ -206,9 +206,9 @@ import {
206
206
isPowerOf2 ,
207
207
readI32 ,
208
208
isIdentifier ,
209
- accuratePow64 ,
210
209
v128_zero ,
211
210
v128_ones ,
211
+ accuratePow64 ,
212
212
} from "./util" ;
213
213
214
214
import {
@@ -5129,7 +5129,7 @@ export class Compiler extends DiagnosticEmitter {
5129
5129
let leftValue = getConstValueF32 ( leftExpr ) ;
5130
5130
let rightValue = getConstValueF32 ( rightExpr ) ;
5131
5131
this . currentType = type ;
5132
- return module . f32 ( f32 ( accuratePow64 ( leftValue , rightValue ) ) ) ;
5132
+ return module . f32 ( f32 ( Math . pow ( leftValue , rightValue ) ) ) ;
5133
5133
}
5134
5134
}
5135
5135
let instance = this . f32PowInstance ;
Original file line number Diff line number Diff line change @@ -11,15 +11,11 @@ export function isPowerOf2(x: i32): bool {
11
11
export function accuratePow64 ( x : f64 , y : f64 ) : f64 {
12
12
if ( ! ASC_TARGET ) { // ASC_TARGET == JS
13
13
// Engines like V8, WebKit and SpiderMonkey uses powi fast path if exponent is integer
14
- // This speculative optimization leads to loose precisions like 10 ** 208 != 1e208
15
- // or/and 10 ** -5 != 1e-5 anymore. For avoid this behaviour we are forcing exponent
14
+ // This speculative optimization leads to loose precisions like 10 ** -5 != 1e-5 anymore.
15
+ // For avoid this behaviour we are forcing exponent
16
16
// to fractional form and compensate this afterwards.
17
- if ( isFinite ( y ) && Math . abs ( y ) >= 2 && Math . trunc ( y ) == y ) {
18
- if ( y < 0 ) {
19
- return Math . pow ( x , y + 0.5 ) / Math . pow ( x , 0.5 ) ;
20
- } else {
21
- return Math . pow ( x , y - 0.5 ) * Math . pow ( x , 0.5 ) ;
22
- }
17
+ if ( isFinite ( y ) && y <= 2 && Math . trunc ( y ) == y ) {
18
+ return Math . pow ( x , y + 0.5 ) / Math . pow ( x , 0.5 ) ;
23
19
}
24
20
}
25
21
return Math . pow ( x , y ) ;
You can’t perform that action at this time.
0 commit comments