1
1
# ForwardDiff integration
2
2
3
- byhand = [:lgamma , :digamma , :lbeta , : exp2 , :log2 , :exp10 , :log10 , :abs ]
3
+ byhand = [:exp2 , :log2 , :exp10 , :log10 , :abs ]
4
4
5
5
for f in libdevice
6
6
if haskey (ForwardDiff. DiffRules. DEFINED_DIFFRULES, (:Base ,f,1 ))
@@ -12,18 +12,6 @@ for f in libdevice
12
12
end
13
13
end
14
14
15
- # byhand: lgamma
16
- ForwardDiff. DiffRules. @define_diffrule CuArrays. lgamma (a) = :(CuArrays. digamma ($ a))
17
- eval (ForwardDiff. unary_dual_definition (:CuArrays , :lgamma ))
18
-
19
- # byhand: digamma
20
- ForwardDiff. DiffRules. @define_diffrule CuArrays. digamma (a) = :(CuArrays. trigamma ($ a))
21
- eval (ForwardDiff. unary_dual_definition (:CuArrays , :digamma ))
22
-
23
- # byhand: lbeta
24
- ForwardDiff. DiffRules. @define_diffrule CuArrays. lbeta (a, b) = :(CuArrays. digamma ($ a) - CuArrays. digamma ($ a + $ b)), :(CuArrays. digamma ($ b) - CuArrays. digamma ($ a + $ b))
25
- eval (ForwardDiff. binary_dual_definition (:CuArrays , :lbeta ))
26
-
27
15
# byhand: exp2
28
16
ForwardDiff. DiffRules. DEFINED_DIFFRULES[(:CUDAnative , :exp2 , 1 )] = x ->
29
17
:((CuArrays. cufunc (exp2))(x) * (CuArrays. cufunc (log))(oftype (x, 2 )))
@@ -49,9 +37,20 @@ ForwardDiff.DiffRules.DEFINED_DIFFRULES[(:CUDAnative, :abs, 1)] = x ->
49
37
:(signbit (x) ? - one (x) : one (x))
50
38
eval (ForwardDiff. unary_dual_definition (:CUDAnative , :abs ))
51
39
40
+ # byhand: lgamma
41
+ ForwardDiff. DiffRules. @define_diffrule CuArrays. lgamma (a) = :(CuArrays. digamma ($ a))
42
+ eval (ForwardDiff. unary_dual_definition (:CuArrays , :lgamma ))
43
+
44
+ # byhand: digamma
45
+ ForwardDiff. DiffRules. @define_diffrule CuArrays. digamma (a) = :(CuArrays. trigamma ($ a))
46
+ eval (ForwardDiff. unary_dual_definition (:CuArrays , :digamma ))
47
+
48
+ # byhand: lbeta
49
+ ForwardDiff. DiffRules. @define_diffrule CuArrays. lbeta (a, b) = :(CuArrays. digamma ($ a) - CuArrays. digamma ($ a + $ b)), :(CuArrays. digamma ($ b) - CuArrays. digamma ($ a + $ b))
50
+ eval (ForwardDiff. binary_dual_definition (:CuArrays , :lbeta ))
52
51
53
- ForwardDiff. DiffRules. DEFINED_DIFFRULES[(:CUDAnative , :pow , 2 )] = (x, y) ->
54
- replace_device .(ForwardDiff. DiffRules. DEFINED_DIFFRULES[(:Base , :^ , 2 )](x, y))
52
+ ForwardDiff. DiffRules. DEFINED_DIFFRULES[(:CUDAnative , :pow , 2 )] =
53
+ (x, y) -> replace_device .(ForwardDiff. DiffRules. DEFINED_DIFFRULES[(:Base , :^ , 2 )](x, y))
55
54
56
55
@eval begin
57
56
ForwardDiff. @define_binary_dual_op (
0 commit comments