Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/system/Basis/Implementation/int32.sml
ViewVC logotype

Diff of /sml/trunk/src/system/Basis/Implementation/int32.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1182, Thu Mar 28 16:41:29 2002 UTC revision 1183, Fri Mar 29 19:09:48 2002 UTC
# Line 18  Line 18 
18    
19      val op *    : int * int -> int  = I32.*      val op *    : int * int -> int  = I32.*
20      val op quot : int * int -> int  = I32.quot      val op quot : int * int -> int  = I32.quot
21        val op rem  : int * int -> int  = I32.rem
22        val op div  : int * int -> int  = I32.div
23        val op mod  : int * int -> int  = I32.mod
24      val op +    : int * int -> int  = I32.+      val op +    : int * int -> int  = I32.+
25      val op -    : int * int -> int  = I32.-      val op -    : int * int -> int  = I32.-
26      val ~       : int -> int = I32.~      val ~       : int -> int = I32.~
# Line 27  Line 30 
30      val op >=   : int * int -> bool = I32.>=      val op >=   : int * int -> bool = I32.>=
31      val op =    : int * int -> bool = I32.=      val op =    : int * int -> bool = I32.=
32      val op <>   : int * int -> bool = I32.<>      val op <>   : int * int -> bool = I32.<>
33        val min     : int * int -> int = I32.min
34    (* min, max, abs, rem, div, and mod should be inlined.      val max     : int * int -> int = I32.max
35     *     ... but this is not the time!      val abs     : int -> int = I32.abs
    *)  
     fun min(a:int, b:int):int = if I32.<(a,b) then a else b  
     fun max(a:int, b:int):int = if I32.>(a,b) then a else b  
     fun op rem(a:int,b:int):int =  I32.-(a, I32.*(b, I32.quot(a, b)))  
     fun abs(a:int):int = if I32.<(a, 0) then I32.~(a) else a  
   
     fun op div(a:int, b:int):int =  
         let val q = I32.quot (a, b)  
         in  
             if I32.>= (q, 0) then q  
             else if I32.= (a, I32.* (q, b)) then q  
             else I32.- (q, 1)  
         end  
   
     fun op mod(a:int, b:int):int =  
         let val q = I32.quot (a, b)  
             val r = I32.- (a, I32.* (q, b))  
         in  
             if I32.>= (q, 0) orelse I32.= (r, 0) then r  
             else I32.+ (r, b)  
         end  
36    
37      fun sign(0) = 0      fun sign(0) = 0
38        | sign i = if I32.<(i, 0) then ~1 else 1        | sign i = if I32.<(i, 0) then ~1 else 1

Legend:
Removed from v.1182  
changed lines
  Added in v.1183

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0