nimber-0.1.4: Finite nimber arithmetic

Copyright© Anders Kaseorg 2013
LicenseBSD-style
MaintainerAnders Kaseorg <andersk@mit.edu>
Stabilityexperimental
PortabilityNon-portable (GHC extensions)
Safe HaskellNone
LanguageHaskell98

Data.Nimber

Description

The finite nimbers, Nimber, are a quadratically closed field of characteristic 2 introduced in combinatorial game theory.

>>> 257 + 258 :: Nimber
*3
>>> sqrt 123456789 :: Nimber
*98433322
>>> 123456789/sqrt 123456789 :: Nimber
*98433322

This implementation was inspired by Patrick Hurst’s slow Haskell implementation that this replaced (with his permission), and by Michel Van den Bergh’s Python implementation at https://web.archive.org/web/20101124110959/http://alpha.uhasselt.be/Research/Algebra/Members/nimbers/nimbers.py.

Synopsis

Documentation

data Nimber Source #

The type of finite nimbers.

Instances
Enum Nimber Source # 
Instance details

Defined in Data.Nimber

Eq Nimber Source # 
Instance details

Defined in Data.Nimber

Methods

(==) :: Nimber -> Nimber -> Bool #

(/=) :: Nimber -> Nimber -> Bool #

Floating Nimber Source #

This partial Floating instance only supports sqrt. All other operations will throw the Innimerable exception.

Instance details

Defined in Data.Nimber

Fractional Nimber Source #

Note: Although nimbers support division, the fromRational operation makes little sense because Rationals are reduced according to ordinary multiplication instead of nimber multiplication.

Instance details

Defined in Data.Nimber

Num Nimber Source # 
Instance details

Defined in Data.Nimber

Ord Nimber Source # 
Instance details

Defined in Data.Nimber

Read Nimber Source # 
Instance details

Defined in Data.Nimber

Show Nimber Source # 
Instance details

Defined in Data.Nimber

fromNimber :: Nimber -> Integer Source #

Convert a Nimber to the corresponding natural number.