@@ -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 ) {
@@ -5679,6 +5710,12 @@ function (Namespace, jsnums, codePoint, util, exnStackParser, loader, seedrandom
5679
5710
'equal-always3' : makeFunction ( equalAlways3 , "equal-always3" ) ,
5680
5711
'equal-always' : makeFunction ( equalAlways , "equal-always" ) ,
5681
5712
5713
+ 'roughly-equal' : makeFunction ( roughlyEqualAlways , "roughly-equal" ) ,
5714
+ 'roughly-equal-now3' : makeFunction ( roughlyEqualNow3 , "roughly-equal-now3" ) ,
5715
+ 'roughly-equal-now' : makeFunction ( roughlyEqualNow , "roughly-equal-now" ) ,
5716
+ 'roughly-equal-always3' : makeFunction ( roughlyEqualAlways3 , "roughly-equal-always3" ) ,
5717
+ 'roughly-equal-always' : makeFunction ( roughlyEqualAlways , "roughly-equal-always" ) ,
5718
+
5682
5719
'within-abs-now3' : makeFunction ( equalWithinAbsNow3 , "within-abs-now3" ) ,
5683
5720
'within-rel-now3' : makeFunction ( equalWithinRelNow3 , "within-rel-now3" ) ,
5684
5721
'within-abs3' : makeFunction ( equalWithinAbs3 , "within-abs3" ) ,
@@ -5956,6 +5993,11 @@ function (Namespace, jsnums, codePoint, util, exnStackParser, loader, seedrandom
5956
5993
'equal_now' : equalNow ,
5957
5994
'equal_always3' : equalAlways3 ,
5958
5995
'equal_always' : equalAlways ,
5996
+ 'roughly_equal' : roughlyEqualAlways ,
5997
+ 'roughly_equal_now3' : roughlyEqualNow3 ,
5998
+ 'roughly_equal_now' : roughlyEqualNow ,
5999
+ 'roughly_equal_always3' : roughlyEqualAlways3 ,
6000
+ 'roughly_equal_always' : roughlyEqualAlways ,
5959
6001
'combineEquality' : combineEquality ,
5960
6002
5961
6003
'within' : equalWithinRel , //?
0 commit comments