11module DiffTests
22
3+ using LinearAlgebra: det, norm, dot, tr
4+ using Statistics: mean
5+
36#=
47These functions are organized in sets based on input/output type. They are unary and not
58in-place unless otherwised specified. These functions have been written with the following
4447
4548const NUMBER_TO_ARRAY_FUNCS = (num2arr_1,)
4649
47- # ################################
48- # f!(y::Array, x::Number)::Void #
49- # ################################
50+ # ###################################
51+ # f!(y::Array, x::Number)::Nothing #
52+ # ###################################
5053
5154function num2arr_1! (y, x)
5255 fill! (y, zero (x))
@@ -64,7 +67,7 @@ const INPLACE_NUMBER_TO_ARRAY_FUNCS = (num2arr_1!,)
6467
6568vec2num_1 (x) = (exp (x[1 ]) + log (x[3 ]) * x[4 ]) / x[5 ]
6669vec2num_2 (x) = x[1 ]* x[2 ] + sin (x[1 ])
67- vec2num_3 (x) = vecnorm (x' .* x)
70+ vec2num_3 (x) = norm (x' .* x)
6871vec2num_4 (x) = ((sum (x) + prod (x)); 1 )
6972vec2num_5 (x) = sum ((- x). ^ 3 )
7073vec2num_6 (x) = sum ([ifelse (i > 0 , i, 0 ) for i in x])
@@ -124,7 +127,7 @@ mat2num_1(x) = det(first(x) * inv(x * x) + x)
124127function mat2num_2 (x)
125128 a = reshape (x, length (x), 1 )
126129 b = reshape (copy (x), 1 , length (x))
127- return trace (log .((1 .+ (a * b)) .+ a .- b))
130+ return tr (log .((1 .+ (a * b)) .+ a .- b))
128131end
129132
130133function mat2num_3 (x)
@@ -134,9 +137,9 @@ function mat2num_3(x)
134137 return sum (map (n -> sqrt (abs (n) + n^ 2 ) * 0.5 , A))
135138end
136139
137- mat2num_4 (x) = mean (sum (sin .(x) * x, 2 ))
140+ mat2num_4 (x) = mean (sum (sin .(x) * x, dims = 2 ))
138141
139- softmax (x) = sum (exp .(x) ./ sum (exp .(x), 2 ))
142+ softmax (x) = sum (exp .(x) ./ sum (exp .(x), dims = 2 ))
140143
141144const MATRIX_TO_NUMBER_FUNCS = (det, mat2num_1, mat2num_2, mat2num_3, mat2num_4, softmax)
142145
@@ -157,8 +160,8 @@ const BINARY_BROADCAST_OPS = ((a, b) -> broadcast(+, a, b),
157160
158161const BINARY_MATRIX_TO_MATRIX_FUNCS = (+ , - , * , / , \ ,
159162 BINARY_BROADCAST_OPS... ,
160- A_mul_Bt, At_mul_B, At_mul_Bt ,
161- A_mul_Bc, Ac_mul_B, Ac_mul_Bc )
163+ (a, b) -> a * transpose (b), (a, b) -> transpose (a) * b, (a, b) -> transpose (a) * transpose (b) ,
164+ (a, b) -> a * adjoint (b), (a, b) -> adjoint (a) * b, (a, b) -> adjoint (a) * adjoint (b) )
162165
163166# ##########################################
164167# f(::Matrix, ::Matrix, ::Matrix)::Number #
@@ -170,9 +173,9 @@ neural_step(x1, w1, w2) = sigmoid(dot(w2[1:size(w1, 2)], relu(w1 * x1[1:size(w1,
170173
171174const TERNARY_MATRIX_TO_NUMBER_FUNCS = (neural_step,)
172175
173- # ###############################
174- # f!(y::Array, x::Array)::Void #
175- # ###############################
176+ # ##################################
177+ # f!(y::Array, x::Array)::Nothing #
178+ # ##################################
176179# Credit for `chebyquad!`, `brown_almost_linear!`, and `trigonometric!` goes to
177180# Kristoffer Carlsson (@KristofferC).
178181
0 commit comments