/* Freeze a complex number */ int complex_freeze(vcomplex *c, FILE *fp) { v_freeze_start(fp); fprintf(fp, "(%g, %g)", c->real, c->imag); v_freeze_finish(fp); return 1; } /* Thaw a complex number */ vcomplex * complex_thaw(FILE *fp) { double real, imag; v_thaw_start(); if (!v_thaw_follow(fp, '(', "open-bracket")) return NULL; if (!v_thaw_double(fp, &real)) return NULL; if (!v_thaw_follow(fp, ',', "comma")) return NULL; if (!v_thaw_double(fp, &imag)) return NULL; if (!v_thaw_follow(fp, ')', "close-bracket")) return NULL; v_thaw_finish(); return complex_create(real, imag); }