pp, PERFORMANCE_SOLVER);
    util::zeroes(n,u2);
    util::zeroes(n,y2);
    util::copy(n,w,res);
    util::copy(n,y1,res);
    util::zeroes(n,d);
    Performance_stopMonitor(pp, PERFORMANCE_SOLVER);

    Performance_startMonitor(pp, PERFORMANCE_MVM);
    A->MatrixVector_CSR_OFFSET0(PASO_ONE, y1, PASO_ZERO, temp_vector);
    Performance_stopMonitor(pp, PERFORMANCE_MVM);
    Performance_startMonitor(pp, PERFORMANCE_SOLVER);

    Performance_stopMonitor(pp, PERFORMANCE_SOLVER);
    Performance_startMonitor(pp, PERFORMANCE_PRECONDITIONER);
    A->solvePreconditioner(v,temp_vector);
    Performance_stopMonitor(pp, PERFORMANCE_PRECONDITIONER);

    Performance_startMonitor(pp, PERFORMANCE_SOLVER);
    // v = P^{-1} * A y1
    util::copy(n, u1, v);

    theta = 0.0;
    eta = 0.0;
    tau = util::l2(n,res,A->mpi_info);
    rho = tau * tau;
    norm_of_residual=tau;

    while (!(convergeFlag || maxIterFlag || breakFlag || (status!=NoError) )) {
        sigma = util::innerProduct(n,res,v,A->mpi_info);
        if (! (breakFlag = (std::abs(sigma) == 0.))) {
            alpha = rho / sigma;
            for (j=0; j<=1; j=j+1) {
                // Compute y2 and u2 only if you have to
                if (j == 1) {
                    // y2 = y1 - alpha*v
                    util::linearCombination(n, y2, PASO_ONE, y1, -alpha, v);

                    Performance_stopMonitor(pp, PERFORMANCE_SOLVER);
                    Performance_startMonitor(pp, PERFORMANCE_MVM);
                    A->MatrixVector_CSR_OFFSET0(PASO_ONE, y2,PASO_ZERO,temp_vector);
                    Performance_stopMonitor(pp, PERFORMANCE_MVM);
                    Performance_startMonitor(pp, PERFORMANCE_SOLVER);

                    Performance_stopMonitor(pp, PERFORMANCE_SOLVER);
                    Performance_startMonitor(pp, PERFORMANCE_PRECONDITIONER);
                    A->solvePreconditioner(u2,temp_vector);
                    Performance_stopMonitor(pp, PERFORMANCE_PRECONDITIONER);
                    Performance_startMonitor(pp, PERFORMANCE_SOLVER);
                    // u2 = P^{-1} * A y2
                }
                m = 2 * (num_iter+1) - 2 + (j+1);

                if (j==0) {
                    // w = w - alpha * u1
                    util::update(n, 1., w, -alpha, u1);
                    // d = (theta * theta * eta / alpha)*d + y1
                    util::update(n, (theta * theta * eta / alpha), d, 1., y1);
                } else if (j==1) {
                    // w = w - -alpha * u2
                    util::update(n, 1., w, -alpha, u2);
                    // d = (theta * theta * eta / alpha)*d + y2
                    util::update(n, (theta * theta * eta / alpha), d, 1., y2);
                }

                theta =util::l2(n,w,A->mpi_info)/tau;
                //printf("tau = %e, %e %e\n",tau, util::l2(n,w,A->mpi_info)/tau, theta);
                c = PASO_ONE / sqrt(PASO_ONE + theta * theta);
                tau = tau * theta * c;
                eta = c * c * alpha;
                util::update(n,1.,x,eta,d);
            }

            breakFlag = (std::abs(rho) == 0);

            rhon = util::innerProduct(n, res, w, A->mpi_info);
            beta = rhon / rho;
            rho = rhon;

            // y1 = w + beta * y2
            util::linearCombination(n,y1, PASO_ONE,w,beta,y2);

            Performance_stopMonitor(pp, PERFORMANCE_SOLVER);
            Performance_startMonitor(pp, PERFORMANCE_MVM);
            A->MatrixVector_CSR_OFFSET0(PASO_ONE, y1, PASO_ZERO, temp_vector);
            Performance_stopMonitor(pp, PERFORMANCE_MVM);

            Performance_startMonitor(pp, PERFORMANCE_PRECONDITIONER);
            A->solvePreconditioner(u1, temp_vector);
            Performance_stopMonitor(pp, PERFORMANCE_PRECONDITIONER);
            Performance_startMonitor(pp, PERFORMANCE_SOLVER);
            //  u1 = P^{-1} * A y1

            // t = u2 + beta * v
            util::linearCombination(n,temp_vector,PASO_ONE,u2,beta,v);
            // v = u1 + beta * t
            util::linearCombination(n,v,PASO_ONE,u1,beta,temp_vector);
        }
        maxIterFlag = (num_iter > maxit);
        norm_of_residual = tau*sqrt((double)(m + 1));
        convergeFlag = (norm_of_residual<(*tolerance));

        if (maxIterFlag) {
            status = MaxIterReached;
        } else if (breakFlag) {
            status = Breakdown;
        }
        ++num_iter;
    } // end of iterations

    Performance_stopMonitor(pp, PERFORMANCE_SOLVER);
    delete[] u1;
    delete[] u2;
    delete[] y1;
    delete[] y2;
    delete[] d;
    delete[] w;
    delete[] v;
    delete[] temp_vector;
    delete[] res;
    *iter=num_iter;
    *tolerance=norm_of_residual;
    return status;
}

} // namespace paso

You are here: Home / Consulting / Are 2023 Consumer Privacy Laws Crippling Your Lead Generation?
Are 2023 Consumer Privacy Laws Crippling Your Lead Generation?
After the news of Sephora getting hit with a $1.2M fine from the Attorney General for violation of California’s consumer privacy laws, businesses and consumers alike are becoming more conscious of consumer data privacy laws. In the United States, there is a lack of federal consumer privacy laws which has left consumers’ information at the mercy of the WWW (wild, wild, West) – the internet. Texas is not yet implementing new consumer privacy laws meaning the new consumer data privacy laws will not directly affect your privacy policy.
What is it that you should consider as a Texas business owner? As with any new law, it started as a Bill that was written with the intent of being the voice of the people. The new consumer data privacy laws that are coming online next year are a result of hearing consumers’ cries for companies to keep their private information, well, private.
There likely have been several times you noticed an advertisement for a product you were searching for on Google. Or the creepiest, when you were simply talking about a product and open your phone and see an ad for it. Consumers are taking note of this and losing trust, becoming suspicious, and are less willing to hand over their information.
While you are likely not a multi-billion-dollar tech corporation stockpiling data to sell to your multi-national corporation friends, consumers are still paranoid and could be less willing to fill out your contact forms or join your mailing list.
Trust should be at the forefront of your company’s online presence if your business survives on online lead generation, retargeting, or email marketing. Texas business owners can use the provisions stated in these new data privacy protection laws and begin to implement protections for their consumers to build online trust.
So, while many will say, ‘there may not be a direct effect from these new privacy laws’, we are going to see a connection between the level of trust in consumers and the number of leads you will receive on your site.
As tracking has become more apparent, consumers are beginning to become more protective of their personal information and mindful of the information they share with any given business website. Building consumers’ trust level will assist in allowing