summaryrefslogtreecommitdiff
path: root/modules/language/python/module/math.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/module/math.scm')
-rw-r--r--modules/language/python/module/math.scm20
1 files changed, 13 insertions, 7 deletions
diff --git a/modules/language/python/module/math.scm b/modules/language/python/module/math.scm
index 0dfae92..7b4093d 100644
--- a/modules/language/python/module/math.scm
+++ b/modules/language/python/module/math.scm
@@ -13,9 +13,11 @@
erf erfc gamma lgamma e tau inf nan))
(define (real! s x)
- (if (= (imag-part x) 0)
- (real-part x)
- (raise ValueError "real math fkn result in complex number" s)))
+ (if (complex? x)
+ (if (= (imag-part x) 0)
+ (real-part x)
+ (raise ValueError "real math fkn result in complex number" s))
+ x))
(define ceil
(lambda (x)
@@ -96,7 +98,11 @@
(list double))))
(lambda (x) (f x))))
-(define (log x) (real! 'log ((@ (guile) log) x)))
+(define* (log x #:optional (base #f))
+ (real! 'log
+ (if (not base)
+ ((@ (guile) log) x)
+ (/ ((@ (guile) log) x) ((@ (guile) log) base)))))
(define log1p
(let ((f (pointer->procedure double
@@ -111,11 +117,11 @@
(list double))))
(lambda (x) (f x))))
-(define (log10 x) (real! 'log10 (@ (guile) log10)))
-
+(define (log10 x) (real! 'log10 ((@ (guile) log10) x)))
+
(define (pow x y) (real! 'pow ((@ (guile) expt) x y)))
-(define (sqrt x) (real! 'sqrt (@ (guile) sqrt)))
+(define (sqrt x) (real! 'sqrt ((@ (guile) sqrt) x)))
;; Trigs
(define (acos x) (real! 'acos ((@ (guile) acos) x)))