Skip to content
New issue

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

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

Already on GitHub? # to your account

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

Closed
Beliavsky opened this issue Mar 18, 2025 · 2 comments · Fixed by #959
Closed

Comments

@Beliavsky
Copy link

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)
@arjenmarkus
Copy link
Member

arjenmarkus commented Mar 18, 2025 via email

@Beliavsky
Copy link
Author

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

@Beliavsky Beliavsky changed the title Simplify code in stdlib_stats_corr.f90 Simplify code with merge in stdlib_stats_corr.f90, stdlib_stats_cov.f90 and other files Mar 18, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants