updated NL
C mul restructuring: use triang mul