Nick Bowler [Wed, 13 Oct 2010 22:38:58 +0000 (13 18:38 -0400)]
fenv: Add an example program to show problems with forkIO.
Nick Bowler [Wed, 13 Oct 2010 22:38:54 +0000 (13 18:38 -0400)]
fenv: Add appropriate #ifdef's to rounding direction helpers.
An implementation need not support all of the rounding modes, so only
compile in support for those that are available.
Nick Bowler [Wed, 13 Oct 2010 22:38:48 +0000 (13 18:38 -0400)]
fenv: Separate exception testing from environment save/restore.
Nick Bowler [Wed, 24 Feb 2010 03:13:19 +0000 (23 22:13 -0500)]
floating: Add a Sortable constraint for PrimFloat.
Every instance of this class should be sortable, thus we don't need to
pollute type signatures elsewhere.
Nick Bowler [Wed, 24 Feb 2010 02:38:09 +0000 (23 21:38 -0500)]
floating: Add a new Data.Floating.Types module.
This module combines all the modules under it, which are no longer
exposed.
Nick Bowler [Wed, 24 Feb 2010 01:41:47 +0000 (23 20:41 -0500)]
trivial: Remove redundant imports and pointless variables.
The dependency graph is bad enough right now as it is, removing redunant
imports should help a bit.
Nick Bowler [Wed, 24 Feb 2010 00:54:59 +0000 (23 19:54 -0500)]
roundable: Split out the Roundable class.
This class, by itself, is not really a floating point thing. Move it
into its own module.
Nick Bowler [Wed, 24 Feb 2010 00:51:28 +0000 (23 19:51 -0500)]
poset: Add fixity declarations.
Nick Bowler [Tue, 23 Feb 2010 23:41:50 +0000 (23 18:41 -0500)]
floating: Move Data.Floating.CMath.Instances under Data.Floating.Types.
Part of a massive cleanup of altfloat's module layout.
Nick Bowler [Tue, 23 Feb 2010 23:41:19 +0000 (23 18:41 -0500)]
floating: Merge Data.Floating.Types and Data.Floating.Classes.
The module dependency graph of altfloat has become too complicated for
mere humans to understand. This is the first part of a massive cleanup.
Nick Bowler [Tue, 23 Feb 2010 23:34:02 +0000 (23 18:34 -0500)]
fenv: Add support for suppressing exceptions across a computation.
Nick Bowler [Sun, 21 Feb 2010 04:42:02 +0000 (20 23:42 -0500)]
floating: Add epsilon to the RealFloat class.
Nick Bowler [Sat, 20 Feb 2010 23:52:38 +0000 (20 18:52 -0500)]
cmath: Fix bad typo in atan2 and atan2f.
We were actually calling atan and atanf, causing horrible problems.
Nick Bowler [Sat, 20 Feb 2010 23:26:02 +0000 (20 18:26 -0500)]
complex: Add initial complex support.
Nick Bowler [Sat, 20 Feb 2010 23:17:00 +0000 (20 18:17 -0500)]
cmath: Fix section headings to match the C standard.
Nick Bowler [Sat, 20 Feb 2010 19:46:24 +0000 (20 14:46 -0500)]
floating: Add instances for CDouble and CFloat.
Nick Bowler [Sat, 20 Feb 2010 17:03:06 +0000 (20 12:03 -0500)]
floating: Fix off-by-one error in scaleRational.
2^52 is 53 bits wide.
Nick Bowler [Fri, 19 Feb 2010 22:48:49 +0000 (19 17:48 -0500)]
floating: Split out formatting from the Double module.
Nick Bowler [Fri, 19 Feb 2010 22:47:59 +0000 (19 17:47 -0500)]
floating: Make fromRational work properly.
The current implementation of fromRational (for both floating types) is
a simple floating point division, which does not work correctly when
either the numerator or the denominator cannot be represented exactly.
We do a correct conversion by scaling the rational by a power of two to
get a large integer that makes maximum use of the available precision.
Since such an integer is exactly representable, we can use scalb to get
the actual value.
Nick Bowler [Fri, 19 Feb 2010 22:38:44 +0000 (19 17:38 -0500)]
floating: Add scalb as the altfloat version of scalbln.
I don't think this function is really useful in the context of
manipulating the floating point environmnent, so it is in the
PrimFloat class. Move logb down there too, since they're a pair.
Nick Bowler [Fri, 19 Feb 2010 05:05:58 +0000 (19 00:05 -0500)]
floating: Add another characteristic function and generalize types.
Nick Bowler [Thu, 18 Feb 2010 23:37:50 +0000 (18 18:37 -0500)]
floating: Add some floating point characteristic functions.
Nick Bowler [Fri, 12 Feb 2010 02:35:41 +0000 (11 21:35 -0500)]
floating: Punt the FFI newtype wrappers.
Newtypes aren't supposed to change underlying representation, so they
should be unnecessary. Indeed, things still seem to work without them.
Nick Bowler [Sat, 6 Feb 2010 04:42:11 +0000 (5 23:42 -0500)]
altfloat-0.3
Nick Bowler [Fri, 5 Feb 2010 23:17:11 +0000 (5 18:17 -0500)]
doc: Add haddock documentation for the RealFloat class.
Nick Bowler [Fri, 5 Feb 2010 23:13:23 +0000 (5 18:13 -0500)]
floating: Rename tgamma to gamma.
The name "tgamma" is historical legacy due to older systems having
already used the name "gamma". Since altfloat has no such legacy, we
don't need such silliness.
Nick Bowler [Fri, 5 Feb 2010 20:02:29 +0000 (5 15:02 -0500)]
floating: Move the Double and Float modules.
Nick Bowler [Fri, 5 Feb 2010 17:18:53 +0000 (5 12:18 -0500)]
floating: Use nearbyint instead of round in fquotRem.
The remainder function rounds halfway values to even, while the round
function rounds halfway values away from zero. This is obviously wrong,
so use nearbyint which also rounds halfway to even, at least in the
pure case.
In the FEnv case, changing the rounding mode now affects the quotient,
which is probably wrong. So this change probably just trades an old
bug for a new, less important one.
Nick Bowler [Fri, 5 Feb 2010 17:09:46 +0000 (5 12:09 -0500)]
floating: Add rint function to complement nearbyint.
Nick Bowler [Fri, 5 Feb 2010 15:23:45 +0000 (5 10:23 -0500)]
examples: Add a demonstration of why FEnv is still dangerous.
Nick Bowler [Fri, 5 Feb 2010 15:22:07 +0000 (5 10:22 -0500)]
fenv: Add support for raising exceptions explicitly.
Nick Bowler [Fri, 5 Feb 2010 15:13:41 +0000 (5 10:13 -0500)]
cfloat: Use FE_ALL_EXCEPT instead of -1.
Nick Bowler [Tue, 2 Feb 2010 04:17:32 +0000 (1 23:17 -0500)]
compat: Make an effort to support fma properly.
Perform arithmetic as the long double type in the hopes that there is
extra precision with which to compute the correct answer.
Nick Bowler [Tue, 2 Feb 2010 01:41:48 +0000 (1 20:41 -0500)]
floating: Punt the class version of C's remquo function.
This function is not very Haskell-ish, and any performance benefits are
likely lost in the ugly FFI wrapper. If anyone cares, they can still
use the binding in Data.Floating.CMath themselves.
Nick Bowler [Tue, 2 Feb 2010 01:30:12 +0000 (1 20:30 -0500)]
floating: Add a separate class for the basic floating types.
This makes the RealFloat instance for FEnv less horrible. Once complex
numbers are added, this will also prevent one from packing FEnv values
into a Complex.
Nick Bowler [Sun, 31 Jan 2010 20:26:57 +0000 (31 15:26 -0500)]
compat: Add note to source file about non-conformance.
Make it clear that these functions really are not an appropriate
replacement for a proper C99 math library.
Nick Bowler [Sat, 30 Jan 2010 16:28:15 +0000 (30 11:28 -0500)]
doc: Acknowledge the existence of floating point environment access.
Also fix comment about multi-threaded programs.
Nick Bowler [Thu, 28 Jan 2010 19:58:56 +0000 (28 14:58 -0500)]
compat: Implement wrappers for C99 float-valued functions.
Nick Bowler [Thu, 28 Jan 2010 19:58:35 +0000 (28 14:58 -0500)]
build: Fix build type in cabal file.
Nick Bowler [Thu, 28 Jan 2010 14:18:05 +0000 (28 09:18 -0500)]
compat: Add configure warning when replacements are used.
Nick Bowler [Thu, 28 Jan 2010 02:16:49 +0000 (27 21:16 -0500)]
cfloat: Add compatibility wrappers for some C99 functions.
It was reported that some C99 math functions are not present on FreeBSD.
Some of those functions can be implemented "well enough" fairly easily,
and whether or not to build them can be controlled by autoconf.
These implementations are very simple, and in some cases don't satisfy
the all the requirements of the C99 standard.
Nick Bowler [Thu, 28 Jan 2010 13:42:19 +0000 (28 08:42 -0500)]
build: Add source repository to cabal file.
Nick Bowler [Thu, 28 Jan 2010 04:46:50 +0000 (27 23:46 -0500)]
fenv: Add explicit definitions for infinity, nan and pi.
The default definitions of infinity and nan raise exceptions.
Nick Bowler [Thu, 28 Jan 2010 04:40:33 +0000 (27 23:40 -0500)]
fenv: Fix embarrassing typo in the Fractional instance.
Nick Bowler [Thu, 28 Jan 2010 04:39:38 +0000 (27 23:39 -0500)]
fenv: Re-export Control.Applicative since users need it.
Nick Bowler [Thu, 28 Jan 2010 03:59:09 +0000 (27 22:59 -0500)]
floating: Add exception support to fenvEval.
Nick Bowler [Thu, 28 Jan 2010 03:36:01 +0000 (27 22:36 -0500)]
license: Fix copyright years in source files.
Nick Bowler [Thu, 28 Jan 2010 00:25:13 +0000 (27 19:25 -0500)]
floating: Use a strict data constructor for FEnv.
This seems a bit more natural than using seq in the definition of pure.
Nick Bowler [Thu, 28 Jan 2010 00:10:44 +0000 (27 19:10 -0500)]
floating: Add initial support for floating point exceptions.
Nick Bowler [Wed, 27 Jan 2010 13:55:07 +0000 (27 08:55 -0500)]
floating: Add nearbyint to the RealFloat class.
This is meaningful now that we have support for changing the rounding
mode.
Nick Bowler [Wed, 27 Jan 2010 06:09:42 +0000 (27 01:09 -0500)]
build: Update cabal dependency information for GHC 6.12.
GHC 6.12 has split the integer package into two: integer-gmp and
integer-simple. We can build with any one of these packages since we
only use one bloody function from them.
Nick Bowler [Wed, 27 Jan 2010 06:05:50 +0000 (27 01:05 -0500)]
float: Remove use of decodeFloatInteger.
The new integer packages in GHC 6.12 have removed this function,
presumably because an Int# is sufficient for storing the components of a
Float. Use decodeFloat_Int# instead.
Nick Bowler [Wed, 27 Jan 2010 06:02:26 +0000 (27 01:02 -0500)]
floating: Use bang patterns for unlifted bindings.
GHC 6.12 complains very loudly if we do not have these, and claims that
it will be an error to omit them in 6.14.
Nick Bowler [Wed, 27 Jan 2010 06:00:58 +0000 (27 01:00 -0500)]
cfloat: remove INCLUDE pragmas as GHC 6.12 hates them.
Nick Bowler [Wed, 27 Jan 2010 04:38:26 +0000 (26 23:38 -0500)]
build: Add missing Data.Floating.Float to cabal file.
Nick Bowler [Wed, 27 Jan 2010 04:36:39 +0000 (26 23:36 -0500)]
floating: Add initial support for the floating point environment.
Nick Bowler [Tue, 26 Jan 2010 01:01:56 +0000 (25 20:01 -0500)]
build: Add homepage.
Nick Bowler [Mon, 25 Jan 2010 23:56:02 +0000 (25 18:56 -0500)]
cfloat: Generalize double_format to allow specifying precision.
Nick Bowler [Mon, 25 Jan 2010 23:34:04 +0000 (25 18:34 -0500)]
float: Add class instances for Float.
Now that the interface for Double seems to be pinned down, we can fill
in the blanks for Float.
Nick Bowler [Mon, 25 Jan 2010 22:57:30 +0000 (25 17:57 -0500)]
cmath: Add bindings for float-valued functions.
Nick Bowler [Thu, 21 Jan 2010 20:53:52 +0000 (21 15:53 -0500)]
altfloat-0.2
Nick Bowler [Thu, 21 Jan 2010 21:03:56 +0000 (21 16:03 -0500)]
license: Add missing copyright headers.
Nick Bowler [Thu, 21 Jan 2010 20:49:40 +0000 (21 15:49 -0500)]
doc: Add rationale behind the Roundable class.
Nick Bowler [Thu, 21 Jan 2010 20:48:41 +0000 (21 15:48 -0500)]
doc: Fix oops in description of Ord class.
Nick Bowler [Wed, 20 Jan 2010 21:04:37 +0000 (20 16:04 -0500)]
poset: Add commutativity note for max and min.
Nick Bowler [Wed, 20 Jan 2010 14:52:18 +0000 (20 09:52 -0500)]
poset: Rename isSignificant to isOrdered.
Nick Bowler [Wed, 20 Jan 2010 14:50:09 +0000 (20 09:50 -0500)]
doc: Move library description to a better home.
The cabal file is a much more appropriate place than the
Data.Floating.Types module. It will appear on the index page of haddock
documentation and on the library's description page on hackage.
Nick Bowler [Tue, 19 Jan 2010 21:28:42 +0000 (19 16:28 -0500)]
build: Hackage-ify the cabal file.
Hackage does not like BSD2, so use OtherLicense. Also specify an
explicit version of base.
Nick Bowler [Thu, 24 Dec 2009 04:59:43 +0000 (23 23:59 -0500)]
floating: Add Roundable instance for Integral a => Ratio a.
Nick Bowler [Thu, 24 Dec 2009 04:59:43 +0000 (23 23:59 -0500)]
poset: Add instance for Integral a => Ratio a.
Nick Bowler [Thu, 24 Dec 2009 04:59:43 +0000 (23 23:59 -0500)]
doc: Minor haddock markup fix.
Nick Bowler [Thu, 24 Dec 2009 04:59:43 +0000 (23 23:59 -0500)]
double: Add an Enum instance.
Nick Bowler [Thu, 24 Dec 2009 04:59:43 +0000 (23 23:59 -0500)]
floating: Add a class which supports rounding functions.
Nick Bowler [Thu, 24 Dec 2009 04:59:43 +0000 (23 23:59 -0500)]
floating: Fix broken isFinite implementation.
Zero is finite too, too.
Nick Bowler [Mon, 23 Nov 2009 00:34:03 +0000 (22 19:34 -0500)]
floating: Get rid of the extra Instances module.
Now that we've killed IncoherentInstances, the Poset and Sortable
instances for Double can go back where they belong.
Nick Bowler [Mon, 23 Nov 2009 00:29:17 +0000 (22 19:29 -0500)]
poset: Remove IncoherentInstances and define our own Ord class.
The "every Ord is a Poset" logic turned out to cause major problems when
trying to define instances of a class such as
class Poset a => Fooable a.
The result was that the type checker still tried to find an Ord instance
even when a Poset instance was available.
So we flip the logic around and create our own Ord class, then say
"Every instance of Ord is an instance of Prelude.Ord". This means we
need to manually add Poset instances for everything, but it should solve
most issues.
Nick Bowler [Sat, 21 Nov 2009 03:20:16 +0000 (20 22:20 -0500)]
poset: Use IncoherentInstances to resolve overlaps.
The Ord instances for Poset are causing major problems with overlapping.
Adding IncoherentInstances on all the other Poset instances seems to
work, at least for now. It remains to be seen whether or not the
"Every Ord is a Poset" idea is actually worth the hassle, or whether
there's a better way to do this.
Creating our own Ord class inside the Poset module and defining our own
instances for it means we don't get to (easily) take advantage of the
very rich libraries built on top of Ord.
Nick Bowler [Sat, 21 Nov 2009 03:19:40 +0000 (20 22:19 -0500)]
floating: Update export lists.
Nick Bowler [Sat, 21 Nov 2009 02:53:48 +0000 (20 21:53 -0500)]
double: Split out foreign declarations into their own module.
Nick Bowler [Fri, 20 Nov 2009 16:47:24 +0000 (20 11:47 -0500)]
doc: Update haddock comments for Data.Poset.
Nick Bowler [Fri, 20 Nov 2009 16:46:44 +0000 (20 11:46 -0500)]
poset: Export the Ord class (but not its methods).
Nick Bowler [Fri, 20 Nov 2009 18:04:18 +0000 (20 13:04 -0500)]
doc: Elaborate on why Ord instances for floating types is a bad idea.
Nick Bowler [Fri, 20 Nov 2009 06:25:27 +0000 (20 01:25 -0500)]
floating: Add fquotRem, the analogue of C's remquo.
Nick Bowler [Fri, 20 Nov 2009 05:52:51 +0000 (20 00:52 -0500)]
floating: Add fma function.
Nick Bowler [Fri, 20 Nov 2009 05:48:08 +0000 (20 00:48 -0500)]
double: Implement specific comparison functions.
Nick Bowler [Fri, 20 Nov 2009 05:47:38 +0000 (20 00:47 -0500)]
double: Remove superfluous parentheses.
Nick Bowler [Fri, 20 Nov 2009 05:18:03 +0000 (20 00:18 -0500)]
build: Update cabal script for distribution.
Nick Bowler [Fri, 20 Nov 2009 05:08:35 +0000 (20 00:08 -0500)]
misc: Fix FFI pragmas.
Nick Bowler [Fri, 20 Nov 2009 04:57:03 +0000 (19 23:57 -0500)]
license: Add copyright and license information.
Nick Bowler [Fri, 20 Nov 2009 04:47:21 +0000 (19 23:47 -0500)]
cfloat: Update cfloat.h.
Nick Bowler [Fri, 20 Nov 2009 04:34:56 +0000 (19 23:34 -0500)]
doc: Add a detailed overview of the purpose of the library.
Nick Bowler [Fri, 20 Nov 2009 04:06:38 +0000 (19 23:06 -0500)]
docs: Update haddock markup and add a trivial function.
Nick Bowler [Fri, 20 Nov 2009 03:54:19 +0000 (19 22:54 -0500)]
double: Add Poset and Sortable instances.
Nick Bowler [Fri, 20 Nov 2009 03:52:22 +0000 (19 22:52 -0500)]
poset: Add a class for partially ordered datatypes.
Nick Bowler [Thu, 19 Nov 2009 16:23:33 +0000 (19 11:23 -0500)]
build: Add an autoconf configure script to determine CFLAGS.
Nick Bowler [Thu, 19 Nov 2009 15:56:48 +0000 (19 10:56 -0500)]
floating: Add description of floating classes.
Nick Bowler [Thu, 19 Nov 2009 15:52:20 +0000 (19 10:52 -0500)]
floating: Add remainder functions.
Nick Bowler [Thu, 19 Nov 2009 15:51:31 +0000 (19 10:51 -0500)]
cfloat: Allow a printf format specifier to be passed explicitly.
Nick Bowler [Thu, 19 Nov 2009 15:20:06 +0000 (19 10:20 -0500)]
double: implement fromInteger using toFloating.
Nick Bowler [Thu, 19 Nov 2009 15:11:03 +0000 (19 10:11 -0500)]
floating: Allow conversion from any Real to Double or Float.