- exp now understands complex numbers.
- expt of complex exponent is implemented in terms of exp.
This commit is contained in:
		
							parent
							
								
									fec5dcd419
								
							
						
					
					
						commit
						6437aa98e0
					
				|  | @ -2345,18 +2345,9 @@ | |||
|         [(flonum? m) (flexpt (inexact n) m)] | ||||
|         [(ratnum? m) (flexpt (inexact n) (inexact m))] | ||||
|         [(or (compnum? m) (cflonum? m)) | ||||
|          ;; n^m = e^(m ln n) | ||||
|          ;; z = m ln n | ||||
|          ;; e^z = e^(zr + zi i) | ||||
|          ;;     = e^zr cos(zi) + e^zr sin(zi) i | ||||
|          (let ([e 2.718281828459045]) | ||||
|            (define (ln x) (/ (log x) (log e))) | ||||
|            (let ([z (* m (ln n))]) | ||||
|              (let ([zr (real-part z)] [zi (imag-part z)]) | ||||
|                (let ([e^zr (expt e zr)]) | ||||
|                  (make-rectangular  | ||||
|                    (* e^zr (cos zi)) | ||||
|                    (* e^zr (sin zi)))))))] | ||||
|            (exp (* m (ln n))))] | ||||
|         [else (die 'expt "not a number" m)]))) | ||||
| 
 | ||||
|   (define quotient | ||||
|  | @ -3036,6 +3027,14 @@ | |||
|        (if ($fx= x 0) 1 (flexp (fixnum->flonum x)))] | ||||
|       [(bignum? x) (flexp (bignum->flonum x))] | ||||
|       [(ratnum? x) (flexp (ratnum->flonum x))] | ||||
|       [(or (compnum? x) (cflonum? x)) | ||||
|        ;; e^x = e^(xr + xi i) | ||||
|        ;;     = e^xr cos(xi) + e^xr sin(xi) i | ||||
|        (let ([xr (real-part x)] [xi (imag-part x)]) | ||||
|          (let ([e^xr (exp xr)]) | ||||
|            (make-rectangular  | ||||
|              (* e^xr (cos xi)) | ||||
|              (* e^xr (sin xi)))))] | ||||
|       [else (die 'exp "not a number" x)])) | ||||
| 
 | ||||
|   (define (bitwise-length n) | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| 1490 | ||||
| 1491 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Abdulaziz Ghuloum
						Abdulaziz Ghuloum