fixed math.pow with negatives causing infinite loops
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 21 Jan 2021 01:19:58 +0000 (19:19 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 21 Jan 2021 01:19:58 +0000 (19:19 -0600)
core/math.onyx

index 7ab959c358daee30046042b7c78cce3cf8e488db..ad3fa9ac70502b5e51c99246fcfde13cef709f14 100644 (file)
@@ -96,6 +96,9 @@ pow_int :: proc (base: $T, p: i32) -> T {
 }
 
 pow_float :: proc (base: $T, p: T) -> T {
+    if p == 0 do return 1;
+    if p < 0  do return 1 / pow_float(base, -p);
+
     if p >= 1 {
         tmp := pow_float(p = p / 2, base = base);
         return tmp * tmp;