The if-else cases in lsqr.py were not exhaustive. They become exhaustive by changing ab > aa to ab >= aa.
set (targets
triangle
triangle-zigzag)
set (libraries ${libraries} ${Boost_SERIALIZATION_LIBRARY})
foreach (t ${targets})
add_executable (${t} ${t}.cpp)
target_link_libraries (${t} ${libraries})
endforeach (t ${targets})