#include <stdio.h>
#include <stddef.h>
#include <inttypes.h>

void delta(uint8_t arr_in[5][5], uint8_t arr_out[5][5])
{
  arr_out[0][0] = arr_in[0][0];
  for (size_t ix = 1; ix < 5; ix++)
  {
  	arr_out[0][ix] = arr_in[0][ix] - arr_in[0][ix-1];
  }
  for (size_t iy = 1; iy < 5; iy++)
  {
  	for (size_t ix = 0; ix < 5; ix++)
    {
      arr_out[iy][ix] = arr_in[iy][ix] - arr_in[iy-1][ix];
    }
  }
}

void print_2d(uint8_t arr_in[5][5])
{
  for (size_t iy = 0; iy < 5; iy++)
  {
  	for (size_t ix = 0; ix < 5; ix++)
    {
      printf("0x%02" PRIx8 " ", arr_in[iy][ix]);
    }
    printf("\n");
  }
}


int main(void) {
  uint8_t arr_in[][5] =
  {
    {0x00, 0x02, 0x04, 0x06, 0x08},
    {0x01, 0x03, 0x05, 0x07, 0x09},
    {0x02, 0x04, 0x06, 0x08, 0x0A},
    {0x03, 0x05, 0x07, 0x09, 0x0B},
    {0x04, 0x06, 0x08, 0x0A, 0x0C}
  };
  uint8_t arr_out1[5][5];
  uint8_t arr_out2[5][5];
  delta(arr_in,arr_out1);
  print_2d(arr_out1);
  printf("\n");
  delta(arr_out1,arr_out2);
  print_2d(arr_out2);
  return 0;
}
