/* Copyright (c) 2009 Ian Piumarta
 * All rights reserved.
 * See the file COPYING for details.
 */

#include "_mpint.h"

/* r = r | a */

mp_t *mp_or(mp_t *r, mp_t *a)
{
  if (mp_zerop(a)) return r;
  if (mp_zerop(r)) return mp_copy(r, a);
  size_t v= a->width, w= _mp_max(v, r->width), i= 0;
  _mp_grow(r, w);
  while (i < v) {
    mp_digit_t x= _mp_digitAt(r, i), y= _mp_digitAt(a, i), z= x | y;
    _mp_digitAtPut(r, i++, z);
  }
  return r;
}

