@@ -67,9 +67,6 @@ struct Wirtinger{P,C} <: AbstractDifferential
67
67
conjugate:: Union{Number,AbstractDifferential} )
68
68
return new {typeof(primal),typeof(conjugate)} (primal, conjugate)
69
69
end
70
- function Wirtinger (primal, conjugate)
71
- error (" `Wirtinger` only supports elements of type <: Union{Number,AbstractDifferential} for now" )
72
- end
73
70
end
74
71
75
72
wirtinger_primal (x:: Wirtinger ) = x. primal
@@ -78,15 +75,16 @@ wirtinger_primal(x) = x
78
75
wirtinger_conjugate (x:: Wirtinger ) = x. conjugate
79
76
wirtinger_conjugate (:: Any ) = Zero ()
80
77
81
- extern (x:: Wirtinger ) = error ( " `Wirtinger` cannot be converted into an external type." )
78
+ extern (x:: Wirtinger ) = throw ( ArgumentError ( " `Wirtinger` cannot be converted to an external type." ) )
82
79
83
80
Base. Broadcast. broadcastable (w:: Wirtinger ) = Wirtinger (broadcastable (w. primal),
84
81
broadcastable (w. conjugate))
85
82
86
83
Base. iterate (x:: Wirtinger ) = (x, nothing )
87
84
Base. iterate (:: Wirtinger , :: Any ) = nothing
88
85
89
- Base. conj (x:: Wirtinger ) = error (" `conj(::Wirtinger)` not yet defined" )
86
+ # TODO : define `conj` for` `Wirtinger`
87
+ Base. conj (x:: Wirtinger ) = throw (MethodError (conj, x))
90
88
91
89
92
90
# ####
@@ -147,7 +145,9 @@ is not defined.
147
145
"""
148
146
struct DNE <: AbstractDifferential end
149
147
150
- extern (x:: DNE ) = error (" `DNE` cannot be converted into an external type." )
148
+ function extern (x:: DNE )
149
+ throw (ArgumentError (" Derivative does not exit. Cannot be converted to an external type." ))
150
+ end
151
151
152
152
Base. Broadcast. broadcastable (:: DNE ) = Ref (DNE ())
153
153
@@ -190,7 +190,7 @@ macro thunk(body)
190
190
return :(Thunk (() -> $ (esc (body))))
191
191
end
192
192
193
- @inline extern (x:: Thunk{F} ) where {F} = x. f ()
193
+ @inline extern (x:: Thunk ) = x. f ()
194
194
195
195
Base. Broadcast. broadcastable (x:: Thunk ) = broadcastable (extern (x))
196
196
0 commit comments