Maker Pro
Maker Pro

"Algebraic" IF Statement Evaluation

J

Jim Thompson

Jan 1, 1970
0
I need to evaluate...

IF(t,1,0) (If t is true, output 1, if t is false, output 0 (numeric),
t may be something like V11 >= 7, for example)

BUT I have no IF statement handling capability at this level of a
simulation.

I do have algebraic capability.

Is there some cute way to do this algebraically?

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

"When the government fears the People, that is Liberty.
When the People fear the Government, that is Tyranny."
- attributed to Thomas Jefferson by his contemporaries

"The Constitution is not an instrument for the government to
restrain the people, it is an instrument for the people to
restrain the government -- lest it come to dominate our lives and
interests." - Patrick Henry
 
J

Jim Thompson

Jan 1, 1970
0
t=X/X

This will sorta work, but if x is 0 then you'll probably get errors,
to a human it's the 0/0 = 1 thing not having used your emulator I
can't be sure what'll happen of how to treat an error like this.

I don't have INT available, I do have ABS and some trig functions

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

Stormy on the East Coast today... due to Bush's failed policies.
 
J

Jim Thompson

Jan 1, 1970
0
For your example, V11>=7:

(abs(V11-7))/(V11-7) will be +1 for V11>7, -1 for V11<7, and will give
you a divide by zero for V11=7.

For some simulation purposes, turning it into a very very steep curve
at the turning point (7 in your example) may be good enough. SPICE
implementations usually have the unit step function u() and the
variant uramp() for example.

Tim.

That's what I came up with, except I inserted a small "delta" (smaller
than my step size) to avoid 0/0. I was hoping for something more
compact :-(

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

Stormy on the East Coast today... due to Bush's failed policies.
 
J

Jim Thompson

Jan 1, 1970
0
Do you have a unit step function (u(x)) available?

No :-(

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

Stormy on the East Coast today... due to Bush's failed policies.
 
J

Jim Thompson

Jan 1, 1970
0
(1+sgn(V11-7))/2 ?

I don't have function SGN :-(

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

Stormy on the East Coast today... due to Bush's failed policies.
 
S

Spehro Pefhany

Jan 1, 1970
0
I need to evaluate...

IF(t,1,0) (If t is true, output 1, if t is false, output 0 (numeric),
t may be something like V11 >= 7, for example)

BUT I have no IF statement handling capability at this level of a
simulation.

I do have algebraic capability.

Is there some cute way to do this algebraically?

...Jim Thompson

(1+sgn(V11-7))/2 ?
 
S

Spehro Pefhany

Jan 1, 1970
0
I don't have INT available, I do have ABS and some trig functions

...Jim Thompson


y = V11 -7

(abs(y) + y)/(2*y)
 
S

Spehro Pefhany

Jan 1, 1970
0
y = V11 -7

(abs(y) + y)/(2*y)

P.S. If you want avoid awkward situations very near y == 0 you could
do

(abs(y) + y)/(2* abs(y) + e)

where e is a very small positive number
 
J

Jasen Betts

Jan 1, 1970
0
I need to evaluate...

IF(t,1,0) (If t is true, output 1, if t is false, output 0 (numeric),
t may be something like V11 >= 7, for example)

BUT I have no IF statement handling capability at this level of a
simulation.

I do have algebraic capability.

Is there some cute way to do this algebraically?

...Jim Thompson

are there any operators or functions that can give a different
mumeric result depending on the truth of the input.

many systems have false as 0 and true as 1 (or less common -1)



else maybe something like (sgn( sgn(V11-7) *2 +1 ) + 1 ) /2
 
T

Tom Del Rosso

Jan 1, 1970
0
Jim said:
I don't have INT available, I do have ABS and some trig functions

ABS has an intrinsic "if" that can do it. Spehro showed the method.
 
J

Jim Thompson

Jan 1, 1970
0
Do you have a tanh() function?

No, Though I'm fascinated. How would use of TANH() work in this
situation?

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

Stormy on the East Coast today... due to Bush's failed policies.
 
J

Jim Thompson

Jan 1, 1970
0
tanh(x) = (e^x - e^-x) / (e^x + e^-x), so for large |x| (for example,
|x| > 3) it approximates x/abs(x) quite closely but avoids
divide-by-zero issues. For snappier results, consider tanh(k*x),
at the risk of overflow if k is too big.

<http://en.wikipedia.org/wiki/Hyperbolic_function>
<http://en.wikipedia.org/wiki/File:Sinh_cosh_tanh.svg>.

So the equivalent of "SGN"?

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

Stormy on the East Coast today... due to Bush's failed policies.
 
O

oopere

Jan 1, 1970
0
So the equivalent of "SGN"?

...Jim Thompson

Right, it is a "smooth" sign function. It is sometimes called a soft
limiter (for instance, in PSpice). From this you can build the smooth
step...

Pere
 
J

Jim Thompson

Jan 1, 1970
0
Right, it is a "smooth" sign function. It is sometimes called a soft
limiter (for instance, in PSpice). From this you can build the smooth
step...

Pere

Yep. I have that in PSpice itself. I use it in my RealPulse©
function and in all the OpAmp and Comparator device models.

What I'm using here is a crude editor with limited functions to do
model binning based of device dimensions.

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

Stormy on the East Coast today... due to Bush's failed policies.
 
D

Don Lancaster

Jan 1, 1970
0
Tim said:
For your example, V11>=7:

(abs(V11-7))/(V11-7) will be +1 for V11>7, -1 for V11<7, and will give
you a divide by zero for V11=7.

For some simulation purposes, turning it into a very very steep curve
at the turning point (7 in your example) may be good enough. SPICE
implementations usually have the unit step function u() and the
variant uramp() for example.

Tim.

Use PostScript for your simulation, of course.

with t on stack, {1}{0} ifelse

http://www.tinaja.com/post01.asp


--
Many thanks,

Don Lancaster voice phone: (928)428-4073
Synergetics 3860 West First Street Box 809 Thatcher, AZ 85552
rss: http://www.tinaja.com/whtnu.xml email: [email protected]

Please visit my GURU's LAIR web site at http://www.tinaja.com
 
Top