hansdump ·
Gentlemen,
please have a look at this!
I wanted to calculate the natural logarithm by ln=log(x)/log(e)... this is not possible, why?
BUT
ln= log(x)/0.43429.. will give succes, why?
H.
From the original SynthMaker forum (2004–2014), with its members’ names and dates.
hansdump ·
Gentlemen,
please have a look at this!
I wanted to calculate the natural logarithm by ln=log(x)/log(e)... this is not possible, why?
BUT
ln= log(x)/0.43429.. will give succes, why?
H.
exonerate ·
Yes there's a problem with how Synthmaker converts that code to ASM.
The xmm0 register keeps getting over written, the first log10 gets stored in the xmm0 register but so does the second over writing the first log10. Then that value is divided by it's self "divps xxm0,xmm0; " so the output is always one.
Doing this works also...
streamin in; streamout out; float tmp;
tmp = log10(2.71828);
out = log10(in)/ tmp;
Now the original problem is avoided, but strangely and I've never seen this before. In the ASM of that code we have....
movaps xmm0,xmm0; ??
Never seen that happen before, not sure if that would cause any issue, but that really is the most pointless movaps SM has ever produced!! 😀
Cheers 😉
Exo
TomC ·
exonerate wrote: Now the original problem is avoided, but strangely and I've never seen this before. In the ASM of that code we have....
movaps xmm0,xmm0; ??
It's just to make sure that there REALLY is the right value in xmm0. You never know...
Tom
Wrote something here? To have a post removed or your name hidden, write to [email protected].