If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
Question about Conditional Stream Statements
4 posts
• Page 1 of 1
Question about Conditional Stream Statements
What's goodio y'all - been a minute. Hope everyone is riding out the storm.
few quick questions
I've been using what I believe is the most efficient implementation of conditional statements in dspcode..
I believe I picked it up on the forum a while ago.
which states
has been doing right by me, but is there a way to append more results in the "same line of code" and maintain this current structure/efficiency? like...
or something like...
or perhaps other variations... Would it increase efficiency by creating these types of logic statements I'm describing? or would it be the same as having multiple logic statements structure these conditions once it gets to assem? or would it be worse? is it "faster" or "saving cpu"
Also is the first example of conditional statement I posted real time, or a sample (or more) delay?
If it is real time, is this?
It sure would be nice if there were modules/hom files that were like the "stream math functions" for all of these conditional/logic style functions.. optimized much like the stream multiply etc...
or perhaps this is a great opportunity to create a logic/conditional database of efficient assem implementations(if it's not already in existence) of many of these sorts of things.....
If my memory serves correct, some post stated that the way of doing it in the manual is not that efficient or "optimized".. so unless I'm way off base, please don't push it back to the manual... I want the best way conceived of as of date...
Forgive any ignorance or presumptions
idiot savant << me << endl;
Peace.
~That Guy
few quick questions
I've been using what I believe is the most efficient implementation of conditional statements in dspcode..
I believe I picked it up on the forum a while ago.
- Code: Select all
y = b + (a - b)&(x == 2);
which states
- Code: Select all
if x = 2
then y = a
else y = b
has been doing right by me, but is there a way to append more results in the "same line of code" and maintain this current structure/efficiency? like...
- Code: Select all
if x = 2
then y = a
and
z = t
else
y = b
and
z = w
or something like...
- Code: Select all
if x = 2 or 3
then y = a
else y = b
or perhaps other variations... Would it increase efficiency by creating these types of logic statements I'm describing? or would it be the same as having multiple logic statements structure these conditions once it gets to assem? or would it be worse? is it "faster" or "saving cpu"
Also is the first example of conditional statement I posted real time, or a sample (or more) delay?
If it is real time, is this?
- Code: Select all
if x = y
then x = a
else x = x
It sure would be nice if there were modules/hom files that were like the "stream math functions" for all of these conditional/logic style functions.. optimized much like the stream multiply etc...
or perhaps this is a great opportunity to create a logic/conditional database of efficient assem implementations(if it's not already in existence) of many of these sorts of things.....
If my memory serves correct, some post stated that the way of doing it in the manual is not that efficient or "optimized".. so unless I'm way off base, please don't push it back to the manual... I want the best way conceived of as of date...
Forgive any ignorance or presumptions
idiot savant << me << endl;
Peace.
~That Guy
-
guyman - Posts: 207
- Joined: Fri Mar 02, 2018 8:27 pm
Re: Question about Conditional Stream Statements
Oh and...
I made this while under a uh... certain influence one evening.. back when I was just getting started with logic and conditional statements... shortly after I found that first line of code above...
It's a little tool for creating conditional statements in that style... it's a mess and pretty ugly - but if you don't use
ifthenelse in dsp often.. it might come in handy.
maybe if we get this thread going... I'll make a ruby thingy that encompasses all of it.
I made this while under a uh... certain influence one evening.. back when I was just getting started with logic and conditional statements... shortly after I found that first line of code above...
It's a little tool for creating conditional statements in that style... it's a mess and pretty ugly - but if you don't use
ifthenelse in dsp often.. it might come in handy.
maybe if we get this thread going... I'll make a ruby thingy that encompasses all of it.
-
guyman - Posts: 207
- Joined: Fri Mar 02, 2018 8:27 pm
Re: Question about Conditional Stream Statements
Nice gizmo -thanks! Even after all these years, I still get these statements inside-out and back-to-front, so I'm sure folks will find it useful!
Not in the same line of code, no. However, if the same conditional test needs to change several different variables, there's a little trick that you can use...
DSP-code (and assembly) don't really have a "boolean" variable type, but you CAN store a boolean bitmask in a regular float variable. This allows the result of the test condition to be re-used as many times as you like without having to keep running the test over again - you just have to be careful to remember that the variable isn't really a float!! To take your example...
In DSP-code this can sometimes save a few CPU cycles, sometimes not - it depends whether the amount of re-use outweighs writing the extra variable value. I find it very handy when I'm putting together complex code - a meaningful "boolean" variable name can often make it easier to see what the code is doing (I sometimes use several of them just for this reason, then remove any surplus once the code is working).
In ASM, this kind of re-use is usually even simpler, and a very natural optimisation - there's nearly always a saving, as the "boolean" value can just stay in an "xmm" register without being written to a variable. So using the above form in DSP-code is quite handy again, as it makes the optimisation easier to see when you convert to ASM.
guyman wrote:is there a way to append more results in the "same line of code"
Not in the same line of code, no. However, if the same conditional test needs to change several different variables, there's a little trick that you can use...
DSP-code (and assembly) don't really have a "boolean" variable type, but you CAN store a boolean bitmask in a regular float variable. This allows the result of the test condition to be re-used as many times as you like without having to keep running the test over again - you just have to be careful to remember that the variable isn't really a float!! To take your example...
- Code: Select all
float test; // Fake "boolean" variable.
test = (x == 2);
y = b + (a - b) & test;
z = w + (t - w) & test;
In DSP-code this can sometimes save a few CPU cycles, sometimes not - it depends whether the amount of re-use outweighs writing the extra variable value. I find it very handy when I'm putting together complex code - a meaningful "boolean" variable name can often make it easier to see what the code is doing (I sometimes use several of them just for this reason, then remove any surplus once the code is working).
In ASM, this kind of re-use is usually even simpler, and a very natural optimisation - there's nearly always a saving, as the "boolean" value can just stay in an "xmm" register without being written to a variable. So using the above form in DSP-code is quite handy again, as it makes the optimisation easier to see when you convert to ASM.
All schematics/modules I post are free for all to use - but a credit is always polite!
Don't stagnate, mutate to create!
Don't stagnate, mutate to create!
-
trogluddite - Posts: 1730
- Joined: Fri Oct 22, 2010 12:46 am
- Location: Yorkshire, UK
Re: Question about Conditional Stream Statements
Useful, thanks
-
wlangfor@uoguelph.ca - Posts: 912
- Joined: Tue Apr 03, 2018 5:50 pm
- Location: North Bay, Ontario, Canada
4 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 88 guests