[
https://issues.apache.org/jira/browse/MATH-1677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ruiqi Dong updated MATH-1677:
-----------------------------
Issue Type: Improvement (was: Bug)
> Inconsistent array cloning in AccurateMathLiteralArrays - loadLnMant()
> returns shallow copy while other load methods return deep copies
> ----------------------------------------------------------------------------------------------------------------------------------------
>
> Key: MATH-1677
> URL: https://issues.apache.org/jira/browse/MATH-1677
> Project: Commons Math
> Issue Type: Improvement
> Affects Versions: 3.6.1
> Reporter: Ruiqi Dong
> Priority: Critical
> Original Estimate: 0.5h
> Remaining Estimate: 0.5h
>
> In the class
> {{{}org.apache.commons.math4.core.jdkmath.AccurateMathLiteralArrays{}}}, the
> method {{loadLnMant()}} returns a shallow copy of the two-dimensional array
> {{{}LN_MANT{}}}, which is inconsistent with the behavior of other load
> methods in the same class. For 2D arrays, {{clone()}} only copies the outer
> array reference, leaving the inner arrays shared between the original and the
> clone. This means modifications to the returned array can affect the original
> constant data.
> Test Case:
> @Test
> voidtestLoadLnMantShallowCopyIssue(){
> // Get first copy
> double[][] firstCopy = AccurateMathLiteralArrays.loadLnMant();
> doubleoriginalValue = firstCopy[0][0];
>
> // Modify the first copy
> firstCopy[0][0] = originalValue + 999.0;
>
> // Get second copy
> double[][] secondCopy = AccurateMathLiteralArrays.loadLnMant();
>
> // This assertion fails - secondCopy contains the modified value
> assertEquals(originalValue, secondCopy[0][0]);
> }
>
> Test Result:
> [*ERROR*] *AccurateMathLiteralArraysTest.testLoadLnMantShallowCopyIssue:169
> expected: <999.0> but was: <1998.0>*
--
This message was sent by Atlassian Jira
(v8.20.10#820010)