From cbfff2d6defc267b07607618268ec35afbc08e81 Mon Sep 17 00:00:00 2001 From: Liam Date: Fri, 18 Apr 2025 02:02:18 -0400 Subject: [PATCH 1/3] Fix `e` built-in computation --- src/environment.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/environment.rs b/src/environment.rs index 2348220..112d01f 100644 --- a/src/environment.rs +++ b/src/environment.rs @@ -1134,7 +1134,11 @@ impl<'src> Environment<'src> { env.add_variable( "e", - Value::Number(BigFloat::from_f64(std::f64::consts::E, config.precision)), + Value::Number(BigFloat::from(1.0).exp( + config.precision, + config.rounding_mode, + &mut Consts::new().unwrap(), + )), ); env.add_variable( From a471d94f23607ffc3755c6a4a40517f52b9d3a86 Mon Sep 17 00:00:00 2001 From: Liam Date: Fri, 18 Apr 2025 02:04:42 -0400 Subject: [PATCH 2/3] Test --- tests/integration.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/integration.rs b/tests/integration.rs index 37357a8..474963d 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -777,7 +777,7 @@ fn natural_logarithm() -> Result { Test::new()? .program("println(ln(e))") .expected_status(0) - .expected_stdout(Contains("0.99999")) + .expected_stdout(Exact("1\n")) .run()?; Test::new()? @@ -818,7 +818,7 @@ fn builtin_variables_and_functions_can_coexist() -> Result { .argument("53") .program("println(e * e(20))") .expected_status(0) - .expected_stdout(Exact("1318815734.4832146271\n")) + .expected_stdout(Exact("1318815734.4832146972\n")) .run() } @@ -837,7 +837,7 @@ fn functions_with_constants() -> Result { .argument("53") .program("println(ln(e * 2))") .expected_status(0) - .expected_stdout(Exact("1.6931471805599452561\n")) + .expected_stdout(Exact("1.6931471805599453094\n")) .run()?; Test::new()? From c11f420cd5b47cedee5c2b410a4512ee4a156181 Mon Sep 17 00:00:00 2001 From: Liam Date: Fri, 18 Apr 2025 02:10:34 -0400 Subject: [PATCH 3/3] Use it --- src/environment.rs | 10 ++++------ tests/integration.rs | 8 ++++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/environment.rs b/src/environment.rs index 112d01f..c90f1a9 100644 --- a/src/environment.rs +++ b/src/environment.rs @@ -1132,18 +1132,16 @@ impl<'src> Environment<'src> { }), ); + let mut consts = Consts::new().unwrap(); + env.add_variable( "e", - Value::Number(BigFloat::from(1.0).exp( - config.precision, - config.rounding_mode, - &mut Consts::new().unwrap(), - )), + Value::Number(consts.e(config.precision, config.rounding_mode)), ); env.add_variable( "pi", - Value::Number(BigFloat::from_f64(std::f64::consts::PI, config.precision)), + Value::Number(consts.pi(config.precision, config.rounding_mode)), ); env.add_variable( diff --git a/tests/integration.rs b/tests/integration.rs index 474963d..954ad2c 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -490,7 +490,7 @@ fn cosecant() -> Result { Test::new()? .program("println(csc(pi/2))") .expected_status(0) - .expected_stdout(Contains("1.00000")) + .expected_stdout(Exact("1\n")) .run()?; Test::new()? @@ -511,7 +511,7 @@ fn secant() -> Result { Test::new()? .program("println(sec(pi/3))") .expected_status(0) - .expected_stdout(Contains("1.99")) // ~2.0000... + .expected_stdout(Exact("2\n")) // ~2.0000... .run() } @@ -829,7 +829,7 @@ fn functions_with_constants() -> Result { .argument("53") .program("println(arc(pi / 4))") .expected_status(0) - .expected_stdout(Exact("0.66577375002835384465\n")) + .expected_stdout(Exact("0.66577375002835386362\n")) .run()?; Test::new()? @@ -845,7 +845,7 @@ fn functions_with_constants() -> Result { .argument("53") .program("println(e(pi))") .expected_status(0) - .expected_stdout(Exact("23.140692632779266172\n")) + .expected_stdout(Exact("23.140692632779269006\n")) .run() }