File tree Expand file tree Collapse file tree 4 files changed +21
-13
lines changed Expand file tree Collapse file tree 4 files changed +21
-13
lines changed Original file line number Diff line number Diff line change @@ -55,11 +55,14 @@ class Double {
55
55
return new Double ( oneSqr ( a ) ) ;
56
56
}
57
57
static fromString ( s ) {
58
- let isPositive = / ^ \s * - / . exec ( s ) === null ;
59
- s = s . replace ( / ^ \s * [ + - ] ? / , "" ) ;
60
- if ( / I n f i n i t y .* / . exec ( s ) !== null )
58
+ s = s . trim ( ) ;
59
+ let first = s [ 0 ] ;
60
+ let isPositive = first != "-" ;
61
+ if ( first == "+" || first == "-" )
62
+ s = s . slice ( 1 ) ;
63
+ if ( s . includes ( "Infinity" ) )
61
64
return isPositive ? Double . Infinity : Double . neg2 ( Double . Infinity ) ;
62
- let rex = / ^ ( [ 0 - 9 ] * \. ? [ 0 - 9 ] + ) (?: [ e E ] ( [ - + ] ? [ 0 - 9 ] + ) ) ? / . exec ( s ) ;
65
+ let rex = / ^ ( \d * \. ? \d + ) (?: [ e E ] ( [ - + ] ? \d + ) ) ? / . exec ( s ) ;
63
66
if ( ! rex )
64
67
return Double . NaN ;
65
68
let digits = rex [ 1 ] . replace ( "." , "" ) ;
Original file line number Diff line number Diff line change 57
57
return new Double ( oneSqr ( a ) ) ;
58
58
}
59
59
static fromString ( s ) {
60
- let isPositive = / ^ \s * - / . exec ( s ) === null ;
61
- s = s . replace ( / ^ \s * [ + - ] ? / , "" ) ;
62
- if ( / I n f i n i t y .* / . exec ( s ) !== null )
60
+ s = s . trim ( ) ;
61
+ let first = s [ 0 ] ;
62
+ let isPositive = first != "-" ;
63
+ if ( first == "+" || first == "-" )
64
+ s = s . slice ( 1 ) ;
65
+ if ( s . includes ( "Infinity" ) )
63
66
return isPositive ? Double . Infinity : Double . neg2 ( Double . Infinity ) ;
64
- let rex = / ^ ( [ 0 - 9 ] * \. ? [ 0 - 9 ] + ) (?: [ e E ] ( [ - + ] ? [ 0 - 9 ] + ) ) ? / . exec ( s ) ;
67
+ let rex = / ^ ( \d * \. ? \d + ) (?: [ e E ] ( [ - + ] ? \d + ) ) ? / . exec ( s ) ;
65
68
if ( ! rex )
66
69
return Double . NaN ;
67
70
let digits = rex [ 1 ] . replace ( "." , "" ) ;
Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " double.js" ,
3
- "version" : " 1.1.2 " ,
3
+ "version" : " 1.1.3 " ,
4
4
"description" : " Emulated float128 or double-double arithmetic. A floating point expansion with 31 accurate decimal digits." ,
5
5
"main" : " dist/double.js" ,
6
6
"module" : " dist/double.esm.js" ,
Original file line number Diff line number Diff line change @@ -62,10 +62,12 @@ class Double {
62
62
static fromMul11 ( a : float , b : float ) : Double { return new Double ( twoProd ( a , b ) ) ; }
63
63
static fromSqr1 ( a : float ) : Double { return new Double ( oneSqr ( a ) ) ; }
64
64
static fromString ( s : string ) : Double {
65
- let isPositive = ( / ^ \s * - / . exec ( s ) === null ) ;
66
- s = s . replace ( / ^ \s * [ + - ] ? / , '' ) ;
67
- if ( / I n f i n i t y .* / . exec ( s ) !== null ) return ( isPositive ) ? Double . Infinity : Double . neg2 ( Double . Infinity ) ;
68
- let rex = / ^ ( [ 0 - 9 ] * \. ? [ 0 - 9 ] + ) (?: [ e E ] ( [ - + ] ? [ 0 - 9 ] + ) ) ? / . exec ( s ) ;
65
+ s = s . trim ( ) ;
66
+ let first = s [ 0 ]
67
+ let isPositive = first != '-' ;
68
+ if ( first == '+' || first == '-' ) s = s . slice ( 1 ) ;
69
+ if ( s . includes ( 'Infinity' ) ) return ( isPositive ) ? Double . Infinity : Double . neg2 ( Double . Infinity ) ;
70
+ let rex = / ^ ( \d * \. ? \d + ) (?: [ e E ] ( [ - + ] ? \d + ) ) ? / . exec ( s ) ;
69
71
if ( ! rex ) return Double . NaN ;
70
72
71
73
let digits = rex [ 1 ] . replace ( '.' , '' ) ;
You can’t perform that action at this time.
0 commit comments