From 650bafc3e3e7d5f5dd4ae2cf1064a41aae9c37c5 Mon Sep 17 00:00:00 2001 From: Mat-Ge <128398586+Mat-Ge@users.noreply.github.com> Date: Tue, 9 Jul 2024 20:51:55 +0200 Subject: [PATCH] decimalplaces(ex,n) for n=0 or integerp(ex); two test cases --- stack/maxima/assessment.mac | 10 ++++++++-- tests/castext_test.php | 10 +++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/stack/maxima/assessment.mac b/stack/maxima/assessment.mac index e102cdf51..560fc2ef9 100644 --- a/stack/maxima/assessment.mac +++ b/stack/maxima/assessment.mac @@ -735,8 +735,14 @@ decimalplacesfun(ex, n, dispdps) := block([ex2], ex2:ev(float(round(10^n*float(ex))/(10^n)), lg=logbasesimp, simp), if dispdps then ex2:displaydp(ex2, n), return(ex2) - )$ -decimalplaces(ex, n) := decimalplacesfun(ex, n, false)$ +)$ + +decimalplaces(ex, n):= block( + if n=0 then return(round(ex)), + if integerp(ex) then return(ex), + decimalplacesfun(ex, n, false) +)$ + dispdp(ex, n) := block( if not(real_numberp(ex)) then error("dispdp requires a real number argument."), if not(integerp(n)) then error("dispdp cannot create a non-integer number of decimal places."), diff --git a/tests/castext_test.php b/tests/castext_test.php index db009b1f4..421384cfe 100644 --- a/tests/castext_test.php +++ b/tests/castext_test.php @@ -816,12 +816,12 @@ class castext_test extends qtype_stack_testcase { } $cs2 = new stack_cas_session2($s2, null, 0); - $at1 = castext2_evaluatable::make_from_source('{@dispdp(a,2)@}, {@dispdp(b,3)@}, {@dispsf(b,4)@}', 'test-case'); + $at1 = castext2_evaluatable::make_from_source('{@dispdp(a,2)@}, {@dispdp(b,3)@}, {@dispsf(b,4)@}, {@decimalplaces(a,0)@}, {@decimalplaces(1,2)@}', 'test-case'); $this->assertTrue($at1->get_valid()); $cs2->add_statement($at1); $cs2->instantiate(); - $this->assertEquals('\({2.72}\), \({4.000}\), \({4.000}\)', $at1->get_rendered()); + $this->assertEquals('\({2.72}\), \({4.000}\), \({4.000}\), \({3}\), \({1}\)', $at1->get_rendered()); } /** @@ -835,12 +835,12 @@ class castext_test extends qtype_stack_testcase { } $cs2 = new stack_cas_session2($s2, null, 0); - $at1 = castext2_evaluatable::make_from_source('{@dispdp(a,0)*x^2@}, {@dispdp(b,3)@}, {@dispsf(b,4)@}', 'test-case'); + $at1 = castext2_evaluatable::make_from_source('{@dispdp(a,0)*x^2@}, {@dispdp(b,3)@}, {@dispsf(b,4)@}, {@decimalplaces(a,0)@}, {@decimalplaces(1,2)@}', 'test-case'); $this->assertTrue($at1->get_valid()); $cs2->add_statement($at1); $cs2->instantiate(); - $this->assertEquals('\({3\cdot x^2}\), \({-4.000}\), \({-4.000}\)', $at1->get_rendered()); + $this->assertEquals('\({3\cdot x^2}\), \({-4.000}\), \({-4.000}\), \({3}\), \({1}\)', $at1->get_rendered()); } /** @@ -854,7 +854,7 @@ class castext_test extends qtype_stack_testcase { } $cs2 = new stack_cas_session2($s2, null, 0); - $at1 = castext2_evaluatable::make_from_source('{@dispdp(a1,0)*x^2@}, {@dispdp(b,3)@}, {@dispsf(b,4)@}', 'test-case'); + $at1 = castext2_evaluatable::make_from_source('{@dispdp(a1,0)*x^2@}, {@dispdp(b,3)@}, {@dispsf(b,4)@}, {@decimalplaces(a,0)@}, {@decimalplaces(1,2)@}', 'test-case'); $this->assertTrue($at1->get_valid()); $cs2->add_statement($at1); $cs2->instantiate(); -- GitLab