@@ -2335,6 +2335,37 @@ function (Namespace, jsnums, codePoint, util, exnStackParser, loader, seedrandom
2335
2335
} , equalityToBool , "equal-now" ) ;
2336
2336
} ;
2337
2337
2338
+ const ROUGH_TOL = jsnums . fromFixnum ( 0.000001 , NumberErrbacks ) ;
2339
+ // JS function from Pyret values to Pyret equality answers
2340
+ function roughlyEqualAlways3 ( left , right ) {
2341
+ if ( arguments . length !== 2 ) { var $a = new Array ( arguments . length ) ; for ( var $i = 0 ; $i < arguments . length ; $i ++ ) { $a [ $i ] = arguments [ $i ] ; } throw thisRuntime . ffi . throwArityErrorC ( [ "equal-always3" ] , 2 , $a , false ) ; }
2342
+ return equal3 ( left , right , EQUAL_ALWAYS , ROUGH_TOL , TOL_IS_REL , /*fromWithin?*/ false ) ;
2343
+ } ;
2344
+ // JS function from Pyret values to Pyret booleans (or throws)
2345
+ function roughlyEqualAlways ( v1 , v2 ) {
2346
+ if ( arguments . length !== 2 ) { var $a = new Array ( arguments . length ) ; for ( var $i = 0 ; $i < arguments . length ; $i ++ ) { $a [ $i ] = arguments [ $i ] ; } throw thisRuntime . ffi . throwArityErrorC ( [ "equal-always" ] , 2 , $a , false ) ; }
2347
+ if ( ( ( typeof v1 === 'number' ) && ( typeof v2 === 'number' ) ) ||
2348
+ ( ( typeof v1 === 'string' ) && ( typeof v2 === 'string' ) ) ||
2349
+ ( ( typeof v1 === 'boolean' ) && ( typeof v2 === 'boolean' ) ) ) {
2350
+ return v1 === v2 ;
2351
+ }
2352
+ return safeCall ( function ( ) {
2353
+ return equal3 ( v1 , v2 , EQUAL_ALWAYS , ROUGH_TOL , TOL_IS_REL , /*fromWithin?*/ false ) ;
2354
+ } , equalityToBool , "roughly-equal-always" ) ;
2355
+ } ;
2356
+ // JS function from Pyret values to Pyret equality answers
2357
+ function roughlyEqualNow3 ( left , right ) {
2358
+ if ( arguments . length !== 2 ) { var $a = new Array ( arguments . length ) ; for ( var $i = 0 ; $i < arguments . length ; $i ++ ) { $a [ $i ] = arguments [ $i ] ; } throw thisRuntime . ffi . throwArityErrorC ( [ "equal-now3" ] , 2 , $a , false ) ; }
2359
+ return equal3 ( left , right , EQUAL_NOW , ROUGH_TOL , TOL_IS_REL , /*fromWithin?*/ false ) ;
2360
+ } ;
2361
+ // JS function from Pyret values to Pyret booleans (or throws)
2362
+ function roughlyEqualNow ( v1 , v2 ) {
2363
+ if ( arguments . length !== 2 ) { var $a = new Array ( arguments . length ) ; for ( var $i = 0 ; $i < arguments . length ; $i ++ ) { $a [ $i ] = arguments [ $i ] ; } throw thisRuntime . ffi . throwArityErrorC ( [ "equal-now" ] , 2 , $a , false ) ; }
2364
+ return safeCall ( function ( ) {
2365
+ return equal3 ( v1 , v2 , EQUAL_NOW , ROUGH_TOL , TOL_IS_REL , /*fromWithin?*/ false ) ;
2366
+ } , equalityToBool , "roughly-equal-now" ) ;
2367
+ } ;
2368
+
2338
2369
// JS function from Pyret values to JS booleans
2339
2370
// Needs to be a worklist algorithm to avoid blowing the stack
2340
2371
function same ( left , right ) {
@@ -5717,6 +5748,12 @@ function (Namespace, jsnums, codePoint, util, exnStackParser, loader, seedrandom
5717
5748
'equal-always3' : makeFunction ( equalAlways3 , "equal-always3" ) ,
5718
5749
'equal-always' : makeFunction ( equalAlways , "equal-always" ) ,
5719
5750
5751
+ 'roughly-equal' : makeFunction ( roughlyEqualAlways , "roughly-equal" ) ,
5752
+ 'roughly-equal-now3' : makeFunction ( roughlyEqualNow3 , "roughly-equal-now3" ) ,
5753
+ 'roughly-equal-now' : makeFunction ( roughlyEqualNow , "roughly-equal-now" ) ,
5754
+ 'roughly-equal-always3' : makeFunction ( roughlyEqualAlways3 , "roughly-equal-always3" ) ,
5755
+ 'roughly-equal-always' : makeFunction ( roughlyEqualAlways , "roughly-equal-always" ) ,
5756
+
5720
5757
'within-abs-now3' : makeFunction ( equalWithinAbsNow3 , "within-abs-now3" ) ,
5721
5758
'within-rel-now3' : makeFunction ( equalWithinRelNow3 , "within-rel-now3" ) ,
5722
5759
'within-abs3' : makeFunction ( equalWithinAbs3 , "within-abs3" ) ,
@@ -5994,6 +6031,11 @@ function (Namespace, jsnums, codePoint, util, exnStackParser, loader, seedrandom
5994
6031
'equal_now' : equalNow ,
5995
6032
'equal_always3' : equalAlways3 ,
5996
6033
'equal_always' : equalAlways ,
6034
+ 'roughly_equal' : roughlyEqualAlways ,
6035
+ 'roughly_equal_now3' : roughlyEqualNow3 ,
6036
+ 'roughly_equal_now' : roughlyEqualNow ,
6037
+ 'roughly_equal_always3' : roughlyEqualAlways3 ,
6038
+ 'roughly_equal_always' : roughlyEqualAlways ,
5997
6039
'combineEquality' : combineEquality ,
5998
6040
5999
6041
'within' : equalWithinRel , //?
0 commit comments