#include "stdio.h"
#include "stdlib.h"
#include "math.h"
struct c_comp //define a struct
{
double rmz;
double imz;
}c_comp;
void c_comp_product(struct c_comp*,struct c_comp*,struct c_comp*); //declare a func of complex product
int main() //main func starts
{
int num;
struct c_comp *a1,*a2,*c; //declare pointers
a1
=(struct c_comp
*)malloc(sizeof(struct c_comp
)); //let pointers direct to menory locationsa2
=(struct c_comp
*)malloc(sizeof(struct c_comp
));c
=(struct c_comp
*)malloc(sizeof(struct c_comp
));a1->rmz=1.0;a1->imz=1.0; //decide the values of each pointer structs
a2->rmz=2.0;a2->imz=2.0;
c_comp_product(a1,a2,c); //call func of complex product
return 0;
} //main func ends
void c_comp_product(struct c_comp *a1,struct c_comp *a2,struct c_comp *c) //definition of the func of complex product
{
double p,q,s;
if(a1 == NULL || a2 == NULL || c == NULL)
{ printf("(c_comp_product)The c_comp pointer is NULL!\n"); } p = a1->rmz*a2->rmz;
q = a1->imz*a2->imz;
s = (a1->rmz + a1->imz)*(a2->rmz + a2->imz);
c->rmz = p - q;
c->imz = s - p - q;
printf("%f %f\n",c
->rmz
,c
->imz
);
}
I2luY2x1ZGUgInN0ZGlvLmgiCiNpbmNsdWRlICJzdGRsaWIuaCIKI2luY2x1ZGUgIm1hdGguaCIKc3RydWN0IGNfY29tcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lIGEgc3RydWN0CnsKICAgICAgICBkb3VibGUgcm16OwogICAgICAgIGRvdWJsZSBpbXo7Cn1jX2NvbXA7CnZvaWQgY19jb21wX3Byb2R1Y3Qoc3RydWN0IGNfY29tcCosc3RydWN0IGNfY29tcCosc3RydWN0IGNfY29tcCopOyAgIC8vZGVjbGFyZSBhIGZ1bmMgb2YgY29tcGxleCBwcm9kdWN0CiAKIAppbnQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tYWluIGZ1bmMgc3RhcnRzCnsKaW50IG51bTsKc3RydWN0IGNfY29tcCAqYTEsKmEyLCpjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVjbGFyZSBwb2ludGVycwphMT0oc3RydWN0IGNfY29tcCopbWFsbG9jKHNpemVvZihzdHJ1Y3QgY19jb21wKSk7ICAgICAgLy9sZXQgcG9pbnRlcnMgZGlyZWN0IHRvIG1lbm9yeSBsb2NhdGlvbnMKYTI9KHN0cnVjdCBjX2NvbXAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IGNfY29tcCkpOwpjPShzdHJ1Y3QgY19jb21wKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBjX2NvbXApKTsKYTEtPnJtej0xLjA7YTEtPmltej0xLjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVjaWRlIHRoZSB2YWx1ZXMgb2YgZWFjaCBwb2ludGVyIHN0cnVjdHMKYTItPnJtej0yLjA7YTItPmltej0yLjA7CmNfY29tcF9wcm9kdWN0KGExLGEyLGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NhbGwgZnVuYyBvZiBjb21wbGV4IHByb2R1Y3QKcmV0dXJuIDA7Cn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21haW4gZnVuYyBlbmRzCiAKIAp2b2lkIGNfY29tcF9wcm9kdWN0KHN0cnVjdCBjX2NvbXAgKmExLHN0cnVjdCBjX2NvbXAgKmEyLHN0cnVjdCBjX2NvbXAgKmMpICAvL2RlZmluaXRpb24gb2YgdGhlIGZ1bmMgb2YgY29tcGxleCBwcm9kdWN0CnsKICAgICAgICBkb3VibGUgcCxxLHM7CiAgICAgICAgaWYoYTEgPT0gTlVMTCB8fCBhMiA9PSBOVUxMIHx8IGMgPT0gTlVMTCkKICAgICAgICB7IHByaW50ZigiKGNfY29tcF9wcm9kdWN0KVRoZSBjX2NvbXAgcG9pbnRlciBpcyBOVUxMIVxuIik7IH0KICAgICAgICBwID0gYTEtPnJteiphMi0+cm16OwogICAgICAgIHEgPSBhMS0+aW16KmEyLT5pbXo7CiAgICAgICAgcyA9IChhMS0+cm16ICsgYTEtPmlteikqKGEyLT5ybXogKyBhMi0+aW16KTsKICAgICAgICBjLT5ybXogPSBwIC0gcTsKICAgICAgICBjLT5pbXogPSBzIC0gcCAtIHE7CiAgICAgICAgcHJpbnRmKCJoZWxsb1xuIik7CiAgICAgICAgcHJpbnRmKCIlZiAlZlxuIixjLT5ybXosYy0+aW16KTsKIAp9CiA=