Changelog of @hackage/factory 0.3.0.0

2011-03-01 Dr. Alistair Ward factory@functionalley.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" & "Factory.Test.Performance.Statistics".
  • Created a new module "Factory.Data.PrimeFactors", and migrated definitions from modules "Factory.Math.PrimeFactorisation" & "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 Hackage.

0.1.0.0

  • Amended the .cabal-file 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 flag "eager-blackholing" in the 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",
    • "Factory.Test.Performance.Hyperoperation".
  • Added the modules
    • "Factory.Math.Primes",
    • "Factory.Math.Implementation.Primes",
    • "Factory.Test.Performance.Primes",
    • "Factory.Test.QuickCheck.Primes"
    • "Factory.Data.PrimeWheel".
  • Added the function Factory.Math.PrimeFactorisation.squareFree.
  • Added rewrite-rules to specialise Factory.Math.Power.isPerfectPower for type-parameter=Int.
  • Recoded module "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 Hackage.

0.1.0.3

  • Qualified Factory.Math.Implementations.Primes.trialDivision with pragma "NOINLINE", 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 module "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 module "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 package "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 module "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 keyword 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 modules "Factory/Math/Summation" & "Factory/Data/PrimeFactors".

0.2.1.1

  • Added Factory.Test.QuickCheck.Probability.prop_logNormalDistributionEqual.
  • Removed pragma INLINE 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 the .cabal-file.
  • 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.

0.2.1.2

  • Hid (<$>) when importing the Prelude into module "src/Factory/Test/QuickCheck/Pi".
  • Added the compiler to the output returned for the command-line option "version".
  • Changed flag "threaded" in the .cabal-file to "manual".
  • Added Default-language-specification to the .cabal-file.
  • Added file "README.markdown".
  • Converted this file to markdown-format.
  • Replaced System.Exit.exitWith (System.Exit.ExitFailure 1) with System.Exit.exitFailure & System.Exit.exitWith System.Exit.ExitSuccess with System.Exit.exitSuccess.
  • Moved the entry-point to the test-suite from module "Main.hs" to "Test.hs", both to integrate with cabal & to minimise the dependencies of the executable.
  • Partitioned the source-files into directories "src-lib", "src-exe", & "src-test", & referenced them individually from the .cabal-file to avoid repeated compilation.
  • Used CPP to control the import of symbols from Control.Applicative.

0.2.2.0

  • Corrected the markdown-syntax in this file.
  • Reverted to calling "error" rather than "Control.Monad.fail", since the String-argument for the latter is discarded in Monad-implementations other than IO.
  • Uploaded to GitHub.
  • Simplified file src-test/Main.hs.
  • Added file .travis.yml to control testing by https://docs.travis-ci.com.
  • Added file .ghci.
  • Replaced use of module ToolShed.Defaultable with Data.Default.
  • Re-code Factory.Test.QuickCheck.Statistics to Data.Array.IArray rather than Data.Array.
  • Added functions Factory.Math.Statistics.getRootMeanSquare Factory.Test.QuickCheck.Statistics.prop_rootMeanSquare.
  • Added function Factory.Test.QuickCheck.Statistics.prop_standardDeviationRMS.
  • Added Eq type-constraint to function Factory.Math.Statistics.getWeightedMean.
  • Tested with ghc-8.0.1.

0.2.2.1

  • Commented-out flakey square-root test.

0.3.0.0

  • Used strictness to improve efficiency of functions getMean, getRootMeanSquare, getWeightedMean & replaced error with Control.Exception.assert, in module Factory.Math.Statistics
  • Replaced 'Data.List.genericLength' with the more efficient @fromIntegral . length@.
  • Removed dependency on Distribution.Package.PackageName.
  • Checked for null-string in Factory.Math.Radix.fromBase.