Skip to content
Snippets Groups Projects
main.c 972 B
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
  float r;
  float d;
} dual;

dual dual_init(float r, float d) {
  dual new;
  new.r = r;
  new.d = d;
  return new;
}

dual dual_add(dual a, dual b) {
  dual res;
  res.r = a.r + b.r;
  res.d = b.d + b.d;
  return res;
}

dual dual_mult(dual a, dual b) {
  dual res;
  res.r = a.r * b.r;
  res.d = a.r * b.d + a.d * b.r;
  return res;
}

void dual_print(dual a) { printf("%.3f %.3f\n", a.r, a.d); }

dual dual_cube(dual a) {
  dual res;
  res.r = a.r * a.r * a.r;
  res.d = 3 * a.d * a.r * a.r;
  return res;
}

int main() {

  int size = 2;
  dual arr[size];
  for (int i = 0; i < size; i++) {
    float r;
    float d;
    scanf("%f %f", &r, &d);
    arr[i] = dual_init(r, d);
  }
  printf("\n");
  dual_print(dual_add(arr[0], arr[1]));
  dual_print(dual_mult(arr[0], arr[1]));
  dual_print(dual_cube(arr[0]));

  return EXIT_SUCCESS;
}