/*  txaop1.c    CCMATH mathematics library source code.
 *
 *  Copyright (C)  2000   Daniel A. Atkinson    All rights reserved.
 *  This code may be redistributed under the terms of the GNU library
 *  public license (LGPL). ( See the lgpl.license file for details.)
 * ------------------------------------------------------------------------
 */
/*
    Test:  xadd  xmul  xdiv

    Uses:  atox  prxpr  xtodub

    Input file:  data/aop1.dat
*/
#define XMATH 1
#include "ccmath.h"
int decd=30;
void main(int na,char **av)
{ struct xpr s,t,f;
  char nbx[64],nby[64];
  FILE *fp;
  if(na!=2){ printf("para: input_file\n"); exit(-1);}
  fp=fopen(*++av,"r");
  printf("     Test of Elementary Operations\n");
  while(fscanf(fp,"%s %s",nbx,nby)!=EOF){
    s=atox(nbx); t=atox(nby);
    printf(" x= "); prxpr(s,decd);
    printf(" y= "); prxpr(t,decd);

/* extended precision addition */
    printf("add\n");
    f=xadd(s,t,0);
    printf(" %16.10f\n",xtodub(f)); prxpr(f,decd);

/* extended precision subtraction */
    printf("subtract\n");
    f=xadd(s,t,1);
    printf(" %16.10f\n",xtodub(f)); prxpr(f,decd);

/* extended precision multiplication */
    printf("multiply\n");
    f=xmul(s,t);
    printf(" %16.10f\n",xtodub(f)); prxpr(f,decd);

/* extended precision division */
    printf("divide\n");
    f=xdiv(s,t);
    printf(" %16.10f\n",xtodub(f)); prxpr(f,decd);
   }
}
/*  Test output

     Test of Elementary Operations
 x=   1.000000000000000000000000000000e+0
 y=   4.000000000000000000000000000000e+0
add
     5.0000000000
  5.000000000000000000000000000000e+0
subtract
    -3.0000000000
 -3.000000000000000000000000000000e+0
multiply
     4.0000000000
  4.000000000000000000000000000000e+0
divide
     0.2500000000
  2.500000000000000000000000000000e-1
 x=  -2.300000000000000000000000000000e+0
 y=   3.147159000000000000000000000000e+0
add
     0.8471590000
  8.471590000000000000000000000000e-1
subtract
    -5.4471590000
 -5.447159000000000000000000000000e+0
multiply
    -7.2384657000
 -7.238465700000000000000000000000e+0
divide
    -0.7308178583
 -7.308178582651845680501048723627e-1
 x=   2.750000000000000000000000000000e+1
 y=  -3.360000000000000000000000000000e+1
add
    -6.1000000000
 -6.100000000000000000000000000000e+0
subtract
    61.1000000000
  6.110000000000000000000000000000e+1
multiply
  -924.0000000000
 -9.240000000000000000000000000000e+2
divide
    -0.8184523810
 -8.184523809523809523809523809524e-1
 x=  -1.110000000000000000000000000000e+1
 y=  -4.000000000000000000000000000000e-1
add
   -11.5000000000
 -1.150000000000000000000000000000e+1
subtract
   -10.7000000000
 -1.070000000000000000000000000000e+1
multiply
     4.4400000000
  4.440000000000000000000000000000e+0
divide
    27.7500000000
  2.775000000000000000000000000000e+1
*/


syntax highlighted by Code2HTML, v. 0.9.1