improving non-linear algorithms