fortran-lang/stdlib

Simplify code with `merge` in stdlib_stats_corr.f90, stdlib_stats_cov.f90 and other files

Closed this issue · 2 comments

In https://github.com/fortran-lang/stdlib/blob/stdlib-fpm/src/stdlib_stats_corr.f90

I see many lines using merge such as

mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))

I think this can be written as just

mask_ = mask(:, i) .and. mask(:, j)

Using Windows findstr

c:\fortran\public_domain\github\stdlib>findstr -i -s -m /C:"merge(.true., .false." *.f90

gives a list of files where there may be an unnecessary merge:

src\temp\stdlib_math_is_close.f90
src\temp\stdlib_stats_corr.f90
src\temp\stdlib_stats_cov.f90
test\bitsets\test_stdlib_bitset_64.f90
test\bitsets\test_stdlib_bitset_large.f90

The lines are

src\temp\stdlib_math_is_close.f90:            close = merge(.true., .false., equal_nan_ .and. ieee_is_nan(a) .and. ieee_is_nan(b))
src\temp\stdlib_math_is_close.f90:            close = merge(.true., .false., equal_nan_ .and. ieee_is_nan(a) .and. ieee_is_nan(b))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_corr.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_cov.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_cov.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_cov.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_cov.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_cov.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_cov.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_cov.f90:             mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_cov.f90:             mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_cov.f90:              mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_cov.f90:              mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_cov.f90:              mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_cov.f90:              mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_cov.f90:              mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_cov.f90:              mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
src\temp\stdlib_stats_cov.f90:              mask_ = merge(.true., .false., mask(:, i) .and. mask(:, j))
src\temp\stdlib_stats_cov.f90:              mask_ = merge(.true., .false., mask(i, :) .and. mask(j, :))
test\bitsets\test_stdlib_bitset_64.f90:        call check(error, merge(.true., .false., all(log8)), &  ! FIXME
test\bitsets\test_stdlib_bitset_large.f90:        call check(error, merge(.true., .false., all(log8)), &  ! FIXME
test\bitsets\test_stdlib_bitset_large.f90:        call check(error, merge(.true., .false., all(log8)), &  ! FIXME