x = *s1_ptr++;
s2_limb += x;
*res_ptr++ = s2_limb; if (s2_limb < x) { /* sum is less than the left operand: handle carry */ while (--s1_size) {
x = *s1_ptr++ + 1; /* add carry */
*res_ptr++ = x; /* and store */ if (x) /* not 0 (no overflow): we can stop */ goto leave;
} return1; /* return carry (size of s1 to small) */
}
leave: if (res_ptr != s1_ptr) { /* not the same variable */
mpi_size_t i; /* copy the rest */ for (i = 0; i < s1_size - 1; i++)
res_ptr[i] = s1_ptr[i];
} return0; /* no carry */
}
x = *s1_ptr++;
s2_limb = x - s2_limb;
*res_ptr++ = s2_limb; if (s2_limb > x) { while (--s1_size) {
x = *s1_ptr++;
*res_ptr++ = x - 1; if (x) goto leave;
} return1;
}
leave: if (res_ptr != s1_ptr) {
mpi_size_t i; for (i = 0; i < s1_size - 1; i++)
res_ptr[i] = s1_ptr[i];
} return0;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.