@@ -13,10 +13,16 @@ Note that because it is recursive, `bmul(a, b)` will not necessarilly do the sam
1313"""
1414module RecursiveTupleMath
1515
16- using Base: @_inline_meta
16+ const var"@_inline" = @static if VERSION >= v " 1.8"
17+ var"@inline"
18+ else
19+ using Base: @_inline_meta
20+ var"@_inline_meta"
21+ end
1722export bmax, bmin, badd, bsub, bmul, bdiv
1823
1924using StaticArrays, ForwardDiff
25+ using ForwardDiff: ≺ , @define_binary_dual_op , Dual
2026
2127@inline lt_fast (a, b) = a < b
2228@inline lt_fast (a:: Float64 , b:: Float64 ) = Base. lt_float_fast (a, b)
8389
8490# @inline
8591
86- ForwardDiff . @define_binary_dual_op (
92+ @define_binary_dual_op (
8793 RecursiveTupleMath. badd,
8894 begin
8995 Base. @_inline_meta
90- ForwardDiff. Dual {Txy} (
91- badd (x. value, y. value),
92- badd (x. partials. values, y. partials. values),
93- )
96+ Dual {Txy} (badd (x. value, y. value), badd (x. partials. values, y. partials. values))
9497 end ,
9598 begin
9699 Base. @_inline_meta
97- ForwardDiff . Dual {Tx} (badd (x. value, y), x. partials)
100+ Dual {Tx} (badd (x. value, y), x. partials)
98101 end ,
99102 begin
100103 Base. @_inline_meta
101- ForwardDiff . Dual {Ty} (badd (x, y. value), y. partials. values)
104+ Dual {Ty} (badd (x, y. value), y. partials. values)
102105 end ,
103106)
104- ForwardDiff . @define_binary_dual_op (
107+ @define_binary_dual_op (
105108 RecursiveTupleMath. bsub,
106109 begin
107110 Base. @_inline_meta
108- ForwardDiff. Dual {Txy} (
109- bsub (x. value, y. value),
110- bsub (x. partials. values, y. partials. values),
111- )
111+ Dual {Txy} (bsub (x. value, y. value), bsub (x. partials. values, y. partials. values))
112112 end ,
113113 begin
114114 Base. @_inline_meta
115- ForwardDiff . Dual {Tx} (bsub (x. value, y), x. partials)
115+ Dual {Tx} (bsub (x. value, y), x. partials)
116116 end ,
117117 begin
118118 Base. @_inline_meta
119- ForwardDiff . Dual {Ty} (bsub (x, y. value), bsub (y. partials. values))
119+ Dual {Ty} (bsub (x, y. value), bsub (y. partials. values))
120120 end
121121)
122- ForwardDiff . @define_binary_dual_op (
122+ @define_binary_dual_op (
123123 RecursiveTupleMath. bmul,
124124 begin
125125 Base. @_inline_meta
126- ForwardDiff . Dual {Txy} (
126+ Dual {Txy} (
127127 bmul (x. value, y. value),
128128 badd (bmul (x. value, y. partials. values), bmul (x. partials. values, y. value)),
129129 )
130130 end ,
131131 begin
132132 Base. @_inline_meta
133- ForwardDiff . Dual {Tx} (bmul (x. value, y), bmul (x. partials. values, y))
133+ Dual {Tx} (bmul (x. value, y), bmul (x. partials. values, y))
134134 end ,
135135 begin
136136 Base. @_inline_meta
137- ForwardDiff . Dual {Ty} (bmul (x, y. value), bmul (x, y. partials. values))
137+ Dual {Ty} (bmul (x, y. value), bmul (x, y. partials. values))
138138 end
139139)
140- ForwardDiff . @define_binary_dual_op (
140+ @define_binary_dual_op (
141141 RecursiveTupleMath. bdiv,
142142 begin
143143 Base. @_inline_meta
144- ForwardDiff . Dual {Txy} (
144+ Dual {Txy} (
145145 bdiv (x. value, y. value),
146146 bdiv (
147147 bsub (bmul (x. partials. values, y. value), bmul (x. value, y. partials. values)),
@@ -151,25 +151,25 @@ ForwardDiff.@define_binary_dual_op(
151151 end ,
152152 begin
153153 Base. @_inline_meta
154- ForwardDiff . Dual {Tx} (bdiv (x. value, y), bdiv (bmul (x. partials. values, y), bmul (y, y)))
154+ Dual {Tx} (bdiv (x. value, y), bdiv (bmul (x. partials. values, y), bmul (y, y)))
155155 end ,
156156 begin
157157 Base. @_inline_meta
158- ForwardDiff . Dual {Ty} (
158+ Dual {Ty} (
159159 bdiv (x, y. value),
160160 bdiv (bsub (bmul (x, y. partials. values)), bmul (y. value, y. value)),
161161 )
162162 end ,
163163)
164- ForwardDiff . @define_binary_dual_op (
164+ @define_binary_dual_op (
165165 RecursiveTupleMath. bmax,
166166 begin
167167 Base. @_inline_meta
168168 cmp = gt_fast (x. value, y. value)
169169 v = ifelse (cmp, x. value, y. value)
170170 bcmp = btuple (cmp, Val (length (x. partials)))
171171 p = map (ifelse, bcmp, x. partials. values, y. partials. values)
172- ForwardDiff . Dual {Txy} (v, p)
172+ Dual {Txy} (v, p)
173173 end ,
174174 begin
175175 Base. @_inline_meta
@@ -178,7 +178,7 @@ ForwardDiff.@define_binary_dual_op(
178178 bcmp = btuple (cmp, Val (length (x. partials)))
179179 bnil = map (zero, x. partials. values)
180180 p = map (ifelse, bcmp, x. partials. values, bnil)
181- ForwardDiff . Dual {Tx} (v, p)
181+ Dual {Tx} (v, p)
182182 end ,
183183 begin
184184 Base. @_inline_meta
@@ -187,18 +187,18 @@ ForwardDiff.@define_binary_dual_op(
187187 bcmp = btuple (cmp, Val (length (y. partials)))
188188 bnil = map (zero, y. partials. values)
189189 p = map (ifelse, bcmp, bnil, y. partials. values)
190- ForwardDiff . Dual {Ty} (v, p)
190+ Dual {Ty} (v, p)
191191 end ,
192192)
193- ForwardDiff . @define_binary_dual_op (
193+ @define_binary_dual_op (
194194 RecursiveTupleMath. bmin,
195195 begin
196196 Base. @_inline_meta
197197 cmp = lt_fast (x. value, y. value)
198198 v = ifelse (cmp, x. value, y. value)
199199 bcmp = btuple (cmp, Val (length (x. partials)))
200200 p = map (ifelse, bcmp, x. partials. values, y. partials. values)
201- ForwardDiff . Dual {Txy} (v, p)
201+ Dual {Txy} (v, p)
202202 end ,
203203 begin
204204 Base. @_inline_meta
@@ -207,7 +207,7 @@ ForwardDiff.@define_binary_dual_op(
207207 bcmp = btuple (cmp, Val (length (x. partials)))
208208 bnil = map (zero, x. partials. values)
209209 p = map (ifelse, bcmp, x. partials. values, bnil)
210- ForwardDiff . Dual {Tx} (v, p)
210+ Dual {Tx} (v, p)
211211 end ,
212212 begin
213213 Base. @_inline_meta
@@ -216,7 +216,7 @@ ForwardDiff.@define_binary_dual_op(
216216 bcmp = btuple (cmp, Val (length (y. partials)))
217217 bnil = map (zero, y. partials. values)
218218 p = map (ifelse, bcmp, bnil, y. partials. values)
219- ForwardDiff . Dual {Ty} (v, p)
219+ Dual {Ty} (v, p)
220220 end ,
221221)
222222
0 commit comments