-
Notifications
You must be signed in to change notification settings - Fork 21
manudrijvers/amcl
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a fork of github.com/miracl/amcl that allows the go version of amcl to be used as a library. That is, we replaced package main with package amcl and exposed many methods that were not exported. Note that AMCL is largely configure at compile time, and so it doesn't fit the mould for a general purpose library that can be configured at runtime. AMCL is available in 32-bit and 64-bit versions in most languages. Now languages like to remain "standard" irrespective of the underlying hardware. However when it comes to optimal performance, it is impossible to remain architecture-agnostic. If a processor supports 64-bit instructions that operate on 64-bit registers, it will be a waste not to use them. For us this dichotomy is represented by an unwillingness of high-level languages to support a 128-bit integer type, as required to store the product of two 64-bit numbers. More generally what is missing is a commitment to support an integer type twice the length of the processor bit-length To our knowledge only the 64-bit GCC port of C supports such a type - although 128-bit integers are still not part of any C standard. On a positive note we have heard that Rust will support a 128-bit integer type from version 1.17. Hopefully other languages will follow suit. However for now only a kind of pseudo-64-bit support is possible, without plunging into assembly language, which we don't want to do. Nevertheless this pseudo-64-bit code will generally be faster than the 32-bit version of the library when run on a 64-bit processor under control of a 64-bit operating system. On a 32-bit processor the 32-bit version will be best.
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published