Skip to content

Commit 641a2b5

Browse files
committed
Added tests for mutating, and fixed discovered bug
1 parent 89aef78 commit 641a2b5

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

src/setup.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function def_unary_op(tin, tout, jlname, jlname!, mklname;
7676
$(if tin == tout
7777
quote
7878
function $(jlname!)(A::Array{$tin})
79-
ccall(($mklfn, lib), Nothing, (Int, Ptr{$tin}, Ptr{$tout}), length(A), A, A)
79+
ccall(($mklfn, libmkl_vml_avx), Nothing, (Int, Ptr{$tin}, Ptr{$tout}), length(A), A, A)
8080
vml_check_error()
8181
return A
8282
end

test/complex.jl

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,24 @@ fns = [x[1:2] for x in base_unary_complex]
1919

2020
base_fn = eval(:($(fns[i][1]).$(fns[i][2])))
2121
vml_fn = eval(:(IntelVectorMath.$(fns[i][2])))
22+
vml_fn! = eval(:(IntelVectorMath.$(Symbol(fns[i][2], !))))
2223

2324
Test.@test which(vml_fn, typeof(input[t][i])).module == IntelVectorMath
2425

2526
# Test.test_approx_eq(output[t][i], fn(input[t][i]...), "Base $t $fn", "IntelVectorMath $t $fn")
26-
Test.@test vml_fn(input[t][i]...) base_fn.(input[t][i]...)
27+
baseres = base_fn.(input[t][i]...)
28+
Test.@test vml_fn(input[t][i]...) baseres
29+
30+
if length(input[t][i]) == 1
31+
if fns[i][2] != :abs && fns[i][2] != :angle
32+
vml_fn!(input[t][i]...)
33+
Test.@test input[t][i][1] baseres
34+
end
35+
elseif length(input[t][i]) == 2
36+
out = similar(input[t][i][1])
37+
vml_fn!(out, input[t][i]...)
38+
Test.@test out baseres
39+
end
2740

2841
end
2942

test/real.jl

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,29 @@ fns = [[x[1:2] for x in base_unary_real]; [x[1:2] for x in base_binary_real]]
1717
@testset "Definitions and Comparison with Base for Reals" begin
1818

1919
for t in (Float32, Float64), i = 1:length(fns)
20-
2120
base_fn = eval(:($(fns[i][1]).$(fns[i][2])))
2221
vml_fn = eval(:(IntelVectorMath.$(fns[i][2])))
23-
# vml_fn! = eval(:(IntelVectorMath.$(fns[i][2])!))
22+
vml_fn! = eval(:(IntelVectorMath.$(Symbol(fns[i][2], !))))
2423

2524
Test.@test which(vml_fn, typeof(input[t][i])).module == IntelVectorMath
2625

2726
# Test.test_approx_eq(output[t][i], fn(input[t][i]...), "Base $t $fn", "IntelVectorMath $t $fn")
28-
Test.@test vml_fn(input[t][i]...) base_fn.(input[t][i]...)
27+
baseres = base_fn.(input[t][i]...)
28+
Test.@test vml_fn(input[t][i]...) baseres
29+
30+
# cis changes type (float to complex, does not have mutating function)
31+
32+
33+
if length(input[t][i]) == 1
34+
if fns[i][2] != :cis
35+
vml_fn!(input[t][i]...)
36+
Test.@test input[t][i][1] baseres
37+
end
38+
elseif length(input[t][i]) == 2
39+
out = similar(input[t][i][1])
40+
vml_fn!(out, input[t][i]...)
41+
Test.@test out baseres
42+
end
2943

3044
end
3145

0 commit comments

Comments
 (0)