Skip to content

Commit

Permalink
Merge pull request #19 from ajdawson/prep-4.1.0
Browse files Browse the repository at this point in the history
Prepare for v4.1.0 release.
  • Loading branch information
ajdawson authored Aug 22, 2016
2 parents 0a94821 + feaeca9 commit 279a1d5
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 38 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.1.dev0
4.1.0
5 changes: 2 additions & 3 deletions create-distribution.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ set -e
set -u

# Define the contents of the final archive:
readonly ARCHIVE_CONTENTS=("examples/" "lib/" "LICENSE" "Makefile" \
"modules/" "README.md" "src/" "test/" \
"VERSION")
readonly ARCHIVE_CONTENTS=("lib/" "LICENSE" "Makefile" "modules/" \
"README.md" "src/" "test/" "VERSION")

# Clean the code directory first:
make clean
Expand Down
64 changes: 49 additions & 15 deletions doc/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,35 @@
Changelog
=========


v4.1.x
------

:Release: v4.1.0
:Date: 22 August 2016

Adds an IEEE 754 compliant rounding scheme and new functionality for explicit
handling of literal floating-point values.

* Features

* A new (currently opt-in) IEEE 754 compliant rounding mode, activated by
setting the module variable ``RPE_IEEE_ROUNDING = .true.``. This option is
provided to help manage a transition to IEEE 754 compliant rounding in a
future release. Eventually this option will be removed and IEEE 754
compliant rounding will become the default and only rounding mode.

* A new helper function ``rpe_literal`` is provided to help write correct
reduced-precision code that contains numeric literals.

* Deprecations

* The current rounding mode (round to nearest) is deprecated. Future releases
will use the IEEE 754 compliant rounding mode. Users should set
``RPE_IEEE_ROUNDING = .true.`` to get the new rounding behaviour. We
recommend the IEEE 754 rounding mode to ensure best results.


v4.0.x
------

Expand All @@ -17,10 +46,11 @@ portable and reliable.

* Incompatibilities: This release is not compatible with version 3 or below.

* Removed the `rpe_shadow` derived type.
* Removed abstract base class `rpe_type`, the only user type is now `rpe_var`.
* Removed getter and setter methods, the value of an `rpe_var` instance is now
accessed directly using the `%val` attribute.
* Removed the ``rpe_shadow`` derived type.
* Removed abstract base class ``rpe_type``, the only user type is now
``rpe_var``.
* Removed getter and setter methods, the value of an ``rpe_var`` instance is
now accessed directly using the ``%val`` attribute.


v3.1.x
Expand All @@ -34,7 +64,8 @@ v3.1.x
:Release: v3.1.0
:Date: 16 October 2015

* Support for IEEE half-precision emulation via the `RPE_IEEE_HALF` module variable.
* Support for IEEE half-precision emulation via the ``RPE_IEEE_HALF`` module
variable.


v3.0.x
Expand All @@ -52,22 +83,25 @@ v3.0.x

* Support for different precision levels in different variables:

* You can set the `%sbits` attribute of any `rpe_type` instance to define
the number of significand bits used by that variable.
* You can set the ``%sbits`` attribute of any ``rpe_type`` instance to
define the number of significand bits used by that variable.

* A set of unit tests is included to help us ensure the emulator core is robust.
* A set of unit tests is included to help us ensure the emulator core is
robust.

* HTML documentation is included with the source (requires Sphinx to build).

* Incompatibilities

* This version is incompatible with the v2.0.x series.

* The public API is now smaller, including only the required parts of the library.
* The public API is now smaller, including only the required parts of the
library.

* Module variables renamed: `RPE_BITS` -> `RPE_DEFAULT_SBITS`
* Module variables renamed: ``RPE_BITS`` -> ``RPE_DEFAULT_SBITS``

* Reduction of precision subroutine renamed: `reduce_precision` -> `apply_truncation`
* Reduction of precision subroutine renamed:
``reduce_precision`` -> ``apply_truncation``

* Internal differences to support mixed precision may cause different
results to previous versions.
Expand All @@ -88,14 +122,14 @@ v2.0.x

* Reduce precision on assignment:

* The precision of the value held within an `rpe_type` instance is reduced
whenever a value is assigned, meaning an `rpe_var` instance cannot ever
store a full precision value, and an `rpe_shadow` type will always store
* The precision of the value held within an ``rpe_type`` instance is reduced
whenever a value is assigned, meaning an ``rpe_var`` instance cannot ever
store a full precision value, and an ``rpe_shadow`` type will always store
a reduced precision value when it has been assigned to directly (but one
can of course assign a full precision value to the variable it is
shadowing and have that value retained).

* Explicit calls to `reduce_precision` are no longer required in any
* Explicit calls to ``reduce_precision`` are no longer required in any
overloaded operators or intrinsic routines, as the reduction of precision
will be performed implicitly on assignment of the result.

Expand Down
30 changes: 12 additions & 18 deletions doc/developerguide/code_generator/new_code.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,21 @@ We'll need to add a new entry to the ``intrinsics.json`` file in ``generator/con
{"intrinsics":
[
...
{"epsilon":
{
"return_type": "rpe_var",
"interface_types": ["1argscalar"]
}
},
...
{"floor":
{
"return_type": "integer",
"interface_types": ["1argelemental"]
}
},
...
]
}
Expand All @@ -62,18 +62,12 @@ We can also see that the function should be elemental, meaning it can be applied
Therefore our definition in ``intrinsics.json`` should look like this:

.. code-block:: json
:emphasize-lines: 4-9
{"intrinsics":
[
...
{"gamma":
{
"return_type": "rpe_var"
"interface_types": ["1argelemental"]
}
}
]
{"gamma":
{
"return_type": "rpe_var",
"interface_types": ["1argelemental"]
}
}
Expand Down Expand Up @@ -129,11 +123,11 @@ An operator definition looks like this:

.. code-block:: json
{<name>:
{"<operator-name>":
{
"operator": <operator-symbol>,
"return_type": <return-type>,
"operator_categories": [<categories>]
"operator": "<operator-symbol>",
"return_type": "<return-type>",
"operator_categories": ["<categories>"]
}
}
Expand Down
Binary file added doc/distribution/rpe-4.1.0.tar.gz
Binary file not shown.
1 change: 1 addition & 0 deletions doc/downloads.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Source code downloads for released versions, see the :doc:`changelog` for detail
============================================================= ==================== ================
Filename Summary Released
============================================================= ==================== ================
:download:`rpe-4.1.0.tar.gz </distribution/rpe-4.1.0.tar.gz>` version 4.1.0 source 22 Aug 2016
:download:`rpe-4.0.0.tar.gz </distribution/rpe-4.0.0.tar.gz>` version 4.0.0 source 05 Jan 2016
:download:`rpe-3.1.1.tar.gz </distribution/rpe-3.1.1.tar.gz>` version 3.1.1 source 04 Nov 2015
:download:`rpe-3.0.1.tar.gz </distribution/rpe-3.0.1.tar.gz>` version 3.0.1 source 04 Nov 2015
Expand Down
2 changes: 1 addition & 1 deletion doc/userguide/errors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ This is not allowed:
Compiling this code with `gfortran` will give the following compilation error:

.. code-block:: fortran
.. code-block:: text
TYPE(rpe_var) :: x = 4
1
Expand Down

0 comments on commit 279a1d5

Please sign in to comment.