home *** CD-ROM | disk | FTP | other *** search
- *** ../f77/src/f77pass1/expr.c.orig Tue Oct 29 15:15:54 1985
- --- ../f77/src/f77pass1/expr.c Tue Oct 29 15:22:42 1985
- ***************
- *** 151,157
- register Constp p;
-
- p = mkconst(t);
- ! p->const.cd[0] = d;
- return( (expptr) p );
- }
-
-
- --- 151,162 -----
- register Constp p;
-
- p = mkconst(t);
- ! #ifdef GFLOAT
- ! if (t==TYREAL)
- ! p->const.cr[0] = d;
- ! else
- ! #endif GFLOAT
- ! p->const.cd[0] = d;
- return( (expptr) p );
- }
-
- ***************
- *** 241,246
- p = mkconst( (rtype==TYDREAL||itype==TYDREAL) ? TYDCOMPLEX : TYCOMPLEX);
- if( ISINT(rtype) )
- p->const.cd[0] = realp->constblock.const.ci;
- else p->const.cd[0] = realp->constblock.const.cd[0];
- if( ISINT(itype) )
- p->const.cd[1] = imagp->constblock.const.ci;
-
- --- 246,255 -----
- p = mkconst( (rtype==TYDREAL||itype==TYDREAL) ? TYDCOMPLEX : TYCOMPLEX);
- if( ISINT(rtype) )
- p->const.cd[0] = realp->constblock.const.ci;
- + #ifdef GFLOAT
- + else if (rtype==TYREAL || itype==TYREAL)
- + p->const.cr[0] = realp->constblock.const.cr[0];
- + #endif GFLOAT
- else p->const.cd[0] = realp->constblock.const.cd[0];
- if( ISINT(itype) )
- p->const.cd[1] = imagp->constblock.const.ci;
- ***************
- *** 244,249
- else p->const.cd[0] = realp->constblock.const.cd[0];
- if( ISINT(itype) )
- p->const.cd[1] = imagp->constblock.const.ci;
- else p->const.cd[1] = imagp->constblock.const.cd[0];
- }
- else
-
- --- 253,262 -----
- else p->const.cd[0] = realp->constblock.const.cd[0];
- if( ISINT(itype) )
- p->const.cd[1] = imagp->constblock.const.ci;
- + #ifdef GFLOAT
- + else if (rtype==TYREAL || itype==TYREAL)
- + p->const.cr[1] = imagp->constblock.const.cr[0];
- + #endif GFLOAT
- else p->const.cd[1] = imagp->constblock.const.cd[0];
- }
- else
- ***************
- *** 2255,2261
- lv->ci = rv->ccp[0];
- else if( ISINT(rt) )
- lv->ci = rv->ci;
- ! else lv->ci = rv->cd[0];
- break;
-
- case TYCOMPLEX:
-
- --- 2268,2278 -----
- lv->ci = rv->ccp[0];
- else if( ISINT(rt) )
- lv->ci = rv->ci;
- ! #ifdef GFLOAT
- ! else if (rt==TYREAL || rt==TYCOMPLEX)
- ! lv->ci = rv->cr[0]; /* should test */
- ! #endif GFLOAT
- ! else lv->ci = rv->cd[0];
- break;
-
- case TYCOMPLEX:
- ***************
- *** 2258,2264
- else lv->ci = rv->cd[0];
- break;
-
- ! case TYCOMPLEX:
- case TYDCOMPLEX:
- switch(rt)
- {
-
- --- 2275,2305 -----
- else lv->ci = rv->cd[0];
- break;
-
- ! case TYCOMPLEX:
- ! #ifdef GFLOAT
- ! switch(rt)
- ! {
- ! case TYSHORT:
- ! case TYLONG:
- ! /* fall through and do real assignment of
- ! first element */
- ! case TYREAL:
- ! case TYDREAL:
- ! lv->cr[1] = 0; break;
- ! case TYCOMPLEX:
- ! lv->cr[1] = rv->cr[1]; break;
- ! case TYDCOMPLEX: /* should check range here */
- ! lv->cr[1] = rv->cd[1]; break;
- ! }
- ! case TYREAL:
- ! if( ISINT(rt) )
- ! lv->cr[0] = rv->ci;
- ! else if (rt==TYREAL || rt==TYCOMPLEX)
- ! lv->cr[0] = rv->cr[0];
- ! else lv->cr[0] = rv->cd[0]; /* should test range */
- ! break;
- !
- ! #endif GFLOAT
- case TYDCOMPLEX:
- switch(rt)
- {
- ***************
- *** 2270,2276
- case TYREAL:
- case TYDREAL:
- lv->cd[1] = 0; break;
- ! case TYCOMPLEX:
- case TYDCOMPLEX:
- lv->cd[1] = rv->cd[1]; break;
- }
-
- --- 2311,2320 -----
- case TYREAL:
- case TYDREAL:
- lv->cd[1] = 0; break;
- ! case TYCOMPLEX:
- ! #ifdef GFLOAT
- ! lv->cd[1] = rv->cr[1]; break;
- ! #endif GFLOAT
- case TYDCOMPLEX:
- lv->cd[1] = rv->cd[1]; break;
- }
- ***************
- *** 2274,2280
- case TYDCOMPLEX:
- lv->cd[1] = rv->cd[1]; break;
- }
- !
- case TYREAL:
- case TYDREAL:
- if( ISINT(rt) )
-
- --- 2318,2324 -----
- case TYDCOMPLEX:
- lv->cd[1] = rv->cd[1]; break;
- }
- ! #ifndef GFLOAT
- case TYREAL:
- #endif GFLOAT
- case TYDREAL:
- ***************
- *** 2276,2281
- }
-
- case TYREAL:
- case TYDREAL:
- if( ISINT(rt) )
- lv->cd[0] = rv->ci;
-
- --- 2320,2326 -----
- }
- #ifndef GFLOAT
- case TYREAL:
- + #endif GFLOAT
- case TYDREAL:
- if( ISINT(rt) )
- lv->cd[0] = rv->ci;
- ***************
- *** 2279,2284
- case TYDREAL:
- if( ISINT(rt) )
- lv->cd[0] = rv->ci;
- else lv->cd[0] = rv->cd[0];
- break;
-
-
- --- 2324,2333 -----
- case TYDREAL:
- if( ISINT(rt) )
- lv->cd[0] = rv->ci;
- + #ifdef GFLOAT
- + else if (rt==TYREAL || rt==TYCOMPLEX)
- + lv->cd[0] = rv->cr[0];
- + #endif GFLOAT
- else lv->cd[0] = rv->cd[0];
- break;
-
- ***************
- *** 2300,2306
- p->const.ci = - p->const.ci;
- break;
-
- ! case TYCOMPLEX:
- case TYDCOMPLEX:
- p->const.cd[1] = - p->const.cd[1];
- /* fall through and do the real parts */
-
- --- 2349,2362 -----
- p->const.ci = - p->const.ci;
- break;
-
- ! case TYCOMPLEX:
- ! #ifdef GFLOAT
- ! p->const.cr[1] = - p->const.cr[1];
- ! /* fall through and do the real parts */
- ! case TYREAL:
- ! p->const.cr[0] = - p->const.cr[0];
- ! break;
- ! #endif GFLOAT
- case TYDCOMPLEX:
- p->const.cd[1] = - p->const.cd[1];
- /* fall through and do the real parts */
- ***************
- *** 2304,2309
- case TYDCOMPLEX:
- p->const.cd[1] = - p->const.cd[1];
- /* fall through and do the real parts */
- case TYREAL:
- case TYDREAL:
- p->const.cd[0] = - p->const.cd[0];
-
- --- 2360,2366 -----
- case TYDCOMPLEX:
- p->const.cd[1] = - p->const.cd[1];
- /* fall through and do the real parts */
- + #ifndef GFLOAT
- case TYREAL:
- #endif GFLOAT
- case TYDREAL:
- ***************
- *** 2305,2310
- p->const.cd[1] = - p->const.cd[1];
- /* fall through and do the real parts */
- case TYREAL:
- case TYDREAL:
- p->const.cd[0] = - p->const.cd[0];
- break;
-
- --- 2362,2368 -----
- /* fall through and do the real parts */
- #ifndef GFLOAT
- case TYREAL:
- + #endif GFLOAT
- case TYDREAL:
- p->const.cd[0] = - p->const.cd[0];
- break;
- ***************
- *** 2329,2335
- case TYLONG:
- powp->ci = 1;
- break;
- ! case TYCOMPLEX:
- case TYDCOMPLEX:
- powp->cd[1] = 0;
- case TYREAL:
-
- --- 2387,2399 -----
- case TYLONG:
- powp->ci = 1;
- break;
- ! case TYCOMPLEX:
- ! #ifdef GFLOAT
- ! powp->cr[1] = 0;
- ! case TYREAL:
- ! powp->cr[0] = 1;
- ! break;
- ! #endif GFLOAT
- case TYDCOMPLEX:
- powp->cd[1] = 0;
- #ifndef GFLOAT
- ***************
- *** 2332,2337
- case TYCOMPLEX:
- case TYDCOMPLEX:
- powp->cd[1] = 0;
- case TYREAL:
- case TYDREAL:
- powp->cd[0] = 1;
-
- --- 2396,2402 -----
- #endif GFLOAT
- case TYDCOMPLEX:
- powp->cd[1] = 0;
- + #ifndef GFLOAT
- case TYREAL:
- #endif GFLOAT
- case TYDREAL:
- ***************
- *** 2333,2338
- case TYDCOMPLEX:
- powp->cd[1] = 0;
- case TYREAL:
- case TYDREAL:
- powp->cd[0] = 1;
- break;
-
- --- 2398,2404 -----
- powp->cd[1] = 0;
- #ifndef GFLOAT
- case TYREAL:
- + #endif GFLOAT
- case TYDREAL:
- powp->cd[0] = 1;
- break;
- ***************
- *** 2383,2388
-
- /* do constant operation cp = a op b */
-
-
- LOCAL consbinop(opcode, type, cp, ap, bp)
- int opcode, type;
-
- --- 2449,2457 -----
-
- /* do constant operation cp = a op b */
-
- + #ifdef GFLOAT
- + struct rcomplex { double real, imag; };
- + #endif GFLOAT
-
- LOCAL consbinop(opcode, type, cp, ap, bp)
- int opcode, type;
- ***************
- *** 2390,2395
- {
- int k;
- double temp;
-
- switch(opcode)
- {
-
- --- 2459,2467 -----
- {
- int k;
- double temp;
- + #ifdef GFLOAT
- + struct rcomplex fr, ar, br;
- + #endif GFLOAT
-
- switch(opcode)
- {
- ***************
- *** 2401,2406
- cp->ci = ap->ci + bp->ci;
- break;
- case TYCOMPLEX:
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] + bp->cd[1];
- case TYREAL:
-
- --- 2473,2484 -----
- cp->ci = ap->ci + bp->ci;
- break;
- case TYCOMPLEX:
- + #ifdef GFLOAT
- + cp->cr[1] = ap->cr[1] + bp->cr[1];
- + case TYREAL:
- + cp->cr[0] = ap->cr[0] + bp->cr[0];
- + break;
- + #endif GFLOAT
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] + bp->cd[1];
- #ifndef GFLOAT
- ***************
- *** 2403,2408
- case TYCOMPLEX:
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] + bp->cd[1];
- case TYREAL:
- case TYDREAL:
- cp->cd[0] = ap->cd[0] + bp->cd[0];
-
- --- 2481,2487 -----
- #endif GFLOAT
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] + bp->cd[1];
- + #ifndef GFLOAT
- case TYREAL:
- #endif GFLOAT
- case TYDREAL:
- ***************
- *** 2404,2409
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] + bp->cd[1];
- case TYREAL:
- case TYDREAL:
- cp->cd[0] = ap->cd[0] + bp->cd[0];
- break;
-
- --- 2483,2489 -----
- cp->cd[1] = ap->cd[1] + bp->cd[1];
- #ifndef GFLOAT
- case TYREAL:
- + #endif GFLOAT
- case TYDREAL:
- cp->cd[0] = ap->cd[0] + bp->cd[0];
- break;
- ***************
- *** 2417,2423
- case TYLONG:
- cp->ci = ap->ci - bp->ci;
- break;
- ! case TYCOMPLEX:
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] - bp->cd[1];
- case TYREAL:
-
- --- 2497,2509 -----
- case TYLONG:
- cp->ci = ap->ci - bp->ci;
- break;
- ! case TYCOMPLEX:
- ! #ifdef GFLOAT
- ! cp->cr[1] = ap->cr[1] - bp->cr[1];
- ! case TYREAL:
- ! cp->cr[0] = ap->cr[0] - bp->cr[0];
- ! break;
- ! #endif GFLOAT
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] - bp->cd[1];
- #ifndef GFLOAT
- ***************
- *** 2420,2425
- case TYCOMPLEX:
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] - bp->cd[1];
- case TYREAL:
- case TYDREAL:
- cp->cd[0] = ap->cd[0] - bp->cd[0];
-
- --- 2506,2512 -----
- #endif GFLOAT
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] - bp->cd[1];
- + #ifndef GFLOAT
- case TYREAL:
- #endif GFLOAT
- case TYDREAL:
- ***************
- *** 2421,2426
- case TYDCOMPLEX:
- cp->cd[1] = ap->cd[1] - bp->cd[1];
- case TYREAL:
- case TYDREAL:
- cp->cd[0] = ap->cd[0] - bp->cd[0];
- break;
-
- --- 2508,2514 -----
- cp->cd[1] = ap->cd[1] - bp->cd[1];
- #ifndef GFLOAT
- case TYREAL:
- + #endif GFLOAT
- case TYDREAL:
- cp->cd[0] = ap->cd[0] - bp->cd[0];
- break;
- ***************
- *** 2434,2440
- case TYLONG:
- cp->ci = ap->ci * bp->ci;
- break;
- ! case TYREAL:
- case TYDREAL:
- cp->cd[0] = ap->cd[0] * bp->cd[0];
- break;
-
- --- 2522,2532 -----
- case TYLONG:
- cp->ci = ap->ci * bp->ci;
- break;
- ! case TYREAL:
- ! #ifdef GFLOAT
- ! cp->cr[0] = ap->cr[0] * bp->cr[0];
- ! break;
- ! #endif GFLOAT
- case TYDREAL:
- cp->cd[0] = ap->cd[0] * bp->cd[0];
- break;
- ***************
- *** 2439,2444
- cp->cd[0] = ap->cd[0] * bp->cd[0];
- break;
- case TYCOMPLEX:
- case TYDCOMPLEX:
- temp = ap->cd[0] * bp->cd[0] -
- ap->cd[1] * bp->cd[1] ;
-
- --- 2531,2544 -----
- cp->cd[0] = ap->cd[0] * bp->cd[0];
- break;
- case TYCOMPLEX:
- + #ifdef GFLOAT
- + temp = ap->cr[0] * bp->cr[0] -
- + ap->cr[1] * bp->cr[1] ;
- + cp->cr[1] = ap->cr[0] * bp->cr[1] +
- + ap->cr[1] * bp->cr[0] ;
- + cp->cr[0] = temp;
- + break;
- + #endif GFLOAT
- case TYDCOMPLEX:
- temp = ap->cd[0] * bp->cd[0] -
- ap->cd[1] * bp->cd[1] ;
- ***************
- *** 2455,2461
- case TYLONG:
- cp->ci = ap->ci / bp->ci;
- break;
- ! case TYREAL:
- case TYDREAL:
- cp->cd[0] = ap->cd[0] / bp->cd[0];
- break;
-
- --- 2555,2565 -----
- case TYLONG:
- cp->ci = ap->ci / bp->ci;
- break;
- ! case TYREAL:
- ! #ifdef GFLOAT
- ! cp->cr[0] = ap->cr[0] / bp->cr[0];
- ! break;
- ! #endif GFLOAT
- case TYDREAL:
- cp->cd[0] = ap->cd[0] / bp->cd[0];
- break;
- ***************
- *** 2460,2465
- cp->cd[0] = ap->cd[0] / bp->cd[0];
- break;
- case TYCOMPLEX:
- case TYDCOMPLEX:
- zdiv(cp,ap,bp);
- break;
-
- --- 2564,2579 -----
- cp->cd[0] = ap->cd[0] / bp->cd[0];
- break;
- case TYCOMPLEX:
- + #ifdef GFLOAT
- + ar.real = ap->cr[0];
- + ar.imag = ap->cr[1];
- + br.real = bp->cr[0];
- + br.imag = bp->cr[1];
- + zdiv(fr,ar,br);
- + cp->cr[0] = fr.real; /* should test */
- + cp->cr[1] = fr.imag;
- + break;
- + #endif GFLOAT
- case TYDCOMPLEX:
- zdiv(cp,ap,bp);
- break;
- ***************
- *** 2486,2492
- k = 0;
- else k = 1;
- break;
- ! case TYREAL:
- case TYDREAL:
- if(ap->cd[0] < bp->cd[0])
- k = -1;
-
- --- 2600,2606 -----
- k = 0;
- else k = 1;
- break;
- ! case TYREAL: /*assume this works for G format floats */
- case TYDREAL:
- if(ap->cd[0] < bp->cd[0])
- k = -1;
- ***************
- *** 2494,2500
- k = 0;
- else k = 1;
- break;
- ! case TYCOMPLEX:
- case TYDCOMPLEX:
- if(ap->cd[0] == bp->cd[0] &&
- ap->cd[1] == bp->cd[1] )
-
- --- 2608,2621 -----
- k = 0;
- else k = 1;
- break;
- ! case TYCOMPLEX:
- ! #ifdef GFLOAT
- ! if(ap->cr[0] == bp->cr[0] &&
- ! ap->cr[1] == bp->cr[1] )
- ! k = 0;
- ! else k = 1;
- ! break;
- ! #endif GFLOAT
- case TYDCOMPLEX:
- if(ap->cd[0] == bp->cd[0] &&
- ap->cd[1] == bp->cd[1] )
- ***************
- *** 2547,2553
- if(p->constblock.const.ci < 0) return(-1);
- return(0);
-
- ! case TYREAL:
- case TYDREAL:
- if(p->constblock.const.cd[0] > 0) return(1);
- if(p->constblock.const.cd[0] < 0) return(-1);
-
- --- 2668,2679 -----
- if(p->constblock.const.ci < 0) return(-1);
- return(0);
-
- ! case TYREAL:
- ! #ifdef GFLOAT
- ! if(p->constblock.const.cr[0] > 0) return(1);
- ! if(p->constblock.const.cr[0] < 0) return(-1);
- ! return(0);
- ! #endif GFLOAT
- case TYDREAL:
- if(p->constblock.const.cd[0] > 0) return(1);
- if(p->constblock.const.cd[0] < 0) return(-1);
- ***************
- *** 2553,2559
- if(p->constblock.const.cd[0] < 0) return(-1);
- return(0);
-
- ! case TYCOMPLEX:
- case TYDCOMPLEX:
- return(p->constblock.const.cd[0]!=0 || p->constblock.const.cd[1]!=0);
-
-
- --- 2679,2687 -----
- if(p->constblock.const.cd[0] < 0) return(-1);
- return(0);
-
- ! case TYCOMPLEX:
- ! #ifdef GFLOAT
- ! return(p->constblock.const.cr[0]!=0 || p->constblock.const.cr[1]!=0);
- case TYDCOMPLEX:
- return(p->constblock.const.cd[0]!=0 || p->constblock.const.cd[1]!=0);
- #else GFLOAT
- ***************
- *** 2555,2561
-
- case TYCOMPLEX:
- case TYDCOMPLEX:
- ! return(p->constblock.const.cd[0]!=0 || p->constblock.const.cd[1]!=0);
-
- default:
- badtype( "conssgn", p->constblock.vtype);
-
- --- 2683,2693 -----
- #ifdef GFLOAT
- return(p->constblock.const.cr[0]!=0 || p->constblock.const.cr[1]!=0);
- case TYDCOMPLEX:
- ! return(p->constblock.const.cd[0]!=0 || p->constblock.const.cd[1]!=0);
- ! #else GFLOAT
- ! case TYDCOMPLEX:
- ! return(p->constblock.const.cd[0]!=0 || p->constblock.const.cd[1]!=0);
- ! #endif GFLOAT
-
- default:
- badtype( "conssgn", p->constblock.vtype);
-