This is num_arith.c in view mode; [Download] [Up]
Changes file for /usr/local/src/kcl/./c/num_arith.c
Created on Wed May 15 11:52:07 1991
Usage \n@s[Original text\n@s|Replacement Text\n@s]
See the file rascal.ics.utexas.edu:/usr2/ftp/merge.c
for a program to merge change files. Anything not between
"\n@s[" and "\n@s]" is a simply a comment.
This file was constructed using emacs and merge.el
Enhancements Copyright (c) W. Schelter All rights reserved.
by (Bill Schelter) wfs@carl.ma.utexas.edu
****Change:(orig (10 10 a))
@s[*/
#include "include.h"
@s|*/
#include "include.h"
#include "mp.h"
@s]
****Change:(orig (16 17 c))
@s[int most, least;
{
object z;
@s|int most, least;
{ static long u [4]
= {0x01010004 ,0x01010004, 0,0};
GEN w;
int l;
if(most) {setlgef(u,4),l=4;}
else {l=3; setlgef(u,3);}
MP_START_LOW(w,u,l);
MP_NEXT_UP(w) = least;
if (most) MP_NEXT_UP(w) = most;
return make_integer(u);
}
@s]
****Change:(orig (19 29 d))
@s[ z = alloc_object(t_bignum);
vs_push(z);
z->big.big_car = least;
z->big.big_cdr = NULL;
@s, z->big.big_cdr = NULL;
return(vs_pop);
}
@s|
@s]
****Change:(orig (31 51 d))
@s[bignum3(most, middle, least)
int most, middle, least;
{
object z;
@s, return(vs_pop);
}
object
@s|
@s]
****Change:(orig (54 95 c))
@s[{
int s, h, l;
object z;
@s, return(make_fixnum(s*l));
@s|{ MPOP(return,mulss,i,j);
@s]
****Change:(orig (99 160 d))
@s[fix_big_times(i, b)
int i;
object b;
{
@s, return((object)z);
}
object
@s|
@s]
****Change:(orig (200 219 c))
@s[ if((i = fix(x)) == 0)
return(y);
if((j = fix(y)) == 0)
return(x);
@s, return(bignum2(-2, k & MASK));
@s| MPOP(return, addss,fix(x),fix(y));
@s]
****Change:(orig (221 233 c))
@s[ if ((i = fix(x)) == 0)
return(y);
z = (object)copy_big(y);
vs_push(z);
@s, vs_reset;
return(z);
@s| MPOP(return, addsi,fix(x),MP(y));
@s]
****Change:(orig (258 270 c))
@s[ if((j = fix(y)) == 0)
return(x);
z = (object)copy_big(x);
vs_push(z);
@s, vs_reset;
return(z);
@s| MPOP(return,addsi,fix(y),MP(x));
@s]
****Change:(orig (272 276 c))
@s[ z = (object)big_plus(x, y);
vs_push(z);
z = normalize_big_to_object(z);
vs_reset;
@s, return(z);
@s| MPOP(return,addii,MP(y),MP(x));
@s]
****Change:(orig (409 431 c))
@s[ i = fix(x);
if(i == 0)
return(small_fixnum(1));
if(i > 0)
@s, fix(z) = i;
return(z);
}
@s| MPOP(return, addss,1,fix(x));
@s]
****Change:(orig (433 434 c))
@s[ return(number_plus(x, small_fixnum(1)));
@s| MPOP(return, addsi,1,MP(x));
@s]
****Change:(orig (478 478 a))
@s[ case t_fixnum:
switch(type_of(y)) {
@s| case t_fixnum:
switch(type_of(y)) {
#define MOST_NEG_FIXNUM (1 << 31)
@s]
****Change:(orig (480 497 c))
@s[ if((j = fix(y)) == 0)
return(x);
if((i = fix(x)) >= 0)
if (j < 0)
@s, return(bignum2(-2, k & MASK));
@s| MPOP(return,subss,fix(x),fix(y));
@s]
****Change:(orig (499 511 c))
@s[ z = (object)big_minus(y);
vs_push(z);
if ((i = fix(x)) == 0)
;
@s, vs_reset;
return(z);
@s| MPOP(return, subsi,fix(x),MP(y));
@s]
****Change:(orig (536 548 c))
@s[ if((j = fix(y)) == 0)
return(x);
z = (object)copy_big(x);
vs_push(z);
@s, vs_reset;
return(z);
@s| MPOP(return,subis,MP(x),fix(y));
@s]
****Change:(orig (550 556 c))
@s[ y = (object)big_minus(y);
vs_push(y);
z = (object)big_plus(x, y);
vs_push(z);
@s, vs_reset;
return(z);
@s| MPOP(return,subii,MP(x),MP(y));
@s]
****Change:(orig (688 709 c))
@s[ i = fix(x);
if(i == 0)
return(small_fixnum(-1));
if(i > 0) {
@s, return(bignum2(-2, i & MASK));
@s| MPOP(return,addss,fix(x),-1);
@s]
****Change:(orig (711 712 c))
@s[ return(number_minus(x, small_fixnum(1)));
@s| MPOP(return,addsi,-1,MP(x));
@s]
****Change:(orig (755 755 c))
@s[ return(bignum2(1, 0));
@s| return make_bignum(ABS_MOST_NEGS);
@s]
****Change:(orig (757 758 c))
@s[ return(make_fixnum(-fix(x)));
@s| return(make_fixnum(-fix(x)));
@s]
****Change:(orig (760 765 c))
@s[ z = (object)big_minus(x);
vs_push(z);
z = normalize_big_to_object(z);
vs_reset;
@s, return(z);
@s| return big_minus(x);
@s]
****Change:(orig (810 810 c))
@s[ return(fixnum_times(fix(x), fix(y)));
@s| MPOP(return,mulss,fix(x),fix(y));
@s]
****Change:(orig (812 812 c))
@s[ return(fix_big_times(fix(x), y));
@s| MPOP(return,mulsi,fix(x),MP(y));
@s]
****Change:(orig (835 835 c))
@s[ return(fix_big_times(fix(y), x));
@s| MPOP(return,mulsi,fix(y),MP(x));
@s]
****Change:(orig (837 837 c))
@s[ return(big_big_times(x, y));
@s| MPOP(return,mulii,MP(y),MP(x));
@s]
****Change:(orig (1138 1138 a))
@s[object x, y;
object *qp, *rp;
@s|object x, y;
object *qp, *rp;
{ GEN res,quot,x0,y0;
save_avma;
if (type_of(x)==t_fixnum) x0 = stoi(fix(x));
else x0=MP(x);
if (type_of(y)==t_fixnum) y0 = stoi(fix(y));
else y0=MP(y);
res = dvmdii(x0,y0,");
restore_avma;
*qp = make_integer(res);
*rp = make_integer(quot);
return;
}
/* old
integer_quotient_remainder_1(x, y, qp, rp)
object x, y;
object *qp, *rp;
@s]
****Change:(orig (1197 1199 c))
@s[ y->big.big_car == 0 &&
y->big.big_cdr->big_car == 1 &&
y->big.big_cdr->big_cdr == NULL) {
@s| MP(y)[2] == MOST_NEGATIVE_FIX &&
lgef(MP(y)) == 1 &&
signe(MP(y)) < 0)
{
@s]
****Change:(orig (1203 1203 c))
@s[ *rp = small_fixnum(0);
return;
}
@s| *rp = small_fixnum(0);
return;
}
@s]
****Change:(orig (1211 1280 c))
@s[ if (ty == t_fixnum) {
if (fix(y) == 0)
zero_divisor();
x = (object)copy_big(x);
@s, *rp = normalize_big_to_object(*rp);
vs_reset;
return;
}
@s| if (ty == t_fixnum)
{
MPOP(*qp = ,divis,MP(x),fix(y));
*rp = make_fixnum(hiremainder);
return;
}
@s]
****Change:(orig (1281 1281 a))
@s[ else
@s| else
if (ty == t_bignum)
#define Dvmdii(a,b) dvmdii(a,b,&p1)
{GEN p1;
MPOP(*qp = ,dvmdii,MP(x),MP(y));
*rp = make_integer(p1);
return;}
else
@s]
****Change:(orig (1284 1284 c))
@s[ }
FEwrong_type_argument(Sinteger, y);
@s| }
FEwrong_type_argument(Sinteger, x);
@s]
****Change:(orig (1285 1285 a))
@s[}
@s|}
*/
@s]
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.