An integrated circuit device comprising: multiplier circuitry configured to determine a plurality of columns of subproducts by multiplying a plurality of values, wherein each column of the plurality of columns comprises one or more subproducts of a plurality of subproducts; adder circuitry configured to determine a plurality of sums, wherein each sum of the plurality of sums is a sum of one column of the plurality of columns, wherein a first portion of the adder circuitry associated with a first column of the plurality of columns is configured to receive a first value associated with the first column, a second value associated with the first column, and a third value associated with a second column of the plurality of columns that differs from the first column, wherein the third value is a carry-out value generated by a second portion of the adder circuitry associated with the second column; one or more lookup-tables configured to generate a plurality of modulus values from a portion of the plurality of sums; and second adder circuitry configured to determine a sum of the plurality of modulus values; characterized in that the plurality of columns is grouped based on the number of subproducts in each column, wherein the second adder circuitry is further configured to determine the plurality of sums of modulus values based on the number of subproducts in each column, wherein the sums of modulus values for columns with smaller numbers of subproducts are determined before sums of modulus values for columns with larger numbers of subproducts, and wherein each sum of the plurality of sums is replaced with the modulus of this sum. multiplier circuitry configured to determine a plurality of columns of subproducts by multiplying a plurality of values, wherein each column of the plurality of columns comprises one or more subproducts of a plurality of subproducts; adder circuitry configured to determine a plurality of sums, wherein each sum of the plurality of sums is a sum of one column of the plurality of columns, wherein a first portion of the adder circuitry associated with a first column of the plurality of columns is configured to receive a first value associated with the first column, a second value associated with the first column, and a third value associated with a second column of the plurality of columns that differs from the first column, wherein the third value is a carry-out value generated by a second portion of the adder circuitry associated with the second column; one or more lookup-tables configured to generate a plurality of modulus values from a portion of the plurality of sums; and second adder circuitry configured to determine a sum of the plurality of modulus values; characterized in that the plurality of columns is grouped based on the number of subproducts in each column, wherein the second adder circuitry is further configured to determine the plurality of sums of modulus values based on the number of subproducts in each column, wherein the sums of modulus values for columns with smaller numbers of subproducts are determined before sums of modulus values for columns with larger numbers of subproducts, and wherein each sum of the plurality of sums is replaced with the modulus of this sum. <EOS>