aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2026-01-11 14:56:34 -0500
committerBruce Hill <bruce@bruce-hill.com>2026-01-11 14:56:34 -0500
commite4b8d9c84d8bb2a07b1f587c12b261f3bdfde86f (patch)
treedb2a80082798496f453de8cf757911d75c564d19 /src
parente4b29d85a8508402e148d62cceaa97a4388ac209 (diff)
Fixes for sqrt()*sqrt()
Diffstat (limited to 'src')
-rw-r--r--src/stdlib/reals.c4
-rw-r--r--src/stdlib/reals.h2
2 files changed, 6 insertions, 0 deletions
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();