// 10262009.cpp, P H Anderson, Oct 26, '09

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define ABS(x)    (x>0) ? (x) : (-x) // has a problem
#define SQR(x)    (x) * (x)

typedef struct
{
    float x, y;
} RECT;

void c_conj(RECT *pa, RECT *pc);
void c_add(RECT *pa, RECT *pb, RECT *pc);
void c_mul(RECT *pa, RECT *pb, RECT *pc);
void c_div(RECT *pa, RECT *pb, RECT *pc);
void c_para(RECT *pa, RECT *pb, RECT *pc);

void print_rect(RECT *p);

int main()
{
   RECT z1 = {1, 2}, z2 = {3, -6}, z3 = {1, 1}, za, zb, zc;
   int a = 2, y;
   
   c_conj(&z1, &za);
   print_rect(&za);
   c_add(&z2, &z3, &zb);
   print_rect(&zb);      
   system("pause");   
   
   y = SQR(a*3 + 5);
   printf("%d %d\n", a, y);
   y = ABS(a-15);  // -13
   printf("%d %d\n", a, y);
   system("pause");
}

void c_conj(RECT *pa, RECT *pc)
{
    pc->x = pa->x; pc->y = -pa->y;
}
    
void c_add(RECT *pa, RECT *pb, RECT *pc)
{
    pc->x = pa->x + pb->x;  pc->y = pa->y + pb->y;
}
void c_mul(RECT *pa, RECT *pb, RECT *pc)
{ // stub
   pc->x = 1;  pc->y = 1;
}
void c_div(RECT *pa, RECT *pb, RECT *pc)
{ // stub
   pc->x = -1;  pc->y = -1;
}
void c_para(RECT *pa, RECT *pb, RECT *pc)
{ // stub
   pc->x = 2;  pc->y = 2;
}

void print_rect(RECT *p)
{
    printf("%.2f %.2f\n", p->x, p->y);
}    

#ifdef OUTPUT
1.00 -2.00
4.00 -5.00
Press any key to continue . . .
2 121
2 -17
Press any key to continue . . .
#endif