brocc naive sweep nosort theory_colfind:n_0.5 num elements time taken (seconds) 0 1e6 2.0e6 3.0e6 4.0e6 0 500 1000 1500 2000 2500 3000 3500 4000 4500

Comparison of theory times of different collision finding strategies. abspiral(n,0.5)

brocc naive sweep nosort theory_colfind:n_2 num elements time taken (seconds) 0 5e5 1e6 1.5e6 2.0e6 0 500 1000 1500 2000 2500 3000 3500 4000 4500

Comparison of theory times of different collision finding strategies. abspiral(n,2)

brocc brocc_par nosort nosort_par sweep naive colfind:n_0.5 num elements time taken (seconds) 0e0 0.002 0.004 0.006 0.008 0.010 0.012 0 1000 2000 3000 4000 5000 6000 7000

Comparison of bench times of different collision finding strategies. abspiral(n,0.5)

brocc brocc_par nosort nosort_par sweep naive colfind:n_2 num elements time taken (seconds) 0e0 0.001 0.002 0.003 0.004 0 2000 4000 6000 8000

Comparison of bench times of different collision finding strategies. abspiral(n,2)

brocc brocc_par nosort nosort_par sweep naive colfind:grow_10000 grow time taken (seconds) 0e0 0.01 0.02 0.03 0.04 0.05 0.2 0.4 0.6 0.8 1.0 1.2 1.4

Comparison of bench times of different collision finding strategies. abspiral(10000,x)

brocc nosort sweep naive colfind:grow_5000 grow num comparison 0 2e6 4e6 6e6 8e6 1e7 0.2 0.4 0.6 0.8 1.0 1.2 1.4

num comparison of different collision finding strategies. abspiral(5000,x)

height:best-height tree height time taken (seconds) 0e0 0.002 0.004 0.006 0.008 0.010 0.012 4 6 8 10 12

Bench time to solve abspiral(30000,2) with different tree heights

height:best-height tree height num comparison 0 2e6 4e6 6e6 4 6 8 10 12

theory time to solve abspiral(30000,2) with different tree heights

optimal heur height:heuristic num elements time taken (seconds) 2 4 6 8 10 0 5000 10000 15000 20000 25000 30000 35000

Optimal height vs heur height for abspiral(40000,1)

optimal heur height:heuristic num elements time taken (seconds) 2 4 6 8 10 0 5000 10000 15000 20000 25000 30000 35000

Optimal height vs heur height for abspiral(40000,2)

optimal heur height:heuristic num elements time taken (seconds) 2 4 6 8 10 0 5000 10000 15000 20000 25000 30000 35000

Optimal height vs heur height for abspiral(40000,4)

level 0 level 1 level 2 level 3 level 4 levels:rebal grow time taken (seconds) 0.0001 0.0002 0.0003 0.0004 0.0005 0.0006 0.0007 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8

Comparison of construction of different levels for abspiral(5000,grow)

level 0 level 1 level 2 level 3 level 4 levels:query grow time taken (seconds) 0.002 0.004 0.006 0.008 0.010 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8

Comparison of querying for different levels for abspiral(5000,grow)

level 0 level 1 level 2 level 3 level 4 levels:rebal grow number comparisons 50000 1e5 1.5e5 2.0e5 2.5e5 3.0e5 3.5e5 4.0e5 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8

Comparison of construction of different levels for abspiral(5000,grow)

level 0 level 1 level 2 level 3 level 4 levels:query grow number of comparisons 2e6 4e6 6e6 8e6 1e7 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8

Comparison of querying for different levels for abspiral(5000,grow)

no cache cached collect num elements time taken (seconds) 0.001 0.002 0.003 0.004 0 2000 4000 6000 8000

Query vs Cached Query with 2 iterations of abspiral(num,1).

f32 i32 i64 f32->int float-int num elements time taken (seconds) 0e0 0.0005 0.0010 0.0015 0 2000 4000 6000 8000

Comparison of bench times using different number types as problem size increases. abspiral(n,2)

tree_r tree_q nosort_r nosort_q rebal_vs_query:rebal_vs_query num elements time taken (seconds) 0e0 0.001 0.002 0.003 0.004 0 2000 4000 6000 8000

comparison of construction vs query abspiral(10000,2)

tree_r tree_q par_tree_r par_tree_q rebal_vs_query:par-rebal-vs-query num elements time taken (seconds) 0e0 0.0002 0.0004 0.0006 0.0008 0.0010 0 2000 4000 6000 8000

comparison of construction vs query abspiral(10000,2)

tree_r tree_q nosort_r nosort_q rebal_vs_query:par-rebal-vs-query num elements number of comparisons 0 5e5 1e6 1.5e6 2.0e6 2.5e6 3.0e6 0 2000 4000 6000 8000

comparison of construction vs query abspiral(10000,2)

spiral:spiral500 x y -40 -20 0 20 40 -40 -20 0 20 40

visual of abspiral(500,x)

n*2 spiral:num_intersection10000 grow num comparison 0 50000 1e5 1.5e5 2.0e5 2.5e5 3.0e5 3.5e5 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0

Num of comparison for abspiral(10000,x)

n spiral:num_intersection10000 num elements num comparison 0 5000 10000 15000 20000 0 2000 4000 6000 8000

Num of comparison for abspiral(n,2)

c default c direct c indirect q default q direct q indirect layout:rebal_8_0.2 num elements time taken (seconds) 0e0 0.005 0.010 0.015 0 2000 4000 6000 8000 10000 12000 14000

Comparison of bench times with elements with 8 bytes. abspiral(n,0.2)

c default c direct c indirect q default q direct q indirect layout:rebal_128_0.2 num elements time taken (seconds) 0e0 0.005 0.010 0.015 0.020 0 2000 4000 6000 8000 10000 12000 14000

Comparison of bench times with elements with 128 bytes. abspiral(n,0.2)

c default c direct c indirect q default q direct q indirect layout:rebal_256_0.2 num elements time taken (seconds) 0e0 0.005 0.010 0.015 0.020 0 2000 4000 6000 8000 10000 12000 14000

Comparison of bench times with elements with 256 bytes. abspiral(n,0.2)

c default c direct c indirect q default q direct q indirect layout:rebal_8_2 num elements time taken (seconds) 0e0 0.0005 0.0010 0.0015 0.0020 0 2000 4000 6000 8000 10000 12000 14000

Comparison of bench times with elements with 8 bytes. abspiral(n,2)

c default c direct c indirect q default q direct q indirect layout:rebal_128_2 num elements time taken (seconds) 0e0 0.0005 0.0010 0.0015 0.0020 0 2000 4000 6000 8000 10000 12000 14000

Comparison of bench times with elements with 128 bytes. abspiral(n,2)

c default c direct c indirect q default q direct q indirect layout:rebal_256_2 num elements time taken (seconds) 0e0 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0 2000 4000 6000 8000 10000 12000 14000

Comparison of bench times with elements with 256 bytes. abspiral(n,2)