#ifndef __COMPLEX_H
#define __COMPLEX_H

#include "common.h"

/**
 * 複素数を表す構造体(struct)
 * 
 */
typedef struct {
  double real;      ///< 実部
  double imaginary; ///< 虚部
} complex_t;

void complex_zero(complex_t *target);
void complex_print(complex_t target);
void complex_copy(complex_t *src, complex_t *dist);
BOOL complex_is_equal(complex_t a, complex_t b);
complex_t complex_add(complex_t a, complex_t b);
complex_t complex_sub(complex_t a, complex_t b);
complex_t complex_multi(complex_t a, complex_t b);
complex_t complex_scalar_add(complex_t a, double b);
complex_t complex_scalar_sub(complex_t a, double b);
complex_t complex_scalar_multi(complex_t a, double b);
complex_t complex_scalar_div(complex_t a, double b);
double complex_abs2(complex_t target);
double complex_abs(complex_t target);

#endif

