__device__ uint32_t gpu_error_term(uint32_t ap_weight_mantissa,
                                   uint32_t ap_input_mantissa,
                                   uint32_t ap_mask,
                                   uint32_t number_of_trunc_bits)
{
    uint32_t error_value = 0;

    uint32_t temp_shift_a = ap_weight_mantissa;
    uint32_t temp_shift_b = ap_input_mantissa & ap_mask;

    uint32_t counter_trunc;
    uint32_t temp;

    // Go through the bits
    for (counter_trunc = 0; counter_trunc < number_of_trunc_bits;
         counter_trunc++)
    {
        temp = temp_shift_a & 1;
        if (temp == 1)
        {
            error_value += temp_shift_b & ap_mask;
        }
        temp_shift_a >>= 1;
        temp_shift_b <<= 1;
    }

    return error_value;
}