factor/library/math/pow.factor

31 lines
697 B
Factor
Raw Normal View History

! 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
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 )
>r >r >rect swap r> swap fpow r> rot * fexp / ;
2004-07-16 02:26:21 -04:00
: ^theta ( w abs arg -- theta )
>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 ;