/* create a Perl array filled with zeros */ SV* vec_zeros(int m) { int i; AV *myav; SV **svs; /* allocate memory for array */ Newx(svs, m, SV *); /* for m array elements */ for (i = 0; i < m; i++) { /* create a Perl SV (scalar value) */ svs[i] = sv_newmortal(); /* set SV to 0 */ sv_setnv((SV*)svs[i], 0.0f); } /* make Perl AV */ myav = av_make(m, svs); /* free allocated memory */ Safefree(svs); /* return array reference */ return newRV_noinc((SV*) myav); }