title: Catch and compute overflow during multiplication of two large integers
body: <p>I am looking for an efficient (optionally standard, elegant and easy to implement) solution to multiply relatively large numbers, and store the result into one or several integers :</p>
  
  <p>Let say I have two 64 bits integers declared like this :</p>
  
  <pre><code>uint64_t a = xxx, b = yyy; 
  </code></pre>
  
  <p>When I do <code>a * b</code>, how can I detect if the operation results in an overflow and in this case store the carry somewhere?</p>
  
  <p>Please note that <em>I don't want to use any large-number library</em> since I have constraints on the way I store the numbers.</p>