Speeding-Up Symbol-Level Precoding Using Separable and Dual Optimizations