2005-02-08 22:02:44 -05:00
|
|
|
! Copyright (C) 2004, 2005 Slava Pestov.
|
|
|
|
! See http://factor.sf.net/license.txt for BSD license.
|
2004-07-16 02:26:21 -04:00
|
|
|
IN: math
|
2005-02-08 22:02:44 -05:00
|
|
|
USING: math math-internals kernel ;
|
2004-07-16 02:26:21 -04:00
|
|
|
|
2004-08-06 20:22:47 -04:00
|
|
|
! Power-related functions:
|
|
|
|
! exp log sqrt pow
|
2004-07-16 02:26:21 -04:00
|
|
|
|
|
|
|
: exp >rect swap fexp swap polar> ;
|
|
|
|
: log >polar swap flog swap rect> ;
|
|
|
|
|
|
|
|
: sqrt ( z -- sqrt )
|
|
|
|
>polar dup pi = [
|
|
|
|
drop fsqrt 0 swap rect>
|
|
|
|
] [
|
|
|
|
swap fsqrt swap 2 / polar>
|
|
|
|
] ifte ;
|
|
|
|
|
|
|
|
: ^mag ( w abs arg -- magnitude )
|
2004-10-06 23:34:22 -04:00
|
|
|
>r >r >rect swap r> swap fpow r> rot * fexp / ;
|
2004-07-16 02:26:21 -04:00
|
|
|
|
|
|
|
: ^theta ( w abs arg -- theta )
|
2004-10-06 23:34:22 -04:00
|
|
|
>r >r >rect r> flog * swap r> * + ;
|
2004-07-16 02:26:21 -04:00
|
|
|
|
|
|
|
: ^ ( z w -- z^w )
|
2004-09-05 20:14:37 -04:00
|
|
|
over real? over integer? and [
|
|
|
|
fpow
|
|
|
|
] [
|
|
|
|
swap >polar 3dup ^theta >r ^mag r> polar>
|
|
|
|
] ifte ;
|