void vsip_cblockrebind_f(vsip_cblock_f *p, vsip_scalar_f *r, vsip_scalar_f *i, vsip_scalar_f **rr, vsip_scalar_f **ir);
This function rebinds an existing complex block p to new real and imaginary part arrays r and i. If i is NULL, it is implied that r points to an interleaved array. The new array(s) must have the same size as the originally bound data array(s).
The block must be in the released state to be rebound. After rebinding, the block must be admitted before it can be used.
The previously bound data array(s) are stored in rr and ir. If the originally bound data is interleaved, ir will be set to NULL. On error, both rr and ir will be set to NULL.
vsip_cblock_p *p: Pointer to the complex block to be rebound.
vsip_scalar_p *r: Pointer to the new real part array.
vsip_scalar_p *i: Pointer to the new imaginary part array. If NULL, r is assumed to point to an interleaved array.
vsip_scalar_p **rr: Pointer to store the previously bound real part array.
vsip_scalar_p **ir: Pointer to store the previously bound imaginary part array. Will be NULL if the original data is interleaved.
On error, both rr and ir are set to NULL.
vsip_cblock_f *block; vsip_scalar_f *new_real_part; vsip_scalar_f *new_imag_part = NULL; // For interleaved data vsip_scalar_f *old_real_part; vsip_scalar_f *old_imag_part; // Assuming block has been properly initialized and is in the released state vsip_cblockrebind_f(block, new_real_part, new_imag_part, &old_real_part, &old_imag_part); if (old_real_part == NULL) { // Handle error }