From 8fef5bf2a2b9a9f936cb3b4a08cba1d3334ac7f7 Mon Sep 17 00:00:00 2001 From: Bryan Cazabonne Date: Thu, 14 May 2026 20:39:48 +0200 Subject: [PATCH 1/2] Fixed possible heap pollution from parameterized vararg type T --- .../CalculusFieldMultivariateFunction.java | 3 ++- ...CalculusFieldMultivariateMatrixFunction.java | 3 ++- ...CalculusFieldMultivariateVectorFunction.java | 3 ++- .../analysis/FieldMultivariateFunction.java | 3 ++- .../FieldMultivariateMatrixFunction.java | 3 ++- .../FieldMultivariateVectorFunction.java | 3 ++- .../FieldDerivativeStructure.java | 7 ++++--- .../analysis/differentiation/FieldGradient.java | 3 ++- .../differentiation/FieldTaylorMap.java | 3 ++- .../FieldComplexUnivariateIntegrator.java | 4 ++-- .../hipparchus/analysis/FieldFunctionsTest.java | 9 ++++++--- .../FieldDerivativeStructureAbstractTest.java | 17 +++++++++-------- 12 files changed, 37 insertions(+), 24 deletions(-) diff --git a/hipparchus-core/src/main/java/org/hipparchus/analysis/CalculusFieldMultivariateFunction.java b/hipparchus-core/src/main/java/org/hipparchus/analysis/CalculusFieldMultivariateFunction.java index 3596f9a51..fa4b83f8f 100644 --- a/hipparchus-core/src/main/java/org/hipparchus/analysis/CalculusFieldMultivariateFunction.java +++ b/hipparchus-core/src/main/java/org/hipparchus/analysis/CalculusFieldMultivariateFunction.java @@ -32,5 +32,6 @@ public interface CalculusFieldMultivariateFunction> CalculusFieldMultivariateFunction * @param x Point at which the function value should be computed. * @return the value of the function. */ - > T value(@SuppressWarnings("unchecked") T... x); + @SuppressWarnings("unchecked") + > T value(T... x); } diff --git a/hipparchus-core/src/main/java/org/hipparchus/analysis/FieldMultivariateMatrixFunction.java b/hipparchus-core/src/main/java/org/hipparchus/analysis/FieldMultivariateMatrixFunction.java index 96caa4e89..fc69e3668 100644 --- a/hipparchus-core/src/main/java/org/hipparchus/analysis/FieldMultivariateMatrixFunction.java +++ b/hipparchus-core/src/main/java/org/hipparchus/analysis/FieldMultivariateMatrixFunction.java @@ -44,6 +44,7 @@ default > CalculusFieldMultivariateMatrixFunct * @param x Point at which the function value should be computed. * @return the value of the function. */ - > T[][] value(@SuppressWarnings("unchecked") T... x); + @SuppressWarnings("unchecked") + > T[][] value(T... x); } diff --git a/hipparchus-core/src/main/java/org/hipparchus/analysis/FieldMultivariateVectorFunction.java b/hipparchus-core/src/main/java/org/hipparchus/analysis/FieldMultivariateVectorFunction.java index 54ed8b5e1..befbf5660 100644 --- a/hipparchus-core/src/main/java/org/hipparchus/analysis/FieldMultivariateVectorFunction.java +++ b/hipparchus-core/src/main/java/org/hipparchus/analysis/FieldMultivariateVectorFunction.java @@ -44,6 +44,7 @@ default > CalculusFieldMultivariateVectorFunct * @param x Point at which the function value should be computed. * @return the value of the function. */ - > T[] value(@SuppressWarnings("unchecked") T... x); + @SuppressWarnings("unchecked") + > T[] value(T... x); } diff --git a/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructure.java b/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructure.java index 8cb1a11cc..5e5f1408e 100644 --- a/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructure.java +++ b/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructure.java @@ -16,6 +16,8 @@ */ package org.hipparchus.analysis.differentiation; +import java.util.Arrays; + import org.hipparchus.CalculusFieldElement; import org.hipparchus.Field; import org.hipparchus.exception.LocalizedCoreFormats; @@ -26,8 +28,6 @@ import org.hipparchus.util.MathArrays; import org.hipparchus.util.MathUtils; -import java.util.Arrays; - /** Class representing both the value and the differentials of a function. *

This class is similar to {@link DerivativeStructure} except function * parameters and value can be any {@link CalculusFieldElement}.

@@ -944,7 +944,8 @@ public T taylor(final double ... delta) throws MathRuntimeException { * with respect to the lower level parameters used in the \(p_i\) * @since 2.2 */ - public FieldDerivativeStructure rebase(@SuppressWarnings("unchecked") final FieldDerivativeStructure... p) { + @SuppressWarnings("unchecked") + public FieldDerivativeStructure rebase(final FieldDerivativeStructure... p) { MathUtils.checkDimension(getFreeParameters(), p.length); diff --git a/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldGradient.java b/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldGradient.java index e5abb2fd2..d36d09ceb 100644 --- a/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldGradient.java +++ b/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldGradient.java @@ -629,7 +629,8 @@ public T taylor(final double... delta) { * @param delta parameters offsets (Δx, Δy, ...) * @return value of the Taylor expansion at x + Δx, y + Δy, ... */ - public T taylor(@SuppressWarnings("unchecked") final T... delta) { + @SuppressWarnings("unchecked") + public T taylor(final T... delta) { T result = value; for (int i = 0; i < grad.length; ++i) { result = result.add(grad[i].multiply(delta[i])); diff --git a/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldTaylorMap.java b/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldTaylorMap.java index bcfaf75a5..e9ece5816 100644 --- a/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldTaylorMap.java +++ b/hipparchus-core/src/main/java/org/hipparchus/analysis/differentiation/FieldTaylorMap.java @@ -162,7 +162,8 @@ public T[] value(final double... deltaP) { * @param deltaP parameters offsets \((\Delta p_1, \Delta p_2, \ldots, \Delta p_n)\) * @return value of the Taylor expansion at \((p_1 + \Delta p_1, p_2 + \Delta p_2, \ldots, p_n + \Delta p_n)\) */ - public T[] value(@SuppressWarnings("unchecked") final T... deltaP) { + @SuppressWarnings("unchecked") + public T[] value(final T... deltaP) { final T[] value = MathArrays.buildArray(functions[0].getFactory().getValueField(), functions.length); for (int i = 0; i < functions.length; ++i) { value[i] = functions[i].taylor(deltaP); diff --git a/hipparchus-core/src/main/java/org/hipparchus/complex/FieldComplexUnivariateIntegrator.java b/hipparchus-core/src/main/java/org/hipparchus/complex/FieldComplexUnivariateIntegrator.java index bd7609f45..1d3e7b933 100644 --- a/hipparchus-core/src/main/java/org/hipparchus/complex/FieldComplexUnivariateIntegrator.java +++ b/hipparchus-core/src/main/java/org/hipparchus/complex/FieldComplexUnivariateIntegrator.java @@ -79,9 +79,9 @@ public FieldComplex integrate(final int maxEval, final CalculusFieldUnivariat * @param path successive points defining the path vertices * @return the value of integral along the polyline path */ + @SuppressWarnings("unchecked") public FieldComplex integrate(final int maxEval, final CalculusFieldUnivariateFunction> f, - final FieldComplex start, - @SuppressWarnings("unchecked") final FieldComplex...path) { + final FieldComplex start, final FieldComplex...path) { FieldComplex sum = start.newInstance(0); FieldComplex previous = start; for (final FieldComplex current : path) { diff --git a/hipparchus-core/src/test/java/org/hipparchus/analysis/FieldFunctionsTest.java b/hipparchus-core/src/test/java/org/hipparchus/analysis/FieldFunctionsTest.java index 9bd8aed51..9964ffbbe 100644 --- a/hipparchus-core/src/test/java/org/hipparchus/analysis/FieldFunctionsTest.java +++ b/hipparchus-core/src/test/java/org/hipparchus/analysis/FieldFunctionsTest.java @@ -46,7 +46,8 @@ public > T value(T x) { @Test void testScalarMultivariateFunctionConversion() { FieldMultivariateFunction f1 = new FieldMultivariateFunction() { - public > T value(@SuppressWarnings("unchecked") T... x) { + @SuppressWarnings("unchecked") + public > T value(T... x) { return x[0].twice().add(x[1]); } }; @@ -90,7 +91,8 @@ public > T[] value(T x) { @Test void testVectorMultivariateFunctionConversion() { FieldMultivariateVectorFunction f1 = new FieldMultivariateVectorFunction() { - public > T[] value(@SuppressWarnings("unchecked") T... x) { + @SuppressWarnings("unchecked") + public > T[] value(T... x) { T[] y = MathArrays.buildArray(x[0].getField(), 3); y[0] = x[0].add(1); y[1] = x[1].twice(); @@ -146,7 +148,8 @@ public > T[][] value(T x) { @Test void testMatrixMultivariateFunctionConversion() { FieldMultivariateMatrixFunction f1 = new FieldMultivariateMatrixFunction() { - public > T[][] value(@SuppressWarnings("unchecked") T... x) { + @SuppressWarnings("unchecked") + public > T[][] value(T... x) { T[][] y = MathArrays.buildArray(x[0].getField(), 2, 2); y[0][0] = x[0].add(1); y[0][1] = x[1].twice(); diff --git a/hipparchus-core/src/test/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructureAbstractTest.java b/hipparchus-core/src/test/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructureAbstractTest.java index e3826ca80..72e104ba3 100644 --- a/hipparchus-core/src/test/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructureAbstractTest.java +++ b/hipparchus-core/src/test/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructureAbstractTest.java @@ -17,6 +17,13 @@ package org.hipparchus.analysis.differentiation; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.hipparchus.CalculusFieldElement; import org.hipparchus.CalculusFieldElementAbstractTest; import org.hipparchus.Field; @@ -41,13 +48,6 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertSame; @@ -2362,8 +2362,9 @@ final FieldDerivativeStructure[] createBaseVariables(final FDSFactory fact return qDS; } + @SuppressWarnings("unchecked") final FieldDerivativeStructure[] creatIntermediateVariables(final FDSFactory factory, - @SuppressWarnings("unchecked") FieldDerivativeStructure... pBase) { + final FieldDerivativeStructure... pBase) { final FieldDerivativeStructure[] pIntermediate = MathArrays.buildArray(factory.getDerivativeField(), pBase.length); for (int i = 0; i < pBase.length; ++i) { pIntermediate[i] = factory.variable(i, pBase[i].getValue()); From e6aaff3223ee06eb5d49deda78b90004a755101d Mon Sep 17 00:00:00 2001 From: Bryan Cazabonne Date: Thu, 14 May 2026 20:43:30 +0200 Subject: [PATCH 2/2] Typo --- .../FieldDerivativeStructureAbstractTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hipparchus-core/src/test/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructureAbstractTest.java b/hipparchus-core/src/test/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructureAbstractTest.java index 72e104ba3..9aee85773 100644 --- a/hipparchus-core/src/test/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructureAbstractTest.java +++ b/hipparchus-core/src/test/java/org/hipparchus/analysis/differentiation/FieldDerivativeStructureAbstractTest.java @@ -2335,7 +2335,7 @@ private void doTestRebaseValue(final FieldDerivativeStructure[] q, final FieldDerivativeStructure ref = f.value(pBase); // intermediate variables as independent variables - final FieldDerivativeStructure[] pIntermediate = creatIntermediateVariables(factoryP, pBase); + final FieldDerivativeStructure[] pIntermediate = createIntermediateVariables(factoryP, pBase); // function of the intermediate variables final FieldDerivativeStructure fI = f.value(pIntermediate); @@ -2363,8 +2363,8 @@ final FieldDerivativeStructure[] createBaseVariables(final FDSFactory fact } @SuppressWarnings("unchecked") - final FieldDerivativeStructure[] creatIntermediateVariables(final FDSFactory factory, - final FieldDerivativeStructure... pBase) { + final FieldDerivativeStructure[] createIntermediateVariables(final FDSFactory factory, + final FieldDerivativeStructure... pBase) { final FieldDerivativeStructure[] pIntermediate = MathArrays.buildArray(factory.getDerivativeField(), pBase.length); for (int i = 0; i < pBase.length; ++i) { pIntermediate[i] = factory.variable(i, pBase[i].getValue());