Turn off rt_roundd inserted function

19 visualizaciones (últimos 30 días)
Matthew
Matthew el 22 de Jul. de 2013
Editada: Stephen23 el 25 de Abr. de 2017
Hi,
During generating my C code I constantly get preparing to casting function. It's definition is:
static real_T rt_roundd(real_T u)
{
real_T y;
if (fabs(u) < 4.503599627370496E+15) {
if (u >= 0.5) {
y = floor(u + 0.5);
} else if (u > -0.5) {
y = 0.0;
} else {
y = ceil(u - 0.5);
}
} else {
y = u;
}
return y;
}
No matter what it does, it works horribly for my audio processing algorithm so I don't want it. How can I achieve it?
Removing it's calls works fine for my algorithm but I don't want to do it manually every time I get that code.
  2 comentarios
Ryan Livingston
Ryan Livingston el 23 de Jul. de 2013
Editada: Stephen23 el 25 de Abr. de 2017
When you say it works horribly, do you mean it gives unexpected answers, it seems inefficient or something else?
Matthew
Matthew el 23 de Jul. de 2013
I don't care. Audio samples become distorted after calculations in floating point and casting to C code and I'm not sure what causes that. Maybe it's Keil's compiler issue, maybe some optimalization I don't know.
What really works is removing all rt_roundd calls or putting "return y;" as first instruction in this function.

Iniciar sesión para comentar.

Respuestas (1)

Ryan Livingston
Ryan Livingston el 23 de Jul. de 2013
Editada: Ryan Livingston el 25 de Abr. de 2017
You can use a Code Replacement library and define a function replacement for the round function. The library says map function foo to function bar in the generated code and math functions like ROUND are generally replaceable.
Here's a demo for using these libraries:
and general doc for creating them:

Categorías

Más información sobre MATLAB Coder en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by