From e4b8d9c84d8bb2a07b1f587c12b261f3bdfde86f Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 11 Jan 2026 14:56:34 -0500 Subject: Fixes for sqrt()*sqrt() --- src/stdlib/reals.c | 4 ++++ src/stdlib/reals.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/stdlib/reals.c b/src/stdlib/reals.c index c786e642..5a9c1f85 100644 --- a/src/stdlib/reals.c +++ b/src/stdlib/reals.c @@ -216,6 +216,10 @@ Real_t Real$times(Real_t a, Real_t b) { if (sa->left.u64 == sb->left.u64) { return sa->left; } + // Also check if arguments are equal values (not just pointers) + if (Real$equal(&sa->left, &sb->left, NULL)) { + return sa->left; + } } } diff --git a/src/stdlib/reals.h b/src/stdlib/reals.h index ff880de7..a322ff64 100644 --- a/src/stdlib/reals.h +++ b/src/stdlib/reals.h @@ -36,6 +36,8 @@ Real_t Real$times(Real_t x, Real_t y); Real_t Real$divided_by(Real_t x, Real_t y); Real_t Real$power(Real_t base, Real_t exp); Real_t Real$sqrt(Real_t x); +bool Real$equal(const void *va, const void *vb, const TypeInfo_t *t); +int32_t Real$compare(const void *va, const void *vb, const TypeInfo_t *t); int Real$test(); -- cgit v1.2.3