NumericAnnex alternatives and similar libraries
Based on the "Math" category.
Alternatively, view NumericAnnex alternatives based on common mentions on social networks and blogs.

iosMath
A library for displaying beautifully rendered math equations. Enables typesetting LaTeX math formulae in iOS. 
Metron
Metron is a comprehensive collection of geometric functions and types that extend the 2D geometric primitives provided by CoreGraphics. 
VectorMath
A Swift library for Mac and iOS that implements common 2D and 3D vector and matrix functions, useful for games or vectorbased graphics 
SwiftMath
๐ A math framework for Swift. Includes: vectors, matrices, complex numbers, quaternions and polynomials. 
SwiftMathEagle
A general math framework to make using math easy. Currently supports function solving and optimisation, matrix and vector algebra, complex numbers, big int and big frac and general handy extensions and functions. 
Surge
A Swift library that uses the Accelerate framework to provide highperformance functions for matrix math, digital signal processing, and image manipulation.
Get performance insights in less than 4 minutes.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of NumericAnnex or a related project?
README
NumericAnnex
NumericAnnex supplements the numeric facilities provided in the Swift standard library.
Features
 The exponentiation operator
**
and the compound assignment operator**=
.  Extension methods for
BinaryInteger
exponentiation, square root, cube root, greatest common divisor, and least common multiple. Math
, a protocol for signed numeric types that support elementary functions.Real
, a protocol for floatingpoint types that support elementary functions and a selection of special functions.PRNG
, a protocol for pseudorandom number generators.Rational
, a value type to represent rational values which supports division by zero.Complex
, a value type to represent complex values in Cartesian form.Random
andRandom.Xoroshiro
, two reference types implementing efficient pseudorandom number generators.
Note: This project is in the early stages of development and is not productionready at this time.
Requirements
NumericAnnex requires Swift 4.1 (swift4.1branch
) or Swift 4.2 (master
). On
Apple platforms, it also requires the Security framework for cryptographically
secure random bytes.
Installation
After NumericAnnex has been cloned or downloaded locally, build the library
using the command swift build
(macOS) or swift build Xcc D_GNU_SOURCE
(Linux). Run tests with the command swift test
(macOS) or
swift test Xcc D_GNU_SOURCE
(Linux). An Xcode project can be generated with
the command swift package generatexcodeproj
.
To add the package as a dependency using CocoaPods,
insert the following line in your Podfile
:
pod 'NumericAnnex', '~> 0.1.19'
Swift Package Manager can also be used to add the package as a dependency. See Swift documentation for details.
Basic Usage
import NumericAnnex
print(2 ** 3)
// Prints "8".
print(4.0 ** 5.0)
// Prints "1024.0".
print(Int.cbrt(8))
// Prints "2".
print(Double.cbrt(27.0))
// Prints "3.0".
var x: Ratio = 1 / 4
// Ratio is a type alias for Rational<Int>.
print(x.reciprocal())
// Prints "4".
x *= 8
print(x + x)
// Prints "4".
x = Ratio(Float.phi) // Golden ratio.
print(x)
// Prints "13573053/8388608".
var z: Complex64 = 42 * .i
// Complex64 is a type alias for Complex<Float>.
print(Complex.sqrt(z))
// Prints "4.58258 + 4.58258i".
z = .pi + .i * .log(2  .sqrt(3))
print(Complex.cos(z).real)
// Prints "2.0".
Documentation
All public protocols, types, and functions have been carefully documented in the code. See the formatted reference for details.
The project adheres to many design patterns found in the Swift standard library.
For example, Math
types provide methods such as cubeRoot()
and tangent()
just as FloatingPoint
types provide methods such as squareRoot()
.
No free functions are declared in this library unless they overload existing
ones in the Swift standard library. Instead, functions such as cbrt(_:)
and
tan(_:)
are provided as static members. This avoids collisions with C standard
library functions that you may wish to use. It also promotes clarity at the call
site when the result of a complex operation differs from that of its real
counterpart (e.g., Complex128.cbrt(8) != 2
).
Future Directions
 Add more tests, including performance tests
 Design and implement additional methods on
PRNG
License
All original work is released under the MIT license. See LICENSE for details.
Portions of the complex square root and elementary transcendental functions use checks for special values adapted from libc++. Code in libc++ is duallicensed under the MIT and UIUC/NCSA licenses.
*Note that all licence references and agreements mentioned in the NumericAnnex README section above
are relevant to that project's source code only.