Changelog of @hackage/posit 2022.2.0.0

Changelog for Posit Numbers

posit-2022.2.0.0

  • Updated divide (/) to have one less round operation, previous default was a * recip b, divide two rational numbers then round viaRational2 (/) a b, it sort of fuses the old default, reducing error
  • New flag for Fused Operations applied automatically via rewrite rules --flag posit:do-rewrite
  • Test for Fused Operations stack test posit:test-posit-fusedRewrite, with no fusing
  • Test for Fused Operations stack test posit:test-posit-fusedRewrite --flag posit:do-rewrite, to execute with the rewrite rules for fusing
  • Added several fms or fma functions to asin, acos, asinh, acosh. No apparent change in the elementary functions.
  • User defined rewrite rules seem to work before but break in ghc-9.6.3. I really hope it gets fixed. See: (How Cool is Rulz!)[https://discourse.haskell.org/t/how-cool-is-rulz/7738/9]
  • Added new approxEq function to the AltFloating class
  • Implemented approxEq by converting to the next lower ES and then using the normal (==) function, using a new Prev es type family
  • Added new Prev es type family to the PositF es Constraint Synonym
  • Changed naming in AltFloating to free up the name space and not use greek letters, eps is now machEps, psi is now goldenRatio
  • Removed gamma, sinc, expm1 from AltFloating making way for updates to the Posit Standard in the future for special functions

posit-2022.1.0.0

  • Optimized the Show instance to properly handle the tapered precision
  • Changes to round better
  • Improved accuracy of exp
  • Changed titles of accuracy charts to be more consistant
  • Added test to confirm read.show == id to perhaps optimise the textual representation, and verify that the implementation is sufficent
  • Test round trip with command to run: stack test posit:test-posit-readShowId
  • Added catagory to .cabal file

posit-2022.0.1.4

  • atan 1 :: Posit256 is very slow, added a few precice constants to speed it up
  • Improved accuracy of sin and cos at the extreme positive and negative values

posit-2022.0.1.3

  • Much thanks to @svlc sugesting to link to a raw image rather than an html, and that finaly made the images display on Hackage

posit-2022.0.1.2

  • Another attempt to get the images working

posit-2022.0.1.1

  • Fixed loss of precision bug in some of the Floating instances (exp,sin,cos)
  • Added a Chart test; command to run: stack test posit:test-posit-functions
  • Added test results to the README.md file

posit-2022.0.1.0

  • Added Random and Uniform Instances
  • Uniform provides a uniform distribution over all possible posits, sampling the entire projective real line
  • Random provides a uniform distribution between 0 and 1, sampling the real numbers in that range
  • Example: take 10 (randomRs (1,100) (mkStdGen 2023)) :: [Posit64]
  • Added hypot2, hypot3, hypot4, to the AltFloating class

posit-2022.0.0.1

  • Added PositF constraint synonym to simplify the usage of (PositC es, PositC (Next es)), as is needed for Floating instances
  • More coverage in the test suite for multiple types

posit-2022

  • Added Types (P8, P16, P32, P64, P128, P256) for the Posit Standard 2022 encoding, exponent size = 2, and with nBytes = 2^es
  • Refactored Floating to step up in resolution and then calculate a function, and then round it down to the the lower resolution
  • Added polymorphic Posit es approximations for the Floating class
  • Moved functions used in the test suite to the Test.Algorithms module, to eliminate the do-test flag
  • Since the test flag has been removed the test can be run by: stack test
  • Please forgive the lack of camelCase in some of the Floating functions... I think it reads better this time
  • The Weigh test can be run as a benchmark: stack bench

posit-3.2.0.5

  • Bug fix for mkIntRep to resolve an overflow issue with the fractional part when it rounds up, in anticipation of the 2022 Standard release

posit-3.2.0.4

  • No more Orphan Instances for Storable!
  • Figured out how to resolve the orphan instances problem with newtype, DerivingVia and UndecidableInstances.
  • Added a "weigh" based test to verify the proper size of each Posit type
  • Added a WeighPosit test; command to run: stack test posit:test-posit-weigh
  • Added NFData instance.
  • New GitHub Snapshot of Liquid Haskell makes it work with GHC 9.0.2!

posit-3.2.0.3

  • Made the following changes in anticipation of adding the 2022 Posit Standard:
    • Made the IntN type family non-Injective, and added more visable type applications to help the compiler select the proper types
    • Corrected some bad uses of nBytes @es, with 2^(exponentSize @es), in order to be more general
    • Chagned maxPosRat to match the more general form as described in "Posit Arithmetic" (John L Gustafson, 10 October 2017)
    • Changed lnOf2 to be a long decimal value, in order to be more general
  • Changed Borwein's algorithm, with quintic convergence, to check for a fixed point of both a and s
  • Added Borwein's Quadradic 1985
  • Added Borewein's Cubic

posit-3.2.0.2

  • Added FlexableContexts back in to Posit.hs, a build error occured on GHC-9.2 that didn't occur with GHC-9.0 or GHC-8.10

posit-3.2.0.1

  • Refactored IntN Type Family to be a closed type family instead of an associated type family
  • Refactored IntN constraints to use ConstraintKinds and made that to be a Super Class of PositC to improve the encapsulation the Constraints of the internal implementation
  • Refactored PositC to make use of ConstrainedClassMethods vastly reducing code duplication
  • Eliminated the FlexableContexts Language Extension from Posit.hs Interface, since the InN constraints no longer bleed into that file
  • Added test of Heegner numbers (almost integers)
  • Added test of various Gamma Function approximations
  • Improved function names in the Orphan Instance for Storable ( Word128 )
  • Improved documentation

posit-3.2.0.0

  • Posit Standard 3.2 [Posit Standard] (https://posithub.org/docs/posit_standard.pdf)
  • LiquidHaskell support: stack build --flag posit:do-liquid
  • To run the test suite: stack test --flag posit:do-test
  • To play around: stack repl --flag posit:do-test