Changelog¶
v5.0.x¶
Release: | v5.0.0 |
---|---|
Date: | 20 September 2016 |
- Change summary
- The default value for
RPE_DEFAULT_SBITS
has changed to 52, previously it was 23. This change means that by default allrpe_var
types behave like double precisionreal
types. - The upper limit for the value of an IEEE half-precision number has been
corrected to 65504. This value was previously too small (32768) resulting
in an over-conservative representation of IEEE half-precision values. This
change only affects code running with the
RPE_IEEE_HALF
option turned on. - The
huge
intrinsic has been reimplemented forrpe_var
types. It now returns the largest value with an 11-bit exponent and the number of significand bits in its input. It also behaves correctly when using a 10-bit significand andRPE_IEEE_HALF = .true.
, returning the largest number with a 5-bit exponent and 10-bit significand (65504).
- The default value for
- Incompatibilities
- The rounding mode has changed to be compliant with IEEE 754. The new mode
will likely give different (but more realistic) results. The new behaviour
is the same as that obtained in v4.1 with the option
RPE_IEEE_ROUNDING = .true.
. - The option
RPE_IEEE_ROUNDING
has been removed, the new rounding behaviour is equivalent toRPE_IEEE_ROUNDING = .true.
. There is no option to change to the behaviour ofRPE_IEEE_ROUNDING = .false.
.
- The rounding mode has changed to be compliant with IEEE 754. The new mode
will likely give different (but more realistic) results. The new behaviour
is the same as that obtained in v4.1 with the option
v4.1.x¶
Release: | v4.1.1 |
---|---|
Date: | 24 August 2016 |
Add deprecation notices to API documentation. There are no changes to the source code and no need to upgrade from v4.1.0.
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.
- A new (currently opt-in) IEEE 754 compliant rounding mode, activated by
setting the module variable
- 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.
- The current rounding mode (round to nearest) is deprecated. Future releases
will use the IEEE 754 compliant rounding mode. Users should set
v4.0.x¶
Release: | v4.0.0 |
---|---|
Date: | 5 January 2016 |
This release is a major overhaul of the code with the aim of making it more portable and reliable.
- Features
- Compatible with Intel Fortran compilers. The code may work with other compilers too, but only Intel and GNU are tested currently.
- 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 nowrpe_var
. - Removed getter and setter methods, the value of an
rpe_var
instance is now accessed directly using the%val
attribute.
- Removed the
v3.1.x¶
Release: | v3.1.1 |
---|---|
Date: | 3 November 2015 |
- License code under the Apache 2.0 license.
Release: | v3.1.0 |
---|---|
Date: | 16 October 2015 |
- Support for IEEE half-precision emulation via the
RPE_IEEE_HALF
module variable.
v3.0.x¶
Release: | v3.0.1 |
---|---|
Date: | 4 November 2015 |
- License code under the Apache 2.0 license.
Release: | v3.0.1 |
---|---|
Date: | 21 August 2015 |
- Features
- Support for different precision levels in different variables:
- You can set the
%sbits
attribute of anyrpe_type
instance to define the number of significand bits used by that variable.
- You can set the
- 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).
- Support for different precision levels in different variables:
- 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.
- Module variables renamed:
RPE_BITS
->RPE_DEFAULT_SBITS
- Reduction of precision subroutine renamed:
reduce_precision
->apply_truncation
- Internal differences to support mixed precision may cause different results to previous versions.
v2.0.x¶
Release: | 2.0.1 |
---|---|
Date: | 3 November 2015 |
- License code under the Apache 2.0 license.
Release: | 2.0.0 |
---|---|
Date: | 29 July 2015 |
- Features
- Reduce precision on assignment:
- The precision of the value held within an
rpe_type
instance is reduced whenever a value is assigned, meaning anrpe_var
instance cannot ever store a full precision value, and anrpe_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 overloaded operators or intrinsic routines, as the reduction of precision will be performed implicitly on assignment of the result.
- The precision of the value held within an
- Reduce precision on assignment:
- Incompatibilities
- The change from explicit reduction of precision within overloaded operators and intrinsics will likely cause the emulator to return different results than the v1.0.x series.
v1.0.x¶
Release: | v1.0.1 |
---|---|
Date: | 4 November 2015 |
- License code under the Apache 2.0 license.
Release: | 1.0.0 |
---|---|
Date: | 28 July 2015 |
- Features
- Initial version used operationally for experiments.