Skip to content

Commit 0034888

Browse files
authored
SAK-47892 Upgrading mXparser to 5.1.0 (sakaiproject#10996)
* SAK-47892 Upgrading mXparser to 5.1.0 * SAK-47892 Upgrading mXparser to 5.1.0
1 parent d989bcc commit 0034888

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

master/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2381,7 +2381,7 @@
23812381
<dependency>
23822382
<groupId>org.mariuszgromada.math</groupId>
23832383
<artifactId>MathParser.org-mXparser</artifactId>
2384-
<version>4.4.2</version>
2384+
<version>5.1.0</version>
23852385
<scope>provided</scope>
23862386
</dependency>
23872387
</dependencies>

samigo/samigo-services/src/java/org/sakaiproject/tool/assessment/util/SamigoExpressionParser.java

+4
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@ public String parse(final String new_expr, final int decimals) throws SamigoExpr
8484
try {
8585
e = new Expression(expr);
8686
if (expr.contains("E")) {
87+
mXparser.disableCanonicalRounding();
8788
mXparser.disableUlpRounding();
89+
mXparser.disableAlmostIntRounding();
8890
}
8991
double d = e.calculate();
9092
ans = new BigDecimal(d, MathContext.DECIMAL64);
@@ -94,7 +96,9 @@ public String parse(final String new_expr, final int decimals) throws SamigoExpr
9496
throw new SamigoExpressionError(401, errorMessage);
9597
}
9698
finally {
99+
mXparser.enableCanonicalRounding();
97100
mXparser.enableUlpRounding();
101+
mXparser.enableAlmostIntRounding();
98102
}
99103

100104
GradingService service = new GradingService();

samigo/samigo-services/src/test/org/sakaiproject/tool/assessment/services/GradingServiceTest.java

+33
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,39 @@ public void testCalculationsToValues() throws SamigoExpressionError {
520520
result = gradingService.processFormulaIntoValue("(5e-49) * (6E28)", 2);
521521
Assert.assertNotNull(result);
522522
Assert.assertEquals("3E-20", result);
523+
524+
// Chi-Squared Distribution
525+
result = gradingService.processFormulaIntoValue("pChi2(1.2, 2)", 2);
526+
Assert.assertNotNull(result);
527+
Assert.assertEquals("0.27", result);
528+
result = gradingService.processFormulaIntoValue("cChi2(1.2, 2)", 2);
529+
Assert.assertNotNull(result);
530+
Assert.assertEquals("0.45", result);
531+
result = gradingService.processFormulaIntoValue("qChi2(0.8, 2)", 2);
532+
Assert.assertNotNull(result);
533+
Assert.assertEquals("3.22", result);
534+
535+
// Student's t-distribution
536+
result = gradingService.processFormulaIntoValue("pStud(1.2, 2)", 2);
537+
Assert.assertNotNull(result);
538+
Assert.assertEquals("0.16", result);
539+
result = gradingService.processFormulaIntoValue("cStud(1.2, 2)", 2);
540+
Assert.assertNotNull(result);
541+
Assert.assertEquals("0.82", result);
542+
result = gradingService.processFormulaIntoValue("qStud(0.8, 2)", 2);
543+
Assert.assertNotNull(result);
544+
Assert.assertEquals("1.06", result);
545+
546+
// Snedecor's F distribution
547+
result = gradingService.processFormulaIntoValue("pFSned(1.2, 2, 2)", 2);
548+
Assert.assertNotNull(result);
549+
Assert.assertEquals("0.21", result);
550+
result = gradingService.processFormulaIntoValue("cFSned(1.2, 2, 2)", 2);
551+
Assert.assertNotNull(result);
552+
Assert.assertEquals("0.55", result);
553+
result = gradingService.processFormulaIntoValue("qFSned(0.8, 2, 2)", 2);
554+
Assert.assertNotNull(result);
555+
Assert.assertEquals("4", result);
523556
}
524557

525558
@Test(expected = SamigoExpressionError.class)

0 commit comments

Comments
 (0)