[Chapel Merge] Split the Math module into two parts, one of which

Branch: refs/heads/main
Revision: 9fe66a8
Author: lydia-duncan
Link: Split the Math module into two parts, one of which is included by default by lydia-duncan · Pull Request #19849 · chapel-lang/chapel · GitHub
Log Message:

Merge pull request #19849 from lydia-duncan/mathSplit

Split the Math module into two parts, one of which is included by default
[reviewed by @bmcdonald3]

This change splits the Math module into two modules: AutoMath and Math.
The former will continue to be used by default and still contains most of the
symbols in the module. The latter will now require a use statement or import
statement in order to access the symbols within it, and at this time only
contains log1p and logBasePow2 (AutoMath will contain a version of
them that is deprecated and calls these versions under the covers, so that
users relying on them being included by default will get a warning message
instead of just a resolution failure). There were some other symbols that
probably can also be moved, but I never got an explicit acknowledgment so
I will handle them in a separate PR in order to get explicit approval while not
holding up the other symbols.

Note that this does not add deprecation warnings in the Math module,
though qualified access of symbols that previously were in it will now fail.
This is in part due to #19813, but once that is fixed, and the final sorting of
all the Math symbols is determined, we should do so.

Resolves #18989
Relates to #18990 but does not fully address it yet.

Updates the provided online documentation to list both modules instead of just Math. Also fixes a typo in the AutoMath documentation while here.

Updates BigInteger's references to symbols that now live in AutoMath to
explicitly name it.

Updates several tests that were relying on:

  • Math being the location on symbols they are accessing via explicit naming
    (that now live in AutoMath): these tests now use AutoMath as the module
  • Math being included by default: these tests now have an explicit use of
    the Math module in order to access the symbols that are in it.

Also updates the script used to generate the tests that live in
test/library/standard/Math/promotion so that it can handle tests that require
an explicit use and ones that don't. Commits the updated version of the
log1p test as generated by this updated script.

Adds two tests of the deprecation warning when trying to access the
moved functions without a use or import of the Math module.

Passed a full paratest with futures. Double checked the built docs.

Modified Files:
A modules/standard/AutoMath.chpl

A test/deprecated/Math/depLogBasePow2.chpl
A test/deprecated/Math/depLogBasePow2.good
A test/deprecated/Math/log1p.chpl
A test/deprecated/Math/log1p.good
A test/modules/bradc/userInsteadOfStandard/AutoMath.chpl
A test/modules/bradc/userInsteadOfStandard/AutoMath.notest
R test/modules/bradc/userInsteadOfStandard/Math.chpl
R test/modules/bradc/userInsteadOfStandard/Math.notest
M doc/rst/meta/modules/standard.rst
M modules/Makefile
M modules/internal/ChapelStandard.chpl
M modules/standard/BigInteger.chpl
M modules/standard/Math.chpl
M test/chplvis/benchmarks-hpcc/fft-vdb.chpl
M test/compflags/ferguson/print-module-resolution.good
M test/domains/marybeth/test_compare_range.good
M test/library/standard/Math/bradc/log4.chpl
M test/library/standard/Math/bradc/math32bits.chpl
M test/library/standard/Math/log-ints.chpl
M test/library/standard/Math/log1p.chpl
M test/library/standard/Math/promotion/generate_tests/make_promotion_tests.py
M test/library/standard/Math/promotion/log1p.chpl
M test/modules/bradc/printModStuff/foo.good
M test/modules/bradc/userInsteadOfStandard/foo2.chpl
M test/modules/bradc/userInsteadOfStandard/foo2.good
M test/modules/engin/pkg_module_res.chpl
M test/optimizations/deadCodeElimination/elliot/countDeadModules.good
M test/performance/compiler/bradc/fft-timecomp.chpl
M test/release/examples/benchmarks/hpcc/fft.chpl
M test/studies/comd/elegant/arrayOfStructs/util/EAM.chpl
M test/studies/comd/elegant/arrayOfStructs/util/Simulation.chpl
M test/studies/hpcc/FFT/diten/fft.chpl
M test/users/vass/div-ceil-on-more-int-types.bad

Compare: https://github.com/chapel-lang/chapel/compare/bf9c9fd0d2bb...9fe66a80d82a