Forums

float powf wrong results????

Started by marc...@hotmail.com March 21, 2006
I programm an DSP (TMS320C6713) in 'C'. Therefor I use CCS V.2.21. 

The programming-form is: Component-based Software Development of Automation
Systems 

The problem is: 

The application runs on RAM and is linked with the parameters: Reloctabel
Executable (-ar); Load-Time-Initialization (-cr); MemoryModels Far Calls &
Data (-ml3); SECTIONS { .text: {} > SDRAM 

The component is placed in FLASH. It is linked with the parameters: Reloctabel
Executable (-ar); Load-Time-Initialization (-cr); MemoryModels Far Calls &
Data (-ml3); SECTIONS { .text: {} > FLASH 

The apllication calls the componente 
___________________________________________________________ 
APPLIKATION (RAM): ___________________________________________________________
___________________________________________________________ 
KOMPONENTE (FLASH) ___________________________________________________________
	The result is: 
a=0.0 erg.= 1.0 
a=1.0 erg.= 1.0 
a=2.0 erg.= 4.0 
a=3.0 erg.= 0.0 
a=4.0 erg.= 256.0 
a=5.0 erg.= 0.0 
a=6.0 erg.= 0.0 
a=7.0 erg.= 0.0 
a=8.0 erg.= 16777216.0 
a=9.0 erg.= 0.0 
a.0 erg.= 179769313486231684688475341796875000000....0000 

etc. Only the float-values a=0,1,2,4,8,16,...... and a=-1,-2,-4,-8,-16......
deliver a correkte result. All the other values deliver result=0.00000 or an
Overflow !!!!!!! 

But when I have the function powf(a,a) in the application it delivers all
results correct. 

Do you know why???? 

Thx marco719@marc...
	
marco719,

--- marco719@marc... wrote:

> I programm an DSP (TMS320C6713) in 'C'. Therefor I
> use CCS V.2.21. 
> 
> The programming-form is: Component-based Software
> Development of Automation Systems 
> 
> The problem is: 
> 
> The application runs on RAM and is linked with the
> parameters: Reloctabel Executable (-ar);
> Load-Time-Initialization (-cr); MemoryModels Far
> Calls & Data (-ml3); SECTIONS { .text: {} > SDRAM 
> 
> The component is placed in FLASH. It is linked with
> the parameters: Reloctabel Executable (-ar);
> Load-Time-Initialization (-cr); MemoryModels Far
> Calls & Data (-ml3); SECTIONS { .text: {} > FLASH 
> 
> The apllication calls the componente 
>
___________________________________________________________
> 
> APPLIKATION (RAM):
>
___________________________________________________________
>
___________________________________________________________
> 
> KOMPONENTE (FLASH)
>
___________________________________________________________
> 
> 
> 
> The result is: 
> a=0.0 erg.= 1.0 
> a=1.0 erg.= 1.0 
> a=2.0 erg.= 4.0 
> a=3.0 erg.= 0.0 
> a=4.0 erg.= 256.0 
> a=5.0 erg.= 0.0 
> a=6.0 erg.= 0.0 
> a=7.0 erg.= 0.0 
> a=8.0 erg.= 16777216.0 
> a=9.0 erg.= 0.0 
> a.0 erg.> 179769313486231684688475341796875000000....0000 
> 
> etc. Only the float-values a=0,1,2,4,8,16,...... and
> a=-1,-2,-4,-8,-16...... deliver a correkte result.
> All the other values deliver result=0.00000 or an
> Overflow !!!!!!! 
> 
> But when I have the function powf(a,a) in the
> application it delivers all results correct. 
> 
> Do you know why???? 
I don't know for sure.  Are you saying that when you
build your code to run from RAM, it runs ok??
But, when you put it into Flash, it does not run
correctly??
If so, I would examine the linker command file that
you are using.  You may be storing a memory section
into Flash that should be stored in RAM.

mikedunn
> 
> Thx marco719@marc...
> 
> 
> 
> 
> 
> 
> 
> 
>     c6x-unsubscribe@c6x-...
> 
>  
> 
> 
> 
>