packages feed

posit-2022.2.0.2: ChangeLog.md

# Changelog for Posit Numbers

# posit.2022.2.0.2

 * Fixed some of the `liquidhaskell` dependencies in the stack.yaml for your pleasure.
 * For reminders to use LiquidHaskell support: stack build --flag posit:do-liquid

# posit-2022.2.0.1

 * Replaced GHC.Natural with Numeric.Natural
 * Converted the function tests to run concurently for a noice speed up

# 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