Skip to content

Update TWOPI and PIOVER2 to 39 significant digits (issue #428). Added make.inc for gfortran in quadruple precision #433

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 7, 2020

Conversation

serguei-patchkovskii
Copy link

This resolves #428

Updated values of TWOPI and PIOVER2 to 39 significant digits,
to prevent accuracy loss when REAL or DOUBLE PRECISION types
correspond to an extended precision real kind. These constants
should be sufficient to work with 128-bit extended-IEEE data
type.

In order to fit the constants on a single line, the indent is less than
the default. At least to my eye, this is less visually jarring than splitting
the constant across two lines.

Rebuilding the modified source using the default gfortran make.inc
(with gfortran 7.5.0) does not add any new test failures. The
only test failure, which is also present in the master branch, is:

ZDRGEV3: ZGGEV31 returned INFO= 7.
N= 12, JTYPE= 16, ISEED=( 2855, 3551, 2406, 2393)

Additionally, included a sample build file for quadruple-precision
compilation using gfortran (version 4.7 or later). With this
config file, both REAL and DOUBLE PRECISION are mapped onto
a 128-bit REAL(16) type, with the corresponding change to the
COMPLEX and COMPLEX*16.

With gfortran-7.5.0, there are numerical failure 6 failures for each
type, all in *GBSVX type 6 matrix, with S/D routines losing 4 significant
digits, and C/Z routines 5 digits relative to the expected result.
I am not really qualified to debug this failure ...

to prevent accuracy loss when REAL or DOUBLE PRECISION types
correspond to an extended precision real kind. These constants
should be sufficient to work with 128-bit extended-IEEE data
type.

Rebuilding the modified source using the default gfortran make.inc
(with gfortran 7.5.0) does not add any new test failures. The
only test failure, which is also present in the master baranch, is:

 ZDRGEV3: ZGGEV31 returned INFO=     7.
   N=    12, JTYPE=    16, ISEED=( 2855, 3551, 2406, 2393)

Additionally, included a sample build file for quadruple-precision
compilation using gfortran (version 4.7 or later). With this
config file, both REAL and DOUBLE PRECISION are mapped onto
a 128-bit REAL(16) type, with the corresponding change to the
COMPLEX and COMPLEX*16.

There are numerical failure 6 failures for each type, all in
*GBSVX type 6 matrix, with S/D routines losing 4 significant
digits, and C/Z routines 5 digits relative to the expected
result. I am not really qualified to debug this failure ...
@langou
Copy link
Contributor

langou commented Aug 7, 2020

Thanks @serguei-patchkovskii !

@langou langou merged commit 75611e7 into Reference-LAPACK:master Aug 7, 2020
christoph-conrads pushed a commit to christoph-conrads/lapack that referenced this pull request May 23, 2021
…ue428

Update TWOPI and PIOVER2 to 39 significant digits (issue Reference-LAPACK#428). Added make.inc for gfortran in quadruple precision
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Inconsistent value of Pi in the source
2 participants