Changes between Version 4 and Version 5 of InexactEqvWeaver


Ignore:
Timestamp:
11/25/12 19:38:21 (5 years ago)
Author:
cowan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • InexactEqvWeaver

    v4 v5  
    4343== Nontrivial changes in the formulation of `eqv?` since R6RS == 
    4444 
    45 * Nontrivial change: "rational numbers" to "exact numbers" in the clause requiring `#f` if "Obj,,1,, and obj,,2,, are rational numbers for which the `=` procedure returns `#f`." 
     45* '''Nontrivial change''': "rational numbers" to "exact numbers" in the clause requiring `#f` if "Obj,,1,, and obj,,2,, are rational numbers for which the `=` procedure returns `#f`." 
    4646 
    4747  Note: This clause was redundant, but is kept for the case of exact numbers, so that we may restrict our definition of the predicate "operationally equivalent" to inexact numbers only. 
     
    5252    "[...] yield {the same,different} results (in the sense of `eqv?`) when passed as arguments to any other procedure that can be defined as a finite composition of Scheme's standard arithmetic procedures" 
    5353 
    54 * Nontrivial change: Restrict use of the predicate "operationally equivalent" to cases where both arguments are inexact. 
     54* '''Nontrivial change''': Restrict use of the predicate "operationally equivalent" to cases where both arguments are inexact. 
    5555 
    5656* Stylistic change: Move the "same results (in the sense of `eqv?`)" language into the new auxiliary predicate ''substantially different''. 
    5757 
    58 * Significant change: Eliminate the circularity by changing the definition of "substantially different" for two numbers to use `=` instead of `eqv?`. 
     58* '''Significant change''': Eliminate the circularity by changing the definition of "substantially different" for two numbers to use `=` instead of `eqv?`. 
    5959 
    60 * Significant change: Fix the NaN problem by making sure that two numbers can only be substantially different if at least one of them is numerically equal to itself. 
     60* '''Significant change''': Fix the NaN problem by making sure that two numbers can only be substantially different if at least one of them is numerically equal to itself. 
    6161 
    62 * Significant change: Restrict the set of procedures that can be used to construct ''f'', and use the R7RS terminology, changing "Scheme's standard arithmetic procedures" to "the standard numerical operations specified in section 6.2.6" 
     62* '''Significant change''': Restrict the set of procedures that can be used to construct ''f'', and use the R7RS terminology, changing "Scheme's standard arithmetic procedures" to "the standard numerical operations specified in section 6.2.6" 
    6363 
    64 * Significant change: Properly handle the case where `(f z_1)` or `(f z_2)` raise exception(s).  Change "`(f z_1)` and `(f z_2`) yield results that are not substantially different" to "`(f z_1)` and `(f z_2)` either both raise exceptions or yield results that are not substantially different." 
     64* '''Significant change''': Properly handle the case where `(f z_1)` or `(f z_2)` raise exception(s).  Change "`(f z_1)` and `(f z_2`) yield results that are not substantially different" to "`(f z_1)` and `(f z_2)` either both raise exceptions or yield results that are not substantially different." 
    6565 
    66 * Significant change: Make sure that the case where both arguments are NaNs is left unspecified by requiring, in the inexact clauses, that at least one argument is numerically equal to itself. 
     66* '''Significant change''': Make sure that the case where both arguments are NaNs is left unspecified by requiring, in the inexact clauses, that at least one argument is numerically equal to itself. 
    6767 
    6868* Simplification: Remove the redundant check for numerical equality as a prerequisite for `eqv?` returning `#t`. 
     
    7070  Rationale: If ''obj,,1,,'' and ''obj,,2,,'' are not numerically equal (and not both !NaNs), it trivially follows that ''obj,,1,,'' and ''obj,,2,,'' are not operationally equivalent, since `(+ obj_1`) and `(+ obj_2)`are substantially different. 
    7171 
    72 * Significant change: Relax the requirements for returning `#t` for `eqv?` on inexacts to the cases where "the implementation is able to prove" operational equivalence. 
     72* '''Significant change''': Relax the requirements for returning `#t` for `eqv?` on inexacts to the cases where "the implementation is able to prove" operational equivalence. 
    7373 
    7474  We now require only that the "implementations must be able to prove that two inexact numbers with the same internal representation are operationally equivalent.