Changelog for factory-0.2.1.1
2011-03-01 Dr. Alistair Ward <factory at functionalley dot eu>
0.0.0.1
* First version of the package.
0.0.0.2
* Created the modules; "Factory.Test.QuickCheck.Bounds", "Factory.Math.Implementations.Pi.Borwein.*" and "Factory.Test.Performance.Statistics".
* Created a new module "Factory.Data.PrimeFactors", and migrated definitions from both "Factory.Math.PrimeFactorisation" and "Factory.Math.Implementations.PrimeFactorisation".
* Created the class 'Factory.Math.Factorial.Factorial' and a new module "Factory.Math.Implementations.Factorial".
Moved existing implementation (Bisection) into the new module, with a new implementation (PrimeFactorisation).
* Added the function 'Factory.Math.Summation.sumR'.
* Added a parameter to the functions 'Factory.Math.DivideAndConquer.divideAndConquer' and 'Factory.Data.Bounds.divideAndConquer', to permit asymmetric bisection.
* Added methods to class "Factory.Math.Pi.Algorithm" to permit the retrieval of /Pi/ as a 'Rational' or a 'String'.
* Renamed the function 'Factory.Math.Precision.capPrecision' to 'Factory.Math.Precision.simplify'.
* Removed the module "Factory.Test.Performance.Exponential".
* Removed the function 'Factory.Math.Power.raise', which was no more efficient than ghc's implementation of '(^)'.
* Uploaded to <http://hackage.haskell.org/packages/hackage.html>.
0.1.0.0
* Amended 'factory.cabal' to more correctly specify the dependency on package 'toolshed'.
* Added the module "Factory.Math.Probability".
* Renamed the module "Factory.Data.Bounds" to "Factory.Data.Interval",
and added the functions; 'Factory.Data.Interval.precisely', 'Factory.Data.Interval.shift', 'Factory.Data.Interval.closedUnitInterval'.
* Guarded 'eager-blackholing' flag in /cabal/ file.
0.1.0.1
* Renamed classes "Factory.Math.[Primality, Pi, Factorial, SquareRoot, PrimeFactorisation].Algorithm" to "Factory.Math.[Primality, Pi, Factorial, SquareRoot, PrimeFactorisation].Algorithmic", to distinguish them from the data-types which implement them.
* Added the modules "Factory.Math.Hyperoperation", "Factory.Test.QuickCheck.Hyperoperation" and "Factory.Test.Performance.Hyperoperation".
* Added the modules "Factory.Math.Primes", "Factory.Math.Implementation.Primes", "Factory.Test.Performance.Primes", "Factory.Test.QuickCheck.Primes" and "Factory.Data.PrimeWheel".
* Added the function 'Factory.Math.PrimeFactorisation.squareFree'.
* Added rewrite-rules to specialise 'Factory.Math.Power.isPerfectPower' for type-parameter='Int'.
* Recoded "Factory.Math.Radix" to the interface "Data.Array.IArray.IArray", rather than the data-type "Data.Array.Array".
0.1.0.2
* Added 'Factory.Math.Primes.primorial'.
* Altered 'Factory.Math.Implementations.Primes.trialDivision' to take an integer defining the size of a 'Factory.Data.PrimeWheel', from which candidates are extracted.
* Removed the command-line option 'primesPerformanceGraph', which appears to memoise data from previous tests.
* Uploaded to <http://hackage.haskell.org/packages/hackage.html>.
0.1.0.3
* Qualified 'Factory.Math.Implementations.Primes.trialDivision' with /NOINLINE/ pragma, to block optimization which conflicts with rewrite-rule for 'Factory.Math.Implementations.Primes.sieveOfEratosthenes' !
* Re-coded 'Factory.Data.PrimeWheel.coprimes' and 'Factory.Math.Implementations.Primes.sieveOfEratosthenes', to use a map of lists, rather than a map of lists of lists.
0.2.0.0
* Separately coded the special-case of a 'Factory.Data.PrimeWheel' of size zero, in 'Factory.Math.Implementations.Primes.trialDivision', to achieve better space-complexity.
* Added 'Factory.Data.PrimeWheel.estimateOptimalSize'.
* Split "Factory.Math.Implementations.Primes" into; "Factory.Math.Implementations.Primes.SieveOfEratosthenes", "Factory.Math.Implementations.Primes.TurnersSieve", "Factory.Math.Implementations.Primes.TrialDivision", and added a new module "Factory.Math.Implementations.Primes.SieveOfAtkin". This makes the rewrite-rules less fragile.
* Coded 'Factory.Math.Radix.digitalRoot' more concisely.
* Split "Factory.Math.Power" into an additional module "Factory.Math.PerfectPower".
* Replaced '(+ 1)' and '(- 1)' with the faster calls 'succ' and 'pred'.
* Used 'Paths_factory.version' in 'Main', rather than hard-coding it.
0.2.0.1
* Changed by Lennart Augustsson, to replace "System" with "System.Environment" and "System.Exit", and to remove dependency on "haskell98".
0.2.0.2
* Reacted to new module-hierarchy and addition of method 'ToolShed.SelfValidate.getErrors', in 'toolshed-0.13.0.0'.
* Made 'Factory.Data.Interval.getLength' private.
* Added 'Factory.Data.Interval.mkBounded'.
* Generalised "Factory.Math.Statistics" to accept any 'Data.Foldable.Foldable' 'Functor', rather than merely lists.
0.2.0.3
* Added class 'Show' to some contexts in "Factory.Math.Radix", for migration to 'ghc-7.4'.
0.2.0.4
* Added classes 'Eq' and 'Show' to many contexts, for migration to 'ghc-7.4'.
* Minor re-formatting.
0.2.0.5
* Minor clarification of 'Factory.Math.Implementations.Primality.witnessesCompositeness'.
* Added details to any failure to parse the command-line arguments.
* Defined package's name using program's name, in "Main.hs".
* Added 'Factory.Math.Primes.mersenneNumbers'.
* Replaced use of 'mod' on positive integers, with the faster 'rem', in 'Factory.Math.Implementations.Pi.Spigot.Spigot.processColumns', 'Factory.Math.Implementations.Primality.witnessesCompositeness', 'Factory.Math.Implementations.Primes.TrialDivision.isIndivisibleBy', 'Factory.Math.Implementations.Primes.SieveOfAtkin.polynomialTypeLookup', 'Factory.Math.Implementations.Primes.SieveOfAtkin.findPolynomialSolutions', 'Factory.Math.Implementations.Primes.TurnersSieve.turnersSieve', 'Factory.Math.PerfectPower.maybeSquareNumber'.
* Replaced calls to 'realToFrac' with 'toRational' in; "Factory.Math.Implementations.SquareRoot", 'Factory.Math.Statistics.getDispersionFromMean', 'Factory.Math.SquareRoot.getDiscrepancy', 'Factory.Math.SquareRoot.getAccuracy', to more clearly represent the required operation.
0.2.1.0
* Refactored 'Factory.Test.QuickCheck.QuickChecks'.
* Remove redundant import of 'Data.Ratio' from many modules.
* Refactored 'Factory.Math.Radix.encodes' to make use of 'Data.List.genericLength', & removed empty 'where'.
* Explicitly closed standard-input in the executable.
* Replaced calls to 'error' from inside the IO-monad, with 'Control.Monad.fail'.
* Added function 'Factory.Math.Precision.roundTo'.
* Trapped command-line arguments to which garbage has been appended.
* Corrected the output of 'Main.main.optDescrList.printVersion'.
* Removed the integral population-size parameter from 'Factory.Math.Probability.generateContinuousPopulation' & 'Factory.Math.Probability.generateDiscretePopulation', making the result conceptually infinite.
* Created class 'Factory.Math.Probability.Distribution', to which data-types 'Factory.Math.Probability.ContinuousDistribution' & 'Factory.Math.Probability.DiscreteDistribution' conform.
* Added data-constructors 'Factory.Math.Probability.ExponentialDistribution', 'Factory.Math.Probability.ShiftedGeometricDistribution' & 'Factory.Math.Probability.LogNormal'.
* Added command-line option '--plotDiscreteDistribution' to "Main".
* Removed Preprocessor-check on the version of package 'toolshed', in "Factory/Math/Summation" & "Factory/Data/PrimeFactors".
0.2.1.1
* Added 'Factory.Test.QuickCheck.Probability.prop_logNormalDistributionEqual'.
* Removed /INLINE/ pragma from 'Factory.Math.Implementations.Primes.TrialDivision.isIndivisibleBy', since to be effective it must be called with fully applied parameters (which it isn't).
* Un eta-reduced 'Factory.Math.Power.square', since we want it to be inlined when called with one argument.
* Tested with 'haskell-platform-2013.2.0.0'.
* Replaced preprocessor-directives with 'build-depends' constraints in 'factory.cabal'.
* Added function 'Factory.Math.Statistics.getWeightedMean' & corresponding tests in module "Factory.Test.QuickCheck.Statistics".
* Since '(<$>)' is exported from the Prelude from 'base-4.8', imported "Prelude" hiding '(<*>)' into module "Factory.Data.Monomial", since this symbol is defined locally for other purposes.
* Either replaced instances of '(<$>)' with 'fmap' to avoid ambiguity between "Control.Applicative" & "Prelude" which (from 'base-4.8') also exports this symbol, or hid the symbol when importing the "Prelude"..