diff --git a/Project.toml b/Project.toml index fc3dfd5..b4b7fa4 100644 --- a/Project.toml +++ b/Project.toml @@ -11,7 +11,7 @@ SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" [compat] LogExpFunctions = "0.3.2" NaNMath = "0.3" -SpecialFunctions = "0.10, 1.0, 2" +SpecialFunctions = "1.2, 2" julia = "1.3" [extras] diff --git a/src/rules.jl b/src/rules.jl index 9ed53ec..4e6b644 100644 --- a/src/rules.jl +++ b/src/rules.jl @@ -139,6 +139,10 @@ _abs_deriv(x) = signbit(x) ? -one(x) : one(x) :( SpecialFunctions.airybiprime($x) ) @define_diffrule SpecialFunctions.airybiprime(x) = :( $x * SpecialFunctions.airybi($x) ) +@define_diffrule SpecialFunctions.airyaix(x) = + :( SpecialFunctions.airyaiprimex($x) + sqrt($x) * SpecialFunctions.airyaix($x) ) +@define_diffrule SpecialFunctions.airyaiprimex(x) = + :( $x * SpecialFunctions.airyaix($x) + sqrt($x) * SpecialFunctions.airyaiprimex($x) ) @define_diffrule SpecialFunctions.besselj0(x) = :( -SpecialFunctions.besselj1($x) ) @define_diffrule SpecialFunctions.besselj1(x) = @@ -152,8 +156,6 @@ _abs_deriv(x) = signbit(x) ? -one(x) : one(x) # # eta # zeta -# airyaix -# airyaiprimex # airybix # airybiprimex @@ -168,29 +170,34 @@ _abs_deriv(x) = signbit(x) ? -one(x) : one(x) :NaN, :( (SpecialFunctions.bessely($ν - 1, $x) - SpecialFunctions.bessely($ν + 1, $x)) / 2 ) @define_diffrule SpecialFunctions.besselk(ν, x) = :NaN, :( -(SpecialFunctions.besselk($ν - 1, $x) + SpecialFunctions.besselk($ν + 1, $x)) / 2 ) +@define_diffrule SpecialFunctions.besselkx(ν, x) = + :NaN, :( -(SpecialFunctions.besselkx($ν - 1, $x) + SpecialFunctions.besselkx($ν + 1, $x)) / 2 + SpecialFunctions.besselkx($ν, $x) ) @define_diffrule SpecialFunctions.hankelh1(ν, x) = :NaN, :( (SpecialFunctions.hankelh1($ν - 1, $x) - SpecialFunctions.hankelh1($ν + 1, $x)) / 2 ) +@define_diffrule SpecialFunctions.hankelh1x(ν, x) = + :NaN, :( (SpecialFunctions.hankelh1x($ν - 1, $x) - SpecialFunctions.hankelh1x($ν + 1, $x)) / 2 - im * SpecialFunctions.hankelh1x($ν, $x) ) @define_diffrule SpecialFunctions.hankelh2(ν, x) = :NaN, :( (SpecialFunctions.hankelh2($ν - 1, $x) - SpecialFunctions.hankelh2($ν + 1, $x)) / 2 ) +@define_diffrule SpecialFunctions.hankelh2x(ν, x) = + :NaN, :( (SpecialFunctions.hankelh2x($ν - 1, $x) - SpecialFunctions.hankelh2x($ν + 1, $x)) / 2 + im * SpecialFunctions.hankelh2x($ν, $x) ) +@define_diffrule SpecialFunctions.gamma(a, x) = + :NaN, :(-exp(-$x) * $x^($a - 1)) @define_diffrule SpecialFunctions.polygamma(m, x) = :NaN, :( SpecialFunctions.polygamma($m + 1, $x) ) @define_diffrule SpecialFunctions.beta(a, b) = :( SpecialFunctions.beta($a, $b)*(SpecialFunctions.digamma($a) - SpecialFunctions.digamma($a + $b)) ), :( SpecialFunctions.beta($a, $b)*(SpecialFunctions.digamma($b) - SpecialFunctions.digamma($a + $b)) ) -@define_diffrule SpecialFunctions.logbeta(a, b) = +@define_diffrule SpecialFunctions.logbeta(a, b) = :( SpecialFunctions.digamma($a) - SpecialFunctions.digamma($a + $b) ), :( SpecialFunctions.digamma($b) - SpecialFunctions.digamma($a + $b) ) +@define_diffrule SpecialFunctions.zeta(s, z) = + :NaN, :( -$s * SpecialFunctions.zeta(1 + $s, $z) ) # TODO: # -# zeta # besseljx # besselyx # besselix -# besselkx # besselh # besselhx -# hankelh1x -# hankelh2 -# hankelh2x # ternary # #---------#