File: elemental_03.f90

package info (click to toggle)
lfortran 0.60.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,416 kB
  • sloc: cpp: 173,406; f90: 80,491; python: 17,586; ansic: 9,610; yacc: 2,356; sh: 1,401; fortran: 895; makefile: 38; javascript: 15
file content (27 lines) | stat: -rw-r--r-- 567 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
program elemental_03

real :: x(2) = [1, 2], y(2) = [1.0, 2.1]
logical :: close(2)
close = is_close(x, y, 1e-9)
print *, close
if (.not. close(1)) error stop
if (close(2)) error stop
close = is_close(x, y)
print *, close
if (.not. close(1)) error stop
if (close(2)) error stop


contains
elemental logical function is_close(a, b, rel_tol) result(close)
real, intent(in) :: a, b
real, intent(in), optional :: rel_tol
if (present(rel_tol)) then
  close = abs(a - b) <= rel_tol
else
    close = abs(a - b) <= 1e-9
end if

end function is_close

end program elemental_03