Fortran
program example_in_f
use iso_fortran_env
use ecx
implicit none
real(real64) :: w(3) = [1.0d0, 1.0d0, 100.0d0]
real(real64) :: r = 100.0d0
real(real64) :: p(3) = 0.0d0
character(len=1) :: e
integer :: errstat
complex(real64) :: zout(3)
character(len=:), pointer :: errmsg
p(1) = r
e = "R"
call z(p, w, zout, e, errstat, errmsg)
print *, zout
print *, errstat, errmsg
end program
C
#include <stdio.h>
#include <stdlib.h>
#include "ecx.h"
int main(void){
int errstat, i;
double w[3] = {1.0, 1.0, 1.0};
double p[3] = {100.00, 0.0, 0.0};
ecx_cdouble z[3] = {ecx_cbuild(0.0,0.0), ecx_cbuild(0.0, 0.0), ecx_cbuild(0.0, 0.0)};
char *errmsg;
ecx_eis_z(p, w, z, 'R', 3, 3, &errstat, &errmsg);
for(i=0; i<3;i++){
printf("%f %f \n", creal(z[i]), cimag(z[i]));
}
printf("%d %s\n", errstat, errmsg);
return EXIT_SUCCESS;
}
Python
import numpy as np
from pyecx import eis
import matplotlib.pyplot as plt
R = 100
C = 1e-6
w = np.logspace(6, -3, 100)
zr = np.asarray(eis.zr(w, R))
zc = np.asarray(eis.zc(w, C))
zrc = zr*zc / (zr+zc)
print("finish")
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_aspect("equal")
ax.plot(zrc.real, zrc.imag, "g.", label="R/C")
ax.invert_yaxis()
plt.show()