=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/cplx.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -p -r1.7 -r1.8 --- OpenXM_contrib2/asir2000/engine/cplx.c 2015/08/20 08:42:07 1.7 +++ OpenXM_contrib2/asir2000/engine/cplx.c 2018/03/29 01:32:51 1.8 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/engine/cplx.c,v 1.6 2009/03/27 14:42:29 ohara Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/engine/cplx.c,v 1.7 2015/08/20 08:42:07 noro Exp $ */ #include "ca.h" #include "base.h" @@ -54,148 +54,148 @@ void toreim(a,rp,ip) Num a; Num *rp,*ip; { - if ( !a ) - *rp = *ip = 0; + if ( !a ) + *rp = *ip = 0; #if defined(INTERVAL) - else if ( NID(a) <= N_PRE_C ) { + else if ( NID(a) <= N_PRE_C ) { #else - else if ( NID(a) <= N_B ) { + else if ( NID(a) <= N_B ) { #endif - *rp = a; *ip = 0; - } else { - *rp = ((C)a)->r; *ip = ((C)a)->i; - } + *rp = a; *ip = 0; + } else { + *rp = ((C)a)->r; *ip = ((C)a)->i; + } } void reimtocplx(r,i,cp) Num r,i; Num *cp; { - C c; + C c; - if ( !i ) - *cp = r; - else { - NEWC(c); c->r = r; c->i = i; *cp = (Num)c; - } + if ( !i ) + *cp = r; + else { + NEWC(c); c->r = r; c->i = i; *cp = (Num)c; + } } void addcplx(a,b,c) Num a,b; Num *c; { - Num ar,ai,br,bi,cr,ci; + Num ar,ai,br,bi,cr,ci; - if ( !a ) - *c = b; - else if ( !b ) - *c = a; + if ( !a ) + *c = b; + else if ( !b ) + *c = a; #if defined(INTERVAL) - else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) + else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) #else - else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) + else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) #endif - addnum(0,a,b,c); - else { - toreim(a,&ar,&ai); toreim(b,&br,&bi); - addnum(0,ar,br,&cr); addnum(0,ai,bi,&ci); - reimtocplx(cr,ci,c); - } + addnum(0,a,b,c); + else { + toreim(a,&ar,&ai); toreim(b,&br,&bi); + addnum(0,ar,br,&cr); addnum(0,ai,bi,&ci); + reimtocplx(cr,ci,c); + } } void subcplx(a,b,c) Num a,b; Num *c; { - Num ar,ai,br,bi,cr,ci; + Num ar,ai,br,bi,cr,ci; - if ( !a ) - chsgnnum(b,c); - else if ( !b ) - *c = a; + if ( !a ) + chsgnnum(b,c); + else if ( !b ) + *c = a; #if defined(INTERVAL) - else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) + else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) #else - else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) + else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) #endif - subnum(0,a,b,c); - else { - toreim(a,&ar,&ai); toreim(b,&br,&bi); - subnum(0,ar,br,&cr); subnum(0,ai,bi,&ci); - reimtocplx(cr,ci,c); - } + subnum(0,a,b,c); + else { + toreim(a,&ar,&ai); toreim(b,&br,&bi); + subnum(0,ar,br,&cr); subnum(0,ai,bi,&ci); + reimtocplx(cr,ci,c); + } } void mulcplx(a,b,c) Num a,b; Num *c; { - Num ar,ai,br,bi,cr,ci,t,s; + Num ar,ai,br,bi,cr,ci,t,s; - if ( !a || !b ) - *c = 0; + if ( !a || !b ) + *c = 0; #if defined(INTERVAL) - else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) + else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) #else - else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) + else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) #endif - mulnum(0,a,b,c); - else { - toreim(a,&ar,&ai); toreim(b,&br,&bi); - mulnum(0,ar,br,&t); mulnum(0,ai,bi,&s); subnum(0,t,s,&cr); - mulnum(0,ar,bi,&t); mulnum(0,ai,br,&s); addnum(0,t,s,&ci); - reimtocplx(cr,ci,c); - } + mulnum(0,a,b,c); + else { + toreim(a,&ar,&ai); toreim(b,&br,&bi); + mulnum(0,ar,br,&t); mulnum(0,ai,bi,&s); subnum(0,t,s,&cr); + mulnum(0,ar,bi,&t); mulnum(0,ai,br,&s); addnum(0,t,s,&ci); + reimtocplx(cr,ci,c); + } } void divcplx(a,b,c) Num a,b; Num *c; { - Num ar,ai,br,bi,cr,ci,t,s,u,w; + Num ar,ai,br,bi,cr,ci,t,s,u,w; - if ( !b ) - error("divcplx : division by 0"); - else if ( !a ) - *c = 0; + if ( !b ) + error("divcplx : division by 0"); + else if ( !a ) + *c = 0; #if defined(INTERVAL) - else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) + else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) #else - else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) + else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) #endif - divnum(0,a,b,c); - else { - toreim(a,&ar,&ai); toreim(b,&br,&bi); - mulnum(0,br,br,&t); mulnum(0,bi,bi,&s); addnum(0,t,s,&u); - mulnum(0,ar,br,&t); mulnum(0,ai,bi,&s); - addnum(0,t,s,&w); divnum(0,w,u,&cr); - mulnum(0,ar,bi,&t); mulnum(0,ai,br,&s); - subnum(0,s,t,&w); divnum(0,w,u,&ci); - reimtocplx(cr,ci,c); - } + divnum(0,a,b,c); + else { + toreim(a,&ar,&ai); toreim(b,&br,&bi); + mulnum(0,br,br,&t); mulnum(0,bi,bi,&s); addnum(0,t,s,&u); + mulnum(0,ar,br,&t); mulnum(0,ai,bi,&s); + addnum(0,t,s,&w); divnum(0,w,u,&cr); + mulnum(0,ar,bi,&t); mulnum(0,ai,br,&s); + subnum(0,s,t,&w); divnum(0,w,u,&ci); + reimtocplx(cr,ci,c); + } } void pwrcplx(a,e,c) Num a,e; Num *c; { - int ei; - Num t; + int ei; + Num t; - if ( !e ) - *c = (Num)ONE; - else if ( !a ) - *c = 0; - else if ( !INT(e) ) - error("pwrcplx : not implemented (use eval())."); - else { - ei = SGN((Q)e)*QTOS((Q)e); - pwrcplx0(a,ei,&t); - if ( SGN((Q)e) < 0 ) - divnum(0,(Num)ONE,t,c); - else - *c = t; - } + if ( !e ) + *c = (Num)ONE; + else if ( !a ) + *c = 0; + else if ( !INT(e) ) + error("pwrcplx : not implemented (use eval())."); + else { + ei = SGN((Q)e)*QTOS((Q)e); + pwrcplx0(a,ei,&t); + if ( SGN((Q)e) < 0 ) + divnum(0,(Num)ONE,t,c); + else + *c = t; + } } void pwrcplx0(a,e,c) @@ -203,69 +203,69 @@ Num a; int e; Num *c; { - Num t,s; + Num t,s; - if ( e == 1 ) - *c = a; - else { - pwrcplx0(a,e/2,&t); - if ( !(e%2) ) - mulnum(0,t,t,c); - else { - mulnum(0,t,t,&s); mulnum(0,s,a,c); - } - } + if ( e == 1 ) + *c = a; + else { + pwrcplx0(a,e/2,&t); + if ( !(e%2) ) + mulnum(0,t,t,c); + else { + mulnum(0,t,t,&s); mulnum(0,s,a,c); + } + } } void chsgncplx(a,c) Num a,*c; { - Num r,i; + Num r,i; - if ( !a ) - *c = 0; + if ( !a ) + *c = 0; #if defined(INTERVAL) - else if ( NID(a) <= N_PRE_C ) + else if ( NID(a) <= N_PRE_C ) #else - else if ( NID(a) <= N_B ) + else if ( NID(a) <= N_B ) #endif - chsgnnum(a,c); - else { - chsgnnum(((C)a)->r,&r); chsgnnum(((C)a)->i,&i); - reimtocplx(r,i,c); - } + chsgnnum(a,c); + else { + chsgnnum(((C)a)->r,&r); chsgnnum(((C)a)->i,&i); + reimtocplx(r,i,c); + } } int cmpcplx(a,b) Num a,b; { - Num ar,ai,br,bi; - int s; + Num ar,ai,br,bi; + int s; - if ( !a ) { + if ( !a ) { #if defined(INTERVAL) - if ( !b || (NID(b)<=N_PRE_C) ) + if ( !b || (NID(b)<=N_PRE_C) ) #else - if ( !b || (NID(b)<=N_B) ) + if ( !b || (NID(b)<=N_B) ) #endif - return compnum(0,a,b); - else - return -1; - } else if ( !b ) { + return compnum(0,a,b); + else + return -1; + } else if ( !b ) { #if defined(INTERVAL) - if ( !a || (NID(a)<=N_PRE_C) ) + if ( !a || (NID(a)<=N_PRE_C) ) #else - if ( !a || (NID(a)<=N_B) ) + if ( !a || (NID(a)<=N_B) ) #endif - return compnum(0,a,b); - else - return 1; - } else { - toreim(a,&ar,&ai); toreim(b,&br,&bi); - s = compnum(0,ar,br); - if ( s ) - return s; - else - return compnum(0,ai,bi); - } + return compnum(0,a,b); + else + return 1; + } else { + toreim(a,&ar,&ai); toreim(b,&br,&bi); + s = compnum(0,ar,br); + if ( s ) + return s; + else + return compnum(0,ai,bi); + } }