23 views (last 30 days)

Show older comments

Hello,

I would like to us sqrt() and run it on a embeded controller. I was wondering sqrt() is the same as Fast inverse square root (https://en.wikipedia.org/wiki/Fast_inverse_square_root). if not, is it efficent as Fast inverse square root. Does it support code generation? Can I use it in embeded control software?

Thanks,

Hongbo

stozaki
on 13 Sep 2021

Hi,

The Simulink sqrt block supports rsqrt.

The algorithm is Newton-Raphson, so it can be considered the same as the one described on the wiki.

With that setting, C code generation is possible.

Jan
on 13 Sep 2021

i = * ( long * ) &y

This is equivalent to:

y = single(pi);

i = typecast(y, 'int32');

The shown code of Q_rsqrt is an approximation of 1/sqrt(x) for single precision floating point values. It might have a fair speed on CPUs without a floating point unit, but it is less accurate then the direct calculation.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!