oss-fuzz/projects/apache-commons-math/MathDistanceMeasureFuzzer.java

41 lines
1.5 KiB
Java

import com.code_intelligence.jazzer.api.FuzzedDataProvider;
import java.util.ArrayList;
import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
import org.apache.commons.math4.legacy.ml.distance.CanberraDistance;
import org.apache.commons.math4.legacy.ml.distance.ChebyshevDistance;
import org.apache.commons.math4.legacy.ml.distance.EarthMoversDistance;
import org.apache.commons.math4.legacy.ml.distance.EuclideanDistance;
import org.apache.commons.math4.legacy.ml.distance.ManhattanDistance;
public class MathDistanceMeasureFuzzer {
double m_x0[];
double m_x1[];
public MathDistanceMeasureFuzzer(FuzzedDataProvider fuzzedDataProvider) {
m_x0 = new double[fuzzedDataProvider.consumeInt(1,100)];
m_x1 = new double[fuzzedDataProvider.consumeInt(1,100)];
for (int i = 0; i < m_x0.length; ++i) {
m_x0[i] = fuzzedDataProvider.consumeRegularDouble();
}
for (int i = 0; i < m_x1.length; ++i) {
m_x1[i] = fuzzedDataProvider.consumeRegularDouble();
}
}
void computeDistances() {
try {
new CanberraDistance().compute(m_x0, m_x1);
new ChebyshevDistance().compute(m_x0, m_x1);
new EarthMoversDistance().compute(m_x0, m_x1);
new EuclideanDistance().compute(m_x0, m_x1);
new ManhattanDistance().compute(m_x0, m_x1);
} catch (DimensionMismatchException ex) {
/* documented, ignore */
}
}
public static void fuzzerTestOneInput(FuzzedDataProvider data) {
MathDistanceMeasureFuzzer testClosure = new MathDistanceMeasureFuzzer(data);
testClosure.computeDistances();
}
}