llvm-project/flang/test/Semantics/erfc_scaled.f90
Jean-Didier PAILLEUX bae3577002
[flang] Define ERF, ERFC and ERFC_SCALED intrinsics with Q and D prefix (#125217)
`ERF`, `ERFC` and `ERFC_SCALED` intrinsics prefixed by `Q` and `D` are
missing. Codes such as `CP2K`(https://github.com/cp2k/cp2k) and
`TurboRVB`(https://github.com/sissaschool/turborvb) use these intrinsics
just like defined in the GNU standard and here:
https://www.ibm.com/docs/fr/xl-fortran-aix/16.1.0?topic=reference-intrinsic-procedures
These intrinsics are based on the existing intrinsics but apply a
restriction on the type kind.

- `DERF`, `DERFC` and `DERFC_SCALED` are for double précision only.
- `QERF`, `QERFC` and `QERFC_SCALED` are for quad précision only.
2025-04-01 08:07:26 +02:00

30 lines
1.0 KiB
Fortran

! RUN: not %flang_fc1 -fsyntax-only %s 2>&1 | FileCheck --check-prefix=ERROR %s
function derfc_scaled8_error4(x)
real(kind=8) :: derfc_scaled8_error4
real(kind=4) :: x
derfc_scaled8_error4 = derfc_scaled(x);
! ERROR: Actual argument for 'x=' has bad type or kind 'REAL(4)'
end function derfc_scaled8_error4
function derfc_scaled8_error16(x)
real(kind=8) :: derfc_scaled8_error16
real(kind=16) :: x
derfc_scaled8_error16 = derfc_scaled(x);
! ERROR: Actual argument for 'x=' has bad type or kind 'REAL(16)'
end function derfc_scaled8_error16
function qerfc_scaled16_error4(x)
real(kind=16) :: qerfc_scaled16_error4
real(kind=4) :: x
qerfc_scaled16_error4 = qerfc_scaled(x);
! ERROR: Actual argument for 'x=' has bad type or kind 'REAL(4)'
end function qerfc_scaled16_error4
function qerfc_scaled16_error8(x)
real(kind=16) :: qerfc_scaled16_error8
real(kind=8) :: x
qerfc_scaled16_error8 = qerfc_scaled(x);
! ERROR: Actual argument for 'x=' has bad type or kind 'REAL(8)'
end function qerfc_scaled16_error8