Lines Matching refs:op2
42 static void mpi_addsub(mpi *rop, mpi *op1, mpi *op2, int sub);
45 static INLINE BNS mpi_logic(BNS op1, BNS op2, BNS op);
46 static void mpi_log(mpi *rop, mpi *op1, mpi *op2, BNS op);
337 mpi_add(mpi *rop, mpi *op1, mpi *op2)
339 mpi_addsub(rop, op1, op2, 0);
343 mpi_addi(mpi *rop, mpi *op1, long op2)
349 _mpi_seti(&op, op2);
355 mpi_sub(mpi *rop, mpi *op1, mpi *op2)
357 mpi_addsub(rop, op1, op2, 1);
361 mpi_subi(mpi *rop, mpi *op1, long op2)
367 _mpi_seti(&op, op2);
373 mpi_addsub(mpi *rop, mpi *op1, mpi *op2, int sub)
377 if (sub ^ (op1->sign == op2->sign)) {
379 xlen = MAX(op1->size, op2->size) + 1;
384 rop->size = mp_add(rop->digs, op1->digs, op2->digs,
385 op1->size, op2->size);
391 cmp = mpi_cmpabs(op1, op2);
398 xlen = MAX(op1->size, op2->size);
404 rop->size = mp_sub(rop->digs, op1->digs, op2->digs,
405 op1->size, op2->size);
409 rop->size = mp_sub(rop->digs, op2->digs, op1->digs,
410 op2->size, op1->size);
411 rop->sign = sub ^ op2->sign;
418 mpi_mul(mpi *rop, mpi *op1, mpi *op2)
425 sign = op1->sign ^ op2->sign;
436 if (rop->alloc < op2->size) {
437 rop->digs = mp_realloc(rop->digs, sizeof(BNS) * op2->size);
438 rop->alloc = op2->size;
440 rop->size = op2->size;
441 memmove(rop->digs, op2->digs, sizeof(BNS) * op2->size);
442 rop->sign = op2->size > 1 || *op2->digs ? sign : 0;
447 else if (op2->size == 1) {
448 if (*op2->digs == 0) {
453 else if (*op2->digs == 1) {
468 xsize = op1->size + op2->size;
469 if (rop->digs == op1->digs || rop->digs == op2->digs)
482 xsize = mp_mul(digs, op1->digs, op2->digs, op1->size, op2->size);
497 mpi_muli(mpi *rop, mpi *op1, long op2)
503 _mpi_seti(&op, op2);
1190 mpi_logic(BNS op1, BNS op2, BNS op)
1194 return (op1 & op2);
1196 return (op1 | op2);
1198 return (op1 ^ op2);
1205 mpi_log(mpi *rop, mpi *op1, mpi *op2, BNS op)
1217 size2 = op2->size;
1220 sign2 = op2->sign ? SMASK : 0;
1234 digs2 = op2->digs;
1288 mpi_and(mpi *rop, mpi *op1, mpi *op2)
1290 mpi_log(rop, op1, op2, '&');
1294 mpi_ior(mpi *rop, mpi *op1, mpi *op2)
1296 mpi_log(rop, op1, op2, '|');
1300 mpi_xor(mpi *rop, mpi *op1, mpi *op2)
1302 mpi_log(rop, op1, op2, '^');
1347 mpi_cmp(mpi *op1, mpi *op2)
1349 if (op1->sign ^ op2->sign)
1352 if (op1->size == op2->size) {
1356 if ((cmp = (long)op1->digs[i] - (long)op2->digs[i]) != 0)
1362 return ((op1->size < op2->size) ^ op1->sign ? -1 : 1);
1366 mpi_cmpi(mpi *op1, long op2)
1377 return (op2 == cmp && op1->sign ? 0 : op1->sign ? -1 : 1);
1382 return (cmp - op2);
1386 mpi_cmpabs(mpi *op1, mpi *op2)
1388 if (op1->size == op2->size) {
1392 if ((cmp = (long)op1->digs[i] - (long)op2->digs[i]) != 0)
1398 return ((op1->size < op2->size) ? -1 : 1);
1402 mpi_cmpabsi(mpi *op1, long op2)
1413 return (cmp > op2 ? 1 : cmp == op2 ? 0 : -1);
1423 mpi_swap(mpi *op1, mpi *op2)
1425 if (op1 != op2) {
1429 memcpy(op1, op2, sizeof(mpi));
1430 memcpy(op2, &swap, sizeof(mpi));