more fixes, still not done yet

This commit is contained in:
filipriec
2025-07-07 13:32:06 +02:00
parent 4d5d22d0c2
commit 11487f0833
4 changed files with 61 additions and 64 deletions

View File

@@ -3,7 +3,7 @@ use rust_decimal::prelude::*;
use rust_decimal::MathematicalOps;
use std::str::FromStr;
/// Global precision setting for the current Steel execution context
// Global precision setting for the current Steel execution context
thread_local! {
static PRECISION_CONTEXT: std::cell::RefCell<Option<u32>> = std::cell::RefCell::new(None);
}
@@ -105,44 +105,6 @@ pub fn decimal_div(a: String, b: String) -> Result<String, String> {
Ok(format_result(a_dec / b_dec))
}
// Precision-specific operations (explicit precision override)
pub fn decimal_add_p(a: String, b: String, precision: u32) -> Result<String, String> {
let a_dec = parse_decimal(&a)?;
let b_dec = parse_decimal(&b)?;
let result = a_dec + b_dec;
Ok(result.round_dp(precision).to_string())
}
pub fn decimal_sub_p(a: String, b: String, precision: u32) -> Result<String, String> {
let a_dec = parse_decimal(&a)?;
let b_dec = parse_decimal(&b)?;
let result = a_dec - b_dec;
Ok(result.round_dp(precision).to_string())
}
pub fn decimal_mul_p(a: String, b: String, precision: u32) -> Result<String, String> {
let a_dec = parse_decimal(&a)?;
let b_dec = parse_decimal(&b)?;
let result = a_dec * b_dec;
Ok(result.round_dp(precision).to_string())
}
pub fn decimal_div_p(a: String, b: String, precision: u32) -> Result<String, String> {
let a_dec = parse_decimal(&a)?;
let b_dec = parse_decimal(&b)?;
if b_dec.is_zero() {
return Err("Division by zero".to_string());
}
let result = a_dec / b_dec;
Ok(result.round_dp(precision).to_string())
}
// Precision control functions
pub fn set_precision(precision: u32) -> String {
if precision > 28 {

View File

@@ -10,7 +10,6 @@ impl FunctionRegistry {
/// Register all decimal math functions with the Steel VM
pub fn register_all(vm: &mut Engine) {
Self::register_basic_arithmetic(vm);
Self::register_precision_arithmetic(vm);
Self::register_precision_control(vm);
Self::register_advanced_math(vm);
Self::register_trigonometric(vm);
@@ -29,14 +28,6 @@ impl FunctionRegistry {
vm.register_fn("decimal-div", decimal_div);
}
/// Register precision-specific arithmetic functions
pub fn register_precision_arithmetic(vm: &mut Engine) {
vm.register_fn("decimal-add-p", decimal_add_p);
vm.register_fn("decimal-sub-p", decimal_sub_p);
vm.register_fn("decimal-mul-p", decimal_mul_p);
vm.register_fn("decimal-div-p", decimal_div_p);
}
/// Register precision control functions
pub fn register_precision_control(vm: &mut Engine) {
vm.register_fn("set-precision", set_precision);