diff --git a/extra/math/derivatives/derivatives.factor b/extra/math/derivatives/derivatives.factor index 3e62e7d192..9d74bdc750 100644 --- a/extra/math/derivatives/derivatives.factor +++ b/extra/math/derivatives/derivatives.factor @@ -10,14 +10,14 @@ M: undefined-derivative summary " is undefined at " % point>> # "." % ] "" make ; -DERIVATIVE: + [ 2drop ] [ 2drop ] -DERIVATIVE: - [ 2drop ] [ 2drop neg ] -DERIVATIVE: * [ nip * ] [ drop * ] -DERIVATIVE: / [ nip / ] [ sq / neg * ] +DERIVATIVE: + [ 2drop ] [ 2drop ] ; +DERIVATIVE: - [ 2drop ] [ 2drop neg ] ; +DERIVATIVE: * [ nip * ] [ drop * ] ; +DERIVATIVE: / [ nip / ] [ sq / neg * ] ; ! Conditional checks if the epsilon-part of the exponent is ! 0 to avoid getting float answers for integer powers. DERIVATIVE: ^ [ [ 1 - ^ ] keep * * ] - [ [ dup zero? ] 2dip [ 3drop 0 ] [ [ ^ ] keep log * * ] if ] + [ [ dup zero? ] 2dip [ 3drop 0 ] [ [ ^ ] keep log * * ] if ] ; DERIVATIVE: abs [ 0 <=> @@ -26,28 +26,28 @@ DERIVATIVE: abs { +eq+ [ 0 \ abs undefined-derivative ] } { +gt+ [ ] } } case - ] + ] ; -DERIVATIVE: sqrt [ sqrt 2 * / ] +DERIVATIVE: sqrt [ sqrt 2 * / ] ; -DERIVATIVE: e^ [ e^ * ] -DERIVATIVE: log [ / ] +DERIVATIVE: e^ [ e^ * ] ; +DERIVATIVE: log [ / ] ; -DERIVATIVE: sin [ cos * ] -DERIVATIVE: cos [ sin neg * ] -DERIVATIVE: tan [ sec sq * ] +DERIVATIVE: sin [ cos * ] ; +DERIVATIVE: cos [ sin neg * ] ; +DERIVATIVE: tan [ sec sq * ] ; -DERIVATIVE: sinh [ cosh * ] -DERIVATIVE: cosh [ sinh * ] -DERIVATIVE: tanh [ sech sq * ] +DERIVATIVE: sinh [ cosh * ] ; +DERIVATIVE: cosh [ sinh * ] ; +DERIVATIVE: tanh [ sech sq * ] ; -DERIVATIVE: asin [ sq neg 1 + sqrt / ] -DERIVATIVE: acos [ sq neg 1 + sqrt neg / ] -DERIVATIVE: atan [ sq 1 + / ] +DERIVATIVE: asin [ sq neg 1 + sqrt / ] ; +DERIVATIVE: acos [ sq neg 1 + sqrt neg / ] ; +DERIVATIVE: atan [ sq 1 + / ] ; -DERIVATIVE: asinh [ sq 1 + sqrt / ] -DERIVATIVE: acosh [ [ 1 + sqrt ] [ 1 - sqrt ] bi * / ] -DERIVATIVE: atanh [ sq neg 1 + / ] +DERIVATIVE: asinh [ sq 1 + sqrt / ] ; +DERIVATIVE: acosh [ [ 1 + sqrt ] [ 1 - sqrt ] bi * / ] ; +DERIVATIVE: atanh [ sq neg 1 + / ] ; -DERIVATIVE: neg [ drop neg ] -DERIVATIVE: recip [ sq recip neg * ] +DERIVATIVE: neg [ drop neg ] ; +DERIVATIVE: recip [ sq recip neg * ] ; diff --git a/extra/math/derivatives/syntax/syntax.factor b/extra/math/derivatives/syntax/syntax.factor index 077c3ac1b0..b1d33a80c1 100644 --- a/extra/math/derivatives/syntax/syntax.factor +++ b/extra/math/derivatives/syntax/syntax.factor @@ -1,10 +1,9 @@ ! Copyright (C) 2009 Jason W. Merrill. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel parser words effects accessors sequences - math.ranges ; - +USING: accessors effects kernel lexer math.ranges parser +sequences words ; IN: math.derivatives.syntax SYNTAX: DERIVATIVE: scan-object dup stack-effect in>> length [1,b] - [ drop scan-object ] map + [ drop scan-object ] map ";" expect "derivative" set-word-prop ;