package checked_oint
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
On This Page
  
  
  An OCaml library for checked integer arithmetic
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
  
    
      checked_oint-1.0.0.tar.gz
    
    
        
    
  
  
  
    
  
  
    
  
        md5=36ea47218cba2e472850378cfe42e961
    
    
  sha512=6bd8de498fbf2a1a769f31301c22811dd08513f0ebfda488ab6b8c6aac55c3a5c73aefeaf80a4fc4d54cab52bd154b48b614ee5c6bc041824f9164db0ca83d6a
    
    
  doc/README.html
checked_oint
checked_oint is an OCaml library for checked integer arithmetic. We support the full set of signed and unsigned integers of bitnesses 8, 16, 32, 64, and 128.
Installation
$ opam install checked_ointUsage
open Checked_oint
let () =
  let x = U8.of_int_exn 50 in
  let y = U8.of_int_exn 70 in
  assert (U8.equal (U8.add_exn x y) (U8.of_int_exn 120));
  assert (Option.is_none (U8.mul x y))You can find the API documentation here.
Implementation
u8,u16,i8, andi16are represented asintinternally.u32andi32(resp.u64andi64) are represented asint32(resp.int64) internally.u128andi128are represented as{ high : int64; low : int64 }internally.- Operations on integers of 8, 16, 32, and 64 bits are implemented primarily in OCaml, save a small amount of C stub functions.
 Operations on 128-bit integers are implemented solely in C.
- We heavily rely on the 
__int128extension by GCC and Clang. 
- We heavily rely on the 
 
Release procedure
- Update the 
versionfield indune-project. - Type 
dune buildto generatechecked_oint.opam. - Update 
CHANGELOG.md. Release the project in GitHub Releases.
- Generate a source code archive and include it in the release: 
git archive HEAD -o checked_oint-<major>.<minor>.<patch>.tar.gz 
- Generate a source code archive and include it in the release: 
 Type
git pull && opam publish.- Specify the correct archive URL and checksums (by running 
md5sumandsha512sumon the archive). 
- Specify the correct archive URL and checksums (by running 
 
On the stability of source code archives
Including the output of git archive is needed because GitHub does not guarantee stability of source code archives. With a static asset, we will always get the same checksum, which is crucial for packaging.
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
  On This Page