Is there a math equivalent to the conditional ternary operator?Considering math or computer scienceTranslate...

Sometimes a banana is just a banana

Did 5.25" floppies undergo a change in magnetic coating?

At what level can a party fight a mimic?

Are there any other Chaos worshipping races?

A "strange" unit radio astronomy

When should a commit not be version tagged?

How would we write a misogynistic character without offending people?

Is it possible to keep the Ring of Winter if you manage to acquire it?

How can I be pwned if I'm not registered on the compromised site?

Did Amazon pay $0 in taxes last year?

What is a term for a function that when called repeatedly, has the same effect as calling once?

What is knowledge and vision?

I encountered my boss during an on-site interview at another company. Should I bring it up when seeing him next time?

Skis versus snow shoes - when to choose which for travelling the backcountry?

How can I handle a player who pre-plans arguments about my rulings on RAW?

Are small insurances worth it

Make me a metasequence

Canadian citizen, on US no-fly list. What can I do in order to be allowed on flights which go through US airspace?

Manipulate scientific format without the "e"

Heating basement floor with water heater

Logistics of a hovering watercraft in a fantasy setting

Using std::set container for range items

Is it possible to convert a suspension fork to rigid by drilling it?

Borrowing Characters



Is there a math equivalent to the conditional ternary operator?


Considering math or computer scienceTranslate Programming code to MathMath vocab: operator on $S$ and into $S =$?O notation and growth order of functionIs there any book / tutorial where i can get the summary of all engineering math stuffIs computer science a branch of mathematics?Evaluating math proofs by computerIn formal verification, what is the formal specification, what formally means there?Are there dictionaries in math?Multiplying two numbers using only the “left shift” operator













17












$begingroup$


Is there a math equivalent of the programming ternary operator?



a = b + (c > 0 ? 1 : 2)


The above means that if $c$ is greater than $0$ then $a = b + 1$, otherwise $a = b + 2$.










share|cite|improve this question











$endgroup$












  • $begingroup$
    It probably depends on the form of the conditions and the results, but the example you gave can be expressed with the unit step $u(x)$ (with an appropriate definition at $x=1$): $a = u(b+c) + 1$
    $endgroup$
    – Alex
    11 hours ago








  • 2




    $begingroup$
    @Alex $a = b + 2 - u(c)$
    $endgroup$
    – eyeballfrog
    11 hours ago








  • 7




    $begingroup$
    A better question here is: what is good notation in this case. There are many ways of writing this, many ways which one would almost never use (like the accepted answer).
    $endgroup$
    – Winther
    8 hours ago








  • 3




    $begingroup$
    In C-derived languages at least, you have made a grievous error! Your expression parses as a = (b + c) > 0 ? 1 : 2. I always use parentheses in these cases, even when they are not strictly necessary.
    $endgroup$
    – TonyK
    5 hours ago








  • 1




    $begingroup$
    Just to clarify, by “ternary operator” you really mean “conditional operator”? Or are interested in any kind of ternary operator, regardless of semantics?
    $endgroup$
    – Konrad Rudolph
    2 hours ago
















17












$begingroup$


Is there a math equivalent of the programming ternary operator?



a = b + (c > 0 ? 1 : 2)


The above means that if $c$ is greater than $0$ then $a = b + 1$, otherwise $a = b + 2$.










share|cite|improve this question











$endgroup$












  • $begingroup$
    It probably depends on the form of the conditions and the results, but the example you gave can be expressed with the unit step $u(x)$ (with an appropriate definition at $x=1$): $a = u(b+c) + 1$
    $endgroup$
    – Alex
    11 hours ago








  • 2




    $begingroup$
    @Alex $a = b + 2 - u(c)$
    $endgroup$
    – eyeballfrog
    11 hours ago








  • 7




    $begingroup$
    A better question here is: what is good notation in this case. There are many ways of writing this, many ways which one would almost never use (like the accepted answer).
    $endgroup$
    – Winther
    8 hours ago








  • 3




    $begingroup$
    In C-derived languages at least, you have made a grievous error! Your expression parses as a = (b + c) > 0 ? 1 : 2. I always use parentheses in these cases, even when they are not strictly necessary.
    $endgroup$
    – TonyK
    5 hours ago








  • 1




    $begingroup$
    Just to clarify, by “ternary operator” you really mean “conditional operator”? Or are interested in any kind of ternary operator, regardless of semantics?
    $endgroup$
    – Konrad Rudolph
    2 hours ago














17












17








17


1



$begingroup$


Is there a math equivalent of the programming ternary operator?



a = b + (c > 0 ? 1 : 2)


The above means that if $c$ is greater than $0$ then $a = b + 1$, otherwise $a = b + 2$.










share|cite|improve this question











$endgroup$




Is there a math equivalent of the programming ternary operator?



a = b + (c > 0 ? 1 : 2)


The above means that if $c$ is greater than $0$ then $a = b + 1$, otherwise $a = b + 2$.







computer-science






share|cite|improve this question















share|cite|improve this question













share|cite|improve this question




share|cite|improve this question








edited 30 mins ago







dataphile

















asked 12 hours ago









dataphiledataphile

11417




11417












  • $begingroup$
    It probably depends on the form of the conditions and the results, but the example you gave can be expressed with the unit step $u(x)$ (with an appropriate definition at $x=1$): $a = u(b+c) + 1$
    $endgroup$
    – Alex
    11 hours ago








  • 2




    $begingroup$
    @Alex $a = b + 2 - u(c)$
    $endgroup$
    – eyeballfrog
    11 hours ago








  • 7




    $begingroup$
    A better question here is: what is good notation in this case. There are many ways of writing this, many ways which one would almost never use (like the accepted answer).
    $endgroup$
    – Winther
    8 hours ago








  • 3




    $begingroup$
    In C-derived languages at least, you have made a grievous error! Your expression parses as a = (b + c) > 0 ? 1 : 2. I always use parentheses in these cases, even when they are not strictly necessary.
    $endgroup$
    – TonyK
    5 hours ago








  • 1




    $begingroup$
    Just to clarify, by “ternary operator” you really mean “conditional operator”? Or are interested in any kind of ternary operator, regardless of semantics?
    $endgroup$
    – Konrad Rudolph
    2 hours ago


















  • $begingroup$
    It probably depends on the form of the conditions and the results, but the example you gave can be expressed with the unit step $u(x)$ (with an appropriate definition at $x=1$): $a = u(b+c) + 1$
    $endgroup$
    – Alex
    11 hours ago








  • 2




    $begingroup$
    @Alex $a = b + 2 - u(c)$
    $endgroup$
    – eyeballfrog
    11 hours ago








  • 7




    $begingroup$
    A better question here is: what is good notation in this case. There are many ways of writing this, many ways which one would almost never use (like the accepted answer).
    $endgroup$
    – Winther
    8 hours ago








  • 3




    $begingroup$
    In C-derived languages at least, you have made a grievous error! Your expression parses as a = (b + c) > 0 ? 1 : 2. I always use parentheses in these cases, even when they are not strictly necessary.
    $endgroup$
    – TonyK
    5 hours ago








  • 1




    $begingroup$
    Just to clarify, by “ternary operator” you really mean “conditional operator”? Or are interested in any kind of ternary operator, regardless of semantics?
    $endgroup$
    – Konrad Rudolph
    2 hours ago
















$begingroup$
It probably depends on the form of the conditions and the results, but the example you gave can be expressed with the unit step $u(x)$ (with an appropriate definition at $x=1$): $a = u(b+c) + 1$
$endgroup$
– Alex
11 hours ago






$begingroup$
It probably depends on the form of the conditions and the results, but the example you gave can be expressed with the unit step $u(x)$ (with an appropriate definition at $x=1$): $a = u(b+c) + 1$
$endgroup$
– Alex
11 hours ago






2




2




$begingroup$
@Alex $a = b + 2 - u(c)$
$endgroup$
– eyeballfrog
11 hours ago






$begingroup$
@Alex $a = b + 2 - u(c)$
$endgroup$
– eyeballfrog
11 hours ago






7




7




$begingroup$
A better question here is: what is good notation in this case. There are many ways of writing this, many ways which one would almost never use (like the accepted answer).
$endgroup$
– Winther
8 hours ago






$begingroup$
A better question here is: what is good notation in this case. There are many ways of writing this, many ways which one would almost never use (like the accepted answer).
$endgroup$
– Winther
8 hours ago






3




3




$begingroup$
In C-derived languages at least, you have made a grievous error! Your expression parses as a = (b + c) > 0 ? 1 : 2. I always use parentheses in these cases, even when they are not strictly necessary.
$endgroup$
– TonyK
5 hours ago






$begingroup$
In C-derived languages at least, you have made a grievous error! Your expression parses as a = (b + c) > 0 ? 1 : 2. I always use parentheses in these cases, even when they are not strictly necessary.
$endgroup$
– TonyK
5 hours ago






1




1




$begingroup$
Just to clarify, by “ternary operator” you really mean “conditional operator”? Or are interested in any kind of ternary operator, regardless of semantics?
$endgroup$
– Konrad Rudolph
2 hours ago




$begingroup$
Just to clarify, by “ternary operator” you really mean “conditional operator”? Or are interested in any kind of ternary operator, regardless of semantics?
$endgroup$
– Konrad Rudolph
2 hours ago










8 Answers
8






active

oldest

votes


















8












$begingroup$

From physics, I'm used to seeing the Kronecker delta,$$
{delta}_{ij}
equiv
left{
begin{array}{lll}
1 &text{if} & i=j \
0 &text{else}
end{array}
right. _{,}
$$
and I think people who work with it find the slightly generalized notation$$
{delta}_{left[text{condition}right]}
equiv
left{
begin{array}{lll}
1 &text{if} & left[text{condition}right] \
0 &text{else}
end{array}
right.
$$
to be pretty natural to them.



So, I tend to use $delta_{left[text{condition}right]}$ for a lot of things. Just seems so simple and well-understood.



Transforms:




  1. Basic Kronecker delta:
    To write the basic Kronecker delta in terms of the generalized Kronecker delta, it's just$$
    delta_{ij}
    Rightarrow
    delta_{i=j}
    ,.$$
    It's almost the same notation, and I think most folks can figure it out pretty easily without needing it explained.


  2. Conditional operator:
    The "conditional operator" or "ternary operator" for the simple case of ?1:0:$$
    begin{array}{ccccc}
    boxed{
    begin{array}{l}
    texttt{if}~left(texttt{condition}right) \
    { \
    ~~~~texttt{return 1;} \
    } \
    texttt{else} \
    { \
    ~~~~texttt{return 0;} \
    }
    end{array}
    ~} &
    Rightarrow &
    boxed{~
    texttt{condition ? 1 : 0}
    ~} &
    Rightarrow &
    delta_{i=j}
    end{array}
    _{.}
    $$
    Then if you want a non-zero value for the false-case, you'd just add another Kronecker delta, $delta_{operatorname{NOT}left(left[text{condition}right]right)} ,$ e.g. $delta_{i neq j} .$


  3. Indicator function:
    @SiongThyeGoh's answer recommended using indicator function notation. I'd rewrite their example like$$
    begin{array}{ccccc}
    underbrace{a=b+1+mathbb{1}_{(-infty, 0]}(c)}
    _{text{their example}}
    &
    Rightarrow &
    underbrace{a=b+1+ delta_{c in left(-infty, 0right]}}
    _{text{direct translation}} &
    Rightarrow &
    underbrace{a=b+1+ delta_{c , {small{leq}} , 0}}
    _{text{cleaner form}}
    end{array}
    ,.
    $$


  4. Iverson bracket:
    Iverson bracket notation, as suggested in @FredH's answer, is apparently the same thing; according to Wikipedia, it's meant as a generalization of the Kronecker delta, except they drop the $delta$ entirely, just putting the condition in square-brackets. In a context in readers expect it, Iverson bracket notation might be preferable if conditionals will be used a lot.





Note: "Conditional operator" rather than "ternary operator".



The conditional operator, condition ? trueValue : falseValue, has 3 arguments, making it an example of a ternary operator. By contrast, most other operators in programming tend to be unary operators (which have 1 argument) or binary operators (which have 2 arguments).



Since the conditional operator is fairly unique in being a ternary operator, it's often been called "the ternary operator", leading many to believe that that's its name. However, "conditional operator" is more specific and should generally be preferred.






share|cite|improve this answer











$endgroup$













  • $begingroup$
    wow, this is beautiful. I need it for an infinite series (with some elements excluded i.e. multiplied by zero and others included, multiplied by 1) so this cleaner form is exactly what I need.
    $endgroup$
    – dataphile
    2 hours ago










  • $begingroup$
    @dataphile Yeah, the Kronecker delta's great for specifying elements like that; it comes in handy if you're using Sigma/Pi/Einstein notations. Worth noting that it's basically the integrated Dirac delta; if you're working in a continuous domain, then the Dirac delta tends to be preferred, though it's largely the same thing.
    $endgroup$
    – Nat
    2 hours ago












  • $begingroup$
    The Kronecker delta isn’t a ternary operator, it’s a plain old binary operator, since it has two operands.
    $endgroup$
    – Konrad Rudolph
    2 hours ago












  • $begingroup$
    @KonradRudolph Yeah, gotta add a $delta_{operatorname{NOT}left(left[text{condition}right]right)}$-term to get that false-case behavior in there when it's non-zero.
    $endgroup$
    – Nat
    1 hour ago












  • $begingroup$
    The $1$-if-condition-else-$0$ generalisation of the Kronecker delta is called the Iverson bracket. We can generalise to any two input values we like with a suitable function, of domain ${0,,1}$, wraping the Iverson bracket.
    $endgroup$
    – J.G.
    5 mins ago



















34












$begingroup$

This is not a ternary operator, it is a function of two variables. There is one operation that results in $a$. You can certainly define a function
$$f(b,c)=begin {cases} b+1&c gt 0\
b+2 & c le 0 end {cases}$$



You can also define functions with any number of inputs you want, so you can define $f(a,b,c)=a(b+c^2)$, for example. This is a ternary function.






share|cite|improve this answer









$endgroup$









  • 3




    $begingroup$
    Ternary operator in programming means a conditional statement of form "if A then x else y" and uually is written just as presented in the OP, i.e. A ? x : y. It would also literally be termary if the OP wouldn't have inserted the particular values of 1 and 2.
    $endgroup$
    – Džuris
    7 hours ago






  • 6




    $begingroup$
    @Džuris Ternary means "of arity 3", like binary means "of arity 2" and unary "of arity 1". The specific operator is the conditional ternary operator.
    $endgroup$
    – frabala
    7 hours ago






  • 2




    $begingroup$
    Yes, that's what the word means. But the term ternary operator in programming is exactly THE conditional ternary operator. (en.wikipedia.org/wiki/%3F:)
    $endgroup$
    – Džuris
    7 hours ago








  • 5




    $begingroup$
    Once again, clarity beats compactness when it comes to mathematics.
    $endgroup$
    – Asaf Karagila
    4 hours ago






  • 3




    $begingroup$
    Well-chosen compact notations can contribute to clarity rather than detract from it, though.
    $endgroup$
    – Henning Makholm
    4 hours ago



















20












$begingroup$

In Concrete Mathematics by Graham, Knuth and Patashnik, the authors use the "Iverson bracket" notation: Square brackets around a statement represent $1$ if the statement is true and $0$ otherwise. Using this notation, you could write
$$
a = b + 2 - [c gt 0].
$$






share|cite|improve this answer











$endgroup$









  • 5




    $begingroup$
    aka en.wikipedia.org/wiki/Iverson_bracket
    $endgroup$
    – qwr
    10 hours ago










  • $begingroup$
    @qwr Thank you! I did not recall the name.
    $endgroup$
    – FredH
    10 hours ago






  • 5




    $begingroup$
    I would find it clearer to write $a = b + 1[c>0] + 2[cle0]$.
    $endgroup$
    – Rahul
    10 hours ago








  • 1




    $begingroup$
    I personally find Iverson brackets less cluttered than indicator functions, so I definitely recommend this notation.
    $endgroup$
    – J. M. is not a mathematician
    5 hours ago






  • 2




    $begingroup$
    Surely this is a unary operator, which works much like for example ! in the C programming language: Input is an arbitrary expression, the result is either 0 or 1 depending on the expression.
    $endgroup$
    – pipe
    2 hours ago





















19












$begingroup$

Using the indicator function notation:$$a=b+1+mathbb{1}_{(-infty, 0]}(c)$$






share|cite|improve this answer











$endgroup$













  • $begingroup$
    Indicator is definitely the way to go, since the conditional can define an arbitrary set.
    $endgroup$
    – eyeballfrog
    11 hours ago










  • $begingroup$
    Thank you, that is very elegant. I will definitely try out all of the answers as I often use this in various scenarios.
    $endgroup$
    – dataphile
    11 hours ago






  • 2




    $begingroup$
    I often use - and have seen others use - $mathbb{1}$ ("blackboard bold") to denote the indicator function to distinguish it from the number $1$
    $endgroup$
    – Christopher
    3 hours ago












  • $begingroup$
    The indicator function isn’t a ternary operator, it only has two operands.
    $endgroup$
    – Konrad Rudolph
    2 hours ago





















7












$begingroup$

In math, equations are written in piecewise form by having a curly brace enclose multiple lines; each one with a condition excepting the last which has "otherwise".



There are a few custom operators that also occasionally make an appearance. E.g. the Heavyside function mentioned by Alex, the Dirac function, and the cyclical operator $delta_{ijk}$ - all of which can be used to emulate conditional behaviour.






share|cite|improve this answer









$endgroup$





















    3












    $begingroup$

    One should realize that operators are just a fancy way of using functions.
    So a ternary operator is a function of 3 variables that is notated in a different way. Is that useful? The answer is mostly not. Also realize that any mathematician is allowed to introduce any notation he feels is illustrative.



    Let's review why we use binary operators at all like in a+b*c . Because parameters and results are of the same type, it makes sense to leave out parentheses and introduce complicated priority rules. Imagine that a b c are numbers and we have a normal + and a peculiar * that results in dragons. Now the expression doesn't make sense (assumming a high priority *), because there is no way to add numbers and dragons. Thusly most ternary operators results in a mess.



    With a proper notation there are examples of ternary operations. For example, there is a special notation for "sum for i from a to b of expression". This takes two boundaries (numbers) and a function from a number of that type that results in another number. (Mathematician, read "element of an addition group" for number.)
    The notation for integration is similarly ternary.

    So in short ternary operators exist, and you can define your own. They are in general accompagnied with a special notation, or they are not helpful.



    Now back to the special case you mention.
    Because truth values are implied in math, an expression like "if a then b else c" makes sense if a represens a truth value like (7<12). The above expression is understood in every mathematical context. However in a context where truth values are not considered a set, (if .. then .. else ..) would not be considered an operator/function, but a textual explanation. A general accepted notation could be useful in math, but I'm not aware there is one. That is probably, because like in the above, informal notations are readily understood.






    share|cite|improve this answer









    $endgroup$





















      0












      $begingroup$

      There are several types of triple product on vectors — though those are usually notated with a combination of binary operators, not a single ternary one.



      (And they're not ternary conditional operators, which is what the question may be intending.)






      share|cite|improve this answer








      New contributor




      gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      $endgroup$





















        0












        $begingroup$

        There are many good answers that give notation for, “if this condition holds, then 1, else 0.” This corresponds to an even simpler expression in C;(x>1) is equivalent to (x>1 ? 1 : 0).



        It’s worth noting that the ternary operator is more general than that. If the arguments are elements of a ring, you could express c ? a : b with (using Iverson-bracket notation) $(a-b) cdot [c] + b$, but not otherwise. (And compilers frequently use this trick, in a Boolean ring, to compile conditionals without needing to execute a branch instruction.) In a C program, evaluating the expressions $a$ or $b$ might have side-effects, such as deleting a file or printing a message to the screen. In a mathematical function, this isn’t something you would worry about, and a programming language where this is impossible is called functional.



        Ross Millikan gave the most standard notation, a cases block. The closest equivalent in mathematical computer science is the if-then-else function of Lambda Calculus.






        share|cite|improve this answer











        $endgroup$













        • $begingroup$
          "in C;(x>1) is equivalent to (x>1 ? 1 : 0)" Not exactly. Rather, C considers any nonzero value as equivalent from a truthiness perspective. So there is no difference between an integer expression taking the value of -1, 1, 42 or INT_MAX when that expression is treated as a boolean rvalue. In C, the one special integer value, when treated as a boolean, is 0, representing false. That said, if someone actually used (x>1) as a non-boolean expression and I noticed it, I would likely at least briefly try to find some heavy physical object that could be applied at high speed to their keyboard.
          $endgroup$
          – a CVn
          1 hour ago










        • $begingroup$
          @aCVn The C11 standard states, “Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.” Similarly for equality and inequality, “Each of the operators yields 1 if the specified relation is true and 0 if it is false.”
          $endgroup$
          – Davislor
          51 mins ago












        • $begingroup$
          @aCVn What you wrote is true, but the relational operators in C will only return the values 1 or 0.
          $endgroup$
          – Davislor
          38 mins ago











        Your Answer





        StackExchange.ifUsing("editor", function () {
        return StackExchange.using("mathjaxEditing", function () {
        StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
        StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
        });
        });
        }, "mathjax-editing");

        StackExchange.ready(function() {
        var channelOptions = {
        tags: "".split(" "),
        id: "69"
        };
        initTagRenderer("".split(" "), "".split(" "), channelOptions);

        StackExchange.using("externalEditor", function() {
        // Have to fire editor after snippets, if snippets enabled
        if (StackExchange.settings.snippets.snippetsEnabled) {
        StackExchange.using("snippets", function() {
        createEditor();
        });
        }
        else {
        createEditor();
        }
        });

        function createEditor() {
        StackExchange.prepareEditor({
        heartbeatType: 'answer',
        autoActivateHeartbeat: false,
        convertImagesToLinks: true,
        noModals: true,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: 10,
        bindNavPrevention: true,
        postfix: "",
        imageUploader: {
        brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
        contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
        allowUrls: true
        },
        noCode: true, onDemand: true,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        });


        }
        });














        draft saved

        draft discarded


















        StackExchange.ready(
        function () {
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3135798%2fis-there-a-math-equivalent-to-the-conditional-ternary-operator%23new-answer', 'question_page');
        }
        );

        Post as a guest















        Required, but never shown

























        8 Answers
        8






        active

        oldest

        votes








        8 Answers
        8






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        8












        $begingroup$

        From physics, I'm used to seeing the Kronecker delta,$$
        {delta}_{ij}
        equiv
        left{
        begin{array}{lll}
        1 &text{if} & i=j \
        0 &text{else}
        end{array}
        right. _{,}
        $$
        and I think people who work with it find the slightly generalized notation$$
        {delta}_{left[text{condition}right]}
        equiv
        left{
        begin{array}{lll}
        1 &text{if} & left[text{condition}right] \
        0 &text{else}
        end{array}
        right.
        $$
        to be pretty natural to them.



        So, I tend to use $delta_{left[text{condition}right]}$ for a lot of things. Just seems so simple and well-understood.



        Transforms:




        1. Basic Kronecker delta:
          To write the basic Kronecker delta in terms of the generalized Kronecker delta, it's just$$
          delta_{ij}
          Rightarrow
          delta_{i=j}
          ,.$$
          It's almost the same notation, and I think most folks can figure it out pretty easily without needing it explained.


        2. Conditional operator:
          The "conditional operator" or "ternary operator" for the simple case of ?1:0:$$
          begin{array}{ccccc}
          boxed{
          begin{array}{l}
          texttt{if}~left(texttt{condition}right) \
          { \
          ~~~~texttt{return 1;} \
          } \
          texttt{else} \
          { \
          ~~~~texttt{return 0;} \
          }
          end{array}
          ~} &
          Rightarrow &
          boxed{~
          texttt{condition ? 1 : 0}
          ~} &
          Rightarrow &
          delta_{i=j}
          end{array}
          _{.}
          $$
          Then if you want a non-zero value for the false-case, you'd just add another Kronecker delta, $delta_{operatorname{NOT}left(left[text{condition}right]right)} ,$ e.g. $delta_{i neq j} .$


        3. Indicator function:
          @SiongThyeGoh's answer recommended using indicator function notation. I'd rewrite their example like$$
          begin{array}{ccccc}
          underbrace{a=b+1+mathbb{1}_{(-infty, 0]}(c)}
          _{text{their example}}
          &
          Rightarrow &
          underbrace{a=b+1+ delta_{c in left(-infty, 0right]}}
          _{text{direct translation}} &
          Rightarrow &
          underbrace{a=b+1+ delta_{c , {small{leq}} , 0}}
          _{text{cleaner form}}
          end{array}
          ,.
          $$


        4. Iverson bracket:
          Iverson bracket notation, as suggested in @FredH's answer, is apparently the same thing; according to Wikipedia, it's meant as a generalization of the Kronecker delta, except they drop the $delta$ entirely, just putting the condition in square-brackets. In a context in readers expect it, Iverson bracket notation might be preferable if conditionals will be used a lot.





        Note: "Conditional operator" rather than "ternary operator".



        The conditional operator, condition ? trueValue : falseValue, has 3 arguments, making it an example of a ternary operator. By contrast, most other operators in programming tend to be unary operators (which have 1 argument) or binary operators (which have 2 arguments).



        Since the conditional operator is fairly unique in being a ternary operator, it's often been called "the ternary operator", leading many to believe that that's its name. However, "conditional operator" is more specific and should generally be preferred.






        share|cite|improve this answer











        $endgroup$













        • $begingroup$
          wow, this is beautiful. I need it for an infinite series (with some elements excluded i.e. multiplied by zero and others included, multiplied by 1) so this cleaner form is exactly what I need.
          $endgroup$
          – dataphile
          2 hours ago










        • $begingroup$
          @dataphile Yeah, the Kronecker delta's great for specifying elements like that; it comes in handy if you're using Sigma/Pi/Einstein notations. Worth noting that it's basically the integrated Dirac delta; if you're working in a continuous domain, then the Dirac delta tends to be preferred, though it's largely the same thing.
          $endgroup$
          – Nat
          2 hours ago












        • $begingroup$
          The Kronecker delta isn’t a ternary operator, it’s a plain old binary operator, since it has two operands.
          $endgroup$
          – Konrad Rudolph
          2 hours ago












        • $begingroup$
          @KonradRudolph Yeah, gotta add a $delta_{operatorname{NOT}left(left[text{condition}right]right)}$-term to get that false-case behavior in there when it's non-zero.
          $endgroup$
          – Nat
          1 hour ago












        • $begingroup$
          The $1$-if-condition-else-$0$ generalisation of the Kronecker delta is called the Iverson bracket. We can generalise to any two input values we like with a suitable function, of domain ${0,,1}$, wraping the Iverson bracket.
          $endgroup$
          – J.G.
          5 mins ago
















        8












        $begingroup$

        From physics, I'm used to seeing the Kronecker delta,$$
        {delta}_{ij}
        equiv
        left{
        begin{array}{lll}
        1 &text{if} & i=j \
        0 &text{else}
        end{array}
        right. _{,}
        $$
        and I think people who work with it find the slightly generalized notation$$
        {delta}_{left[text{condition}right]}
        equiv
        left{
        begin{array}{lll}
        1 &text{if} & left[text{condition}right] \
        0 &text{else}
        end{array}
        right.
        $$
        to be pretty natural to them.



        So, I tend to use $delta_{left[text{condition}right]}$ for a lot of things. Just seems so simple and well-understood.



        Transforms:




        1. Basic Kronecker delta:
          To write the basic Kronecker delta in terms of the generalized Kronecker delta, it's just$$
          delta_{ij}
          Rightarrow
          delta_{i=j}
          ,.$$
          It's almost the same notation, and I think most folks can figure it out pretty easily without needing it explained.


        2. Conditional operator:
          The "conditional operator" or "ternary operator" for the simple case of ?1:0:$$
          begin{array}{ccccc}
          boxed{
          begin{array}{l}
          texttt{if}~left(texttt{condition}right) \
          { \
          ~~~~texttt{return 1;} \
          } \
          texttt{else} \
          { \
          ~~~~texttt{return 0;} \
          }
          end{array}
          ~} &
          Rightarrow &
          boxed{~
          texttt{condition ? 1 : 0}
          ~} &
          Rightarrow &
          delta_{i=j}
          end{array}
          _{.}
          $$
          Then if you want a non-zero value for the false-case, you'd just add another Kronecker delta, $delta_{operatorname{NOT}left(left[text{condition}right]right)} ,$ e.g. $delta_{i neq j} .$


        3. Indicator function:
          @SiongThyeGoh's answer recommended using indicator function notation. I'd rewrite their example like$$
          begin{array}{ccccc}
          underbrace{a=b+1+mathbb{1}_{(-infty, 0]}(c)}
          _{text{their example}}
          &
          Rightarrow &
          underbrace{a=b+1+ delta_{c in left(-infty, 0right]}}
          _{text{direct translation}} &
          Rightarrow &
          underbrace{a=b+1+ delta_{c , {small{leq}} , 0}}
          _{text{cleaner form}}
          end{array}
          ,.
          $$


        4. Iverson bracket:
          Iverson bracket notation, as suggested in @FredH's answer, is apparently the same thing; according to Wikipedia, it's meant as a generalization of the Kronecker delta, except they drop the $delta$ entirely, just putting the condition in square-brackets. In a context in readers expect it, Iverson bracket notation might be preferable if conditionals will be used a lot.





        Note: "Conditional operator" rather than "ternary operator".



        The conditional operator, condition ? trueValue : falseValue, has 3 arguments, making it an example of a ternary operator. By contrast, most other operators in programming tend to be unary operators (which have 1 argument) or binary operators (which have 2 arguments).



        Since the conditional operator is fairly unique in being a ternary operator, it's often been called "the ternary operator", leading many to believe that that's its name. However, "conditional operator" is more specific and should generally be preferred.






        share|cite|improve this answer











        $endgroup$













        • $begingroup$
          wow, this is beautiful. I need it for an infinite series (with some elements excluded i.e. multiplied by zero and others included, multiplied by 1) so this cleaner form is exactly what I need.
          $endgroup$
          – dataphile
          2 hours ago










        • $begingroup$
          @dataphile Yeah, the Kronecker delta's great for specifying elements like that; it comes in handy if you're using Sigma/Pi/Einstein notations. Worth noting that it's basically the integrated Dirac delta; if you're working in a continuous domain, then the Dirac delta tends to be preferred, though it's largely the same thing.
          $endgroup$
          – Nat
          2 hours ago












        • $begingroup$
          The Kronecker delta isn’t a ternary operator, it’s a plain old binary operator, since it has two operands.
          $endgroup$
          – Konrad Rudolph
          2 hours ago












        • $begingroup$
          @KonradRudolph Yeah, gotta add a $delta_{operatorname{NOT}left(left[text{condition}right]right)}$-term to get that false-case behavior in there when it's non-zero.
          $endgroup$
          – Nat
          1 hour ago












        • $begingroup$
          The $1$-if-condition-else-$0$ generalisation of the Kronecker delta is called the Iverson bracket. We can generalise to any two input values we like with a suitable function, of domain ${0,,1}$, wraping the Iverson bracket.
          $endgroup$
          – J.G.
          5 mins ago














        8












        8








        8





        $begingroup$

        From physics, I'm used to seeing the Kronecker delta,$$
        {delta}_{ij}
        equiv
        left{
        begin{array}{lll}
        1 &text{if} & i=j \
        0 &text{else}
        end{array}
        right. _{,}
        $$
        and I think people who work with it find the slightly generalized notation$$
        {delta}_{left[text{condition}right]}
        equiv
        left{
        begin{array}{lll}
        1 &text{if} & left[text{condition}right] \
        0 &text{else}
        end{array}
        right.
        $$
        to be pretty natural to them.



        So, I tend to use $delta_{left[text{condition}right]}$ for a lot of things. Just seems so simple and well-understood.



        Transforms:




        1. Basic Kronecker delta:
          To write the basic Kronecker delta in terms of the generalized Kronecker delta, it's just$$
          delta_{ij}
          Rightarrow
          delta_{i=j}
          ,.$$
          It's almost the same notation, and I think most folks can figure it out pretty easily without needing it explained.


        2. Conditional operator:
          The "conditional operator" or "ternary operator" for the simple case of ?1:0:$$
          begin{array}{ccccc}
          boxed{
          begin{array}{l}
          texttt{if}~left(texttt{condition}right) \
          { \
          ~~~~texttt{return 1;} \
          } \
          texttt{else} \
          { \
          ~~~~texttt{return 0;} \
          }
          end{array}
          ~} &
          Rightarrow &
          boxed{~
          texttt{condition ? 1 : 0}
          ~} &
          Rightarrow &
          delta_{i=j}
          end{array}
          _{.}
          $$
          Then if you want a non-zero value for the false-case, you'd just add another Kronecker delta, $delta_{operatorname{NOT}left(left[text{condition}right]right)} ,$ e.g. $delta_{i neq j} .$


        3. Indicator function:
          @SiongThyeGoh's answer recommended using indicator function notation. I'd rewrite their example like$$
          begin{array}{ccccc}
          underbrace{a=b+1+mathbb{1}_{(-infty, 0]}(c)}
          _{text{their example}}
          &
          Rightarrow &
          underbrace{a=b+1+ delta_{c in left(-infty, 0right]}}
          _{text{direct translation}} &
          Rightarrow &
          underbrace{a=b+1+ delta_{c , {small{leq}} , 0}}
          _{text{cleaner form}}
          end{array}
          ,.
          $$


        4. Iverson bracket:
          Iverson bracket notation, as suggested in @FredH's answer, is apparently the same thing; according to Wikipedia, it's meant as a generalization of the Kronecker delta, except they drop the $delta$ entirely, just putting the condition in square-brackets. In a context in readers expect it, Iverson bracket notation might be preferable if conditionals will be used a lot.





        Note: "Conditional operator" rather than "ternary operator".



        The conditional operator, condition ? trueValue : falseValue, has 3 arguments, making it an example of a ternary operator. By contrast, most other operators in programming tend to be unary operators (which have 1 argument) or binary operators (which have 2 arguments).



        Since the conditional operator is fairly unique in being a ternary operator, it's often been called "the ternary operator", leading many to believe that that's its name. However, "conditional operator" is more specific and should generally be preferred.






        share|cite|improve this answer











        $endgroup$



        From physics, I'm used to seeing the Kronecker delta,$$
        {delta}_{ij}
        equiv
        left{
        begin{array}{lll}
        1 &text{if} & i=j \
        0 &text{else}
        end{array}
        right. _{,}
        $$
        and I think people who work with it find the slightly generalized notation$$
        {delta}_{left[text{condition}right]}
        equiv
        left{
        begin{array}{lll}
        1 &text{if} & left[text{condition}right] \
        0 &text{else}
        end{array}
        right.
        $$
        to be pretty natural to them.



        So, I tend to use $delta_{left[text{condition}right]}$ for a lot of things. Just seems so simple and well-understood.



        Transforms:




        1. Basic Kronecker delta:
          To write the basic Kronecker delta in terms of the generalized Kronecker delta, it's just$$
          delta_{ij}
          Rightarrow
          delta_{i=j}
          ,.$$
          It's almost the same notation, and I think most folks can figure it out pretty easily without needing it explained.


        2. Conditional operator:
          The "conditional operator" or "ternary operator" for the simple case of ?1:0:$$
          begin{array}{ccccc}
          boxed{
          begin{array}{l}
          texttt{if}~left(texttt{condition}right) \
          { \
          ~~~~texttt{return 1;} \
          } \
          texttt{else} \
          { \
          ~~~~texttt{return 0;} \
          }
          end{array}
          ~} &
          Rightarrow &
          boxed{~
          texttt{condition ? 1 : 0}
          ~} &
          Rightarrow &
          delta_{i=j}
          end{array}
          _{.}
          $$
          Then if you want a non-zero value for the false-case, you'd just add another Kronecker delta, $delta_{operatorname{NOT}left(left[text{condition}right]right)} ,$ e.g. $delta_{i neq j} .$


        3. Indicator function:
          @SiongThyeGoh's answer recommended using indicator function notation. I'd rewrite their example like$$
          begin{array}{ccccc}
          underbrace{a=b+1+mathbb{1}_{(-infty, 0]}(c)}
          _{text{their example}}
          &
          Rightarrow &
          underbrace{a=b+1+ delta_{c in left(-infty, 0right]}}
          _{text{direct translation}} &
          Rightarrow &
          underbrace{a=b+1+ delta_{c , {small{leq}} , 0}}
          _{text{cleaner form}}
          end{array}
          ,.
          $$


        4. Iverson bracket:
          Iverson bracket notation, as suggested in @FredH's answer, is apparently the same thing; according to Wikipedia, it's meant as a generalization of the Kronecker delta, except they drop the $delta$ entirely, just putting the condition in square-brackets. In a context in readers expect it, Iverson bracket notation might be preferable if conditionals will be used a lot.





        Note: "Conditional operator" rather than "ternary operator".



        The conditional operator, condition ? trueValue : falseValue, has 3 arguments, making it an example of a ternary operator. By contrast, most other operators in programming tend to be unary operators (which have 1 argument) or binary operators (which have 2 arguments).



        Since the conditional operator is fairly unique in being a ternary operator, it's often been called "the ternary operator", leading many to believe that that's its name. However, "conditional operator" is more specific and should generally be preferred.







        share|cite|improve this answer














        share|cite|improve this answer



        share|cite|improve this answer








        edited 1 hour ago

























        answered 2 hours ago









        NatNat

        6281511




        6281511












        • $begingroup$
          wow, this is beautiful. I need it for an infinite series (with some elements excluded i.e. multiplied by zero and others included, multiplied by 1) so this cleaner form is exactly what I need.
          $endgroup$
          – dataphile
          2 hours ago










        • $begingroup$
          @dataphile Yeah, the Kronecker delta's great for specifying elements like that; it comes in handy if you're using Sigma/Pi/Einstein notations. Worth noting that it's basically the integrated Dirac delta; if you're working in a continuous domain, then the Dirac delta tends to be preferred, though it's largely the same thing.
          $endgroup$
          – Nat
          2 hours ago












        • $begingroup$
          The Kronecker delta isn’t a ternary operator, it’s a plain old binary operator, since it has two operands.
          $endgroup$
          – Konrad Rudolph
          2 hours ago












        • $begingroup$
          @KonradRudolph Yeah, gotta add a $delta_{operatorname{NOT}left(left[text{condition}right]right)}$-term to get that false-case behavior in there when it's non-zero.
          $endgroup$
          – Nat
          1 hour ago












        • $begingroup$
          The $1$-if-condition-else-$0$ generalisation of the Kronecker delta is called the Iverson bracket. We can generalise to any two input values we like with a suitable function, of domain ${0,,1}$, wraping the Iverson bracket.
          $endgroup$
          – J.G.
          5 mins ago


















        • $begingroup$
          wow, this is beautiful. I need it for an infinite series (with some elements excluded i.e. multiplied by zero and others included, multiplied by 1) so this cleaner form is exactly what I need.
          $endgroup$
          – dataphile
          2 hours ago










        • $begingroup$
          @dataphile Yeah, the Kronecker delta's great for specifying elements like that; it comes in handy if you're using Sigma/Pi/Einstein notations. Worth noting that it's basically the integrated Dirac delta; if you're working in a continuous domain, then the Dirac delta tends to be preferred, though it's largely the same thing.
          $endgroup$
          – Nat
          2 hours ago












        • $begingroup$
          The Kronecker delta isn’t a ternary operator, it’s a plain old binary operator, since it has two operands.
          $endgroup$
          – Konrad Rudolph
          2 hours ago












        • $begingroup$
          @KonradRudolph Yeah, gotta add a $delta_{operatorname{NOT}left(left[text{condition}right]right)}$-term to get that false-case behavior in there when it's non-zero.
          $endgroup$
          – Nat
          1 hour ago












        • $begingroup$
          The $1$-if-condition-else-$0$ generalisation of the Kronecker delta is called the Iverson bracket. We can generalise to any two input values we like with a suitable function, of domain ${0,,1}$, wraping the Iverson bracket.
          $endgroup$
          – J.G.
          5 mins ago
















        $begingroup$
        wow, this is beautiful. I need it for an infinite series (with some elements excluded i.e. multiplied by zero and others included, multiplied by 1) so this cleaner form is exactly what I need.
        $endgroup$
        – dataphile
        2 hours ago




        $begingroup$
        wow, this is beautiful. I need it for an infinite series (with some elements excluded i.e. multiplied by zero and others included, multiplied by 1) so this cleaner form is exactly what I need.
        $endgroup$
        – dataphile
        2 hours ago












        $begingroup$
        @dataphile Yeah, the Kronecker delta's great for specifying elements like that; it comes in handy if you're using Sigma/Pi/Einstein notations. Worth noting that it's basically the integrated Dirac delta; if you're working in a continuous domain, then the Dirac delta tends to be preferred, though it's largely the same thing.
        $endgroup$
        – Nat
        2 hours ago






        $begingroup$
        @dataphile Yeah, the Kronecker delta's great for specifying elements like that; it comes in handy if you're using Sigma/Pi/Einstein notations. Worth noting that it's basically the integrated Dirac delta; if you're working in a continuous domain, then the Dirac delta tends to be preferred, though it's largely the same thing.
        $endgroup$
        – Nat
        2 hours ago














        $begingroup$
        The Kronecker delta isn’t a ternary operator, it’s a plain old binary operator, since it has two operands.
        $endgroup$
        – Konrad Rudolph
        2 hours ago






        $begingroup$
        The Kronecker delta isn’t a ternary operator, it’s a plain old binary operator, since it has two operands.
        $endgroup$
        – Konrad Rudolph
        2 hours ago














        $begingroup$
        @KonradRudolph Yeah, gotta add a $delta_{operatorname{NOT}left(left[text{condition}right]right)}$-term to get that false-case behavior in there when it's non-zero.
        $endgroup$
        – Nat
        1 hour ago






        $begingroup$
        @KonradRudolph Yeah, gotta add a $delta_{operatorname{NOT}left(left[text{condition}right]right)}$-term to get that false-case behavior in there when it's non-zero.
        $endgroup$
        – Nat
        1 hour ago














        $begingroup$
        The $1$-if-condition-else-$0$ generalisation of the Kronecker delta is called the Iverson bracket. We can generalise to any two input values we like with a suitable function, of domain ${0,,1}$, wraping the Iverson bracket.
        $endgroup$
        – J.G.
        5 mins ago




        $begingroup$
        The $1$-if-condition-else-$0$ generalisation of the Kronecker delta is called the Iverson bracket. We can generalise to any two input values we like with a suitable function, of domain ${0,,1}$, wraping the Iverson bracket.
        $endgroup$
        – J.G.
        5 mins ago











        34












        $begingroup$

        This is not a ternary operator, it is a function of two variables. There is one operation that results in $a$. You can certainly define a function
        $$f(b,c)=begin {cases} b+1&c gt 0\
        b+2 & c le 0 end {cases}$$



        You can also define functions with any number of inputs you want, so you can define $f(a,b,c)=a(b+c^2)$, for example. This is a ternary function.






        share|cite|improve this answer









        $endgroup$









        • 3




          $begingroup$
          Ternary operator in programming means a conditional statement of form "if A then x else y" and uually is written just as presented in the OP, i.e. A ? x : y. It would also literally be termary if the OP wouldn't have inserted the particular values of 1 and 2.
          $endgroup$
          – Džuris
          7 hours ago






        • 6




          $begingroup$
          @Džuris Ternary means "of arity 3", like binary means "of arity 2" and unary "of arity 1". The specific operator is the conditional ternary operator.
          $endgroup$
          – frabala
          7 hours ago






        • 2




          $begingroup$
          Yes, that's what the word means. But the term ternary operator in programming is exactly THE conditional ternary operator. (en.wikipedia.org/wiki/%3F:)
          $endgroup$
          – Džuris
          7 hours ago








        • 5




          $begingroup$
          Once again, clarity beats compactness when it comes to mathematics.
          $endgroup$
          – Asaf Karagila
          4 hours ago






        • 3




          $begingroup$
          Well-chosen compact notations can contribute to clarity rather than detract from it, though.
          $endgroup$
          – Henning Makholm
          4 hours ago
















        34












        $begingroup$

        This is not a ternary operator, it is a function of two variables. There is one operation that results in $a$. You can certainly define a function
        $$f(b,c)=begin {cases} b+1&c gt 0\
        b+2 & c le 0 end {cases}$$



        You can also define functions with any number of inputs you want, so you can define $f(a,b,c)=a(b+c^2)$, for example. This is a ternary function.






        share|cite|improve this answer









        $endgroup$









        • 3




          $begingroup$
          Ternary operator in programming means a conditional statement of form "if A then x else y" and uually is written just as presented in the OP, i.e. A ? x : y. It would also literally be termary if the OP wouldn't have inserted the particular values of 1 and 2.
          $endgroup$
          – Džuris
          7 hours ago






        • 6




          $begingroup$
          @Džuris Ternary means "of arity 3", like binary means "of arity 2" and unary "of arity 1". The specific operator is the conditional ternary operator.
          $endgroup$
          – frabala
          7 hours ago






        • 2




          $begingroup$
          Yes, that's what the word means. But the term ternary operator in programming is exactly THE conditional ternary operator. (en.wikipedia.org/wiki/%3F:)
          $endgroup$
          – Džuris
          7 hours ago








        • 5




          $begingroup$
          Once again, clarity beats compactness when it comes to mathematics.
          $endgroup$
          – Asaf Karagila
          4 hours ago






        • 3




          $begingroup$
          Well-chosen compact notations can contribute to clarity rather than detract from it, though.
          $endgroup$
          – Henning Makholm
          4 hours ago














        34












        34








        34





        $begingroup$

        This is not a ternary operator, it is a function of two variables. There is one operation that results in $a$. You can certainly define a function
        $$f(b,c)=begin {cases} b+1&c gt 0\
        b+2 & c le 0 end {cases}$$



        You can also define functions with any number of inputs you want, so you can define $f(a,b,c)=a(b+c^2)$, for example. This is a ternary function.






        share|cite|improve this answer









        $endgroup$



        This is not a ternary operator, it is a function of two variables. There is one operation that results in $a$. You can certainly define a function
        $$f(b,c)=begin {cases} b+1&c gt 0\
        b+2 & c le 0 end {cases}$$



        You can also define functions with any number of inputs you want, so you can define $f(a,b,c)=a(b+c^2)$, for example. This is a ternary function.







        share|cite|improve this answer












        share|cite|improve this answer



        share|cite|improve this answer










        answered 11 hours ago









        Ross MillikanRoss Millikan

        298k23199372




        298k23199372








        • 3




          $begingroup$
          Ternary operator in programming means a conditional statement of form "if A then x else y" and uually is written just as presented in the OP, i.e. A ? x : y. It would also literally be termary if the OP wouldn't have inserted the particular values of 1 and 2.
          $endgroup$
          – Džuris
          7 hours ago






        • 6




          $begingroup$
          @Džuris Ternary means "of arity 3", like binary means "of arity 2" and unary "of arity 1". The specific operator is the conditional ternary operator.
          $endgroup$
          – frabala
          7 hours ago






        • 2




          $begingroup$
          Yes, that's what the word means. But the term ternary operator in programming is exactly THE conditional ternary operator. (en.wikipedia.org/wiki/%3F:)
          $endgroup$
          – Džuris
          7 hours ago








        • 5




          $begingroup$
          Once again, clarity beats compactness when it comes to mathematics.
          $endgroup$
          – Asaf Karagila
          4 hours ago






        • 3




          $begingroup$
          Well-chosen compact notations can contribute to clarity rather than detract from it, though.
          $endgroup$
          – Henning Makholm
          4 hours ago














        • 3




          $begingroup$
          Ternary operator in programming means a conditional statement of form "if A then x else y" and uually is written just as presented in the OP, i.e. A ? x : y. It would also literally be termary if the OP wouldn't have inserted the particular values of 1 and 2.
          $endgroup$
          – Džuris
          7 hours ago






        • 6




          $begingroup$
          @Džuris Ternary means "of arity 3", like binary means "of arity 2" and unary "of arity 1". The specific operator is the conditional ternary operator.
          $endgroup$
          – frabala
          7 hours ago






        • 2




          $begingroup$
          Yes, that's what the word means. But the term ternary operator in programming is exactly THE conditional ternary operator. (en.wikipedia.org/wiki/%3F:)
          $endgroup$
          – Džuris
          7 hours ago








        • 5




          $begingroup$
          Once again, clarity beats compactness when it comes to mathematics.
          $endgroup$
          – Asaf Karagila
          4 hours ago






        • 3




          $begingroup$
          Well-chosen compact notations can contribute to clarity rather than detract from it, though.
          $endgroup$
          – Henning Makholm
          4 hours ago








        3




        3




        $begingroup$
        Ternary operator in programming means a conditional statement of form "if A then x else y" and uually is written just as presented in the OP, i.e. A ? x : y. It would also literally be termary if the OP wouldn't have inserted the particular values of 1 and 2.
        $endgroup$
        – Džuris
        7 hours ago




        $begingroup$
        Ternary operator in programming means a conditional statement of form "if A then x else y" and uually is written just as presented in the OP, i.e. A ? x : y. It would also literally be termary if the OP wouldn't have inserted the particular values of 1 and 2.
        $endgroup$
        – Džuris
        7 hours ago




        6




        6




        $begingroup$
        @Džuris Ternary means "of arity 3", like binary means "of arity 2" and unary "of arity 1". The specific operator is the conditional ternary operator.
        $endgroup$
        – frabala
        7 hours ago




        $begingroup$
        @Džuris Ternary means "of arity 3", like binary means "of arity 2" and unary "of arity 1". The specific operator is the conditional ternary operator.
        $endgroup$
        – frabala
        7 hours ago




        2




        2




        $begingroup$
        Yes, that's what the word means. But the term ternary operator in programming is exactly THE conditional ternary operator. (en.wikipedia.org/wiki/%3F:)
        $endgroup$
        – Džuris
        7 hours ago






        $begingroup$
        Yes, that's what the word means. But the term ternary operator in programming is exactly THE conditional ternary operator. (en.wikipedia.org/wiki/%3F:)
        $endgroup$
        – Džuris
        7 hours ago






        5




        5




        $begingroup$
        Once again, clarity beats compactness when it comes to mathematics.
        $endgroup$
        – Asaf Karagila
        4 hours ago




        $begingroup$
        Once again, clarity beats compactness when it comes to mathematics.
        $endgroup$
        – Asaf Karagila
        4 hours ago




        3




        3




        $begingroup$
        Well-chosen compact notations can contribute to clarity rather than detract from it, though.
        $endgroup$
        – Henning Makholm
        4 hours ago




        $begingroup$
        Well-chosen compact notations can contribute to clarity rather than detract from it, though.
        $endgroup$
        – Henning Makholm
        4 hours ago











        20












        $begingroup$

        In Concrete Mathematics by Graham, Knuth and Patashnik, the authors use the "Iverson bracket" notation: Square brackets around a statement represent $1$ if the statement is true and $0$ otherwise. Using this notation, you could write
        $$
        a = b + 2 - [c gt 0].
        $$






        share|cite|improve this answer











        $endgroup$









        • 5




          $begingroup$
          aka en.wikipedia.org/wiki/Iverson_bracket
          $endgroup$
          – qwr
          10 hours ago










        • $begingroup$
          @qwr Thank you! I did not recall the name.
          $endgroup$
          – FredH
          10 hours ago






        • 5




          $begingroup$
          I would find it clearer to write $a = b + 1[c>0] + 2[cle0]$.
          $endgroup$
          – Rahul
          10 hours ago








        • 1




          $begingroup$
          I personally find Iverson brackets less cluttered than indicator functions, so I definitely recommend this notation.
          $endgroup$
          – J. M. is not a mathematician
          5 hours ago






        • 2




          $begingroup$
          Surely this is a unary operator, which works much like for example ! in the C programming language: Input is an arbitrary expression, the result is either 0 or 1 depending on the expression.
          $endgroup$
          – pipe
          2 hours ago


















        20












        $begingroup$

        In Concrete Mathematics by Graham, Knuth and Patashnik, the authors use the "Iverson bracket" notation: Square brackets around a statement represent $1$ if the statement is true and $0$ otherwise. Using this notation, you could write
        $$
        a = b + 2 - [c gt 0].
        $$






        share|cite|improve this answer











        $endgroup$









        • 5




          $begingroup$
          aka en.wikipedia.org/wiki/Iverson_bracket
          $endgroup$
          – qwr
          10 hours ago










        • $begingroup$
          @qwr Thank you! I did not recall the name.
          $endgroup$
          – FredH
          10 hours ago






        • 5




          $begingroup$
          I would find it clearer to write $a = b + 1[c>0] + 2[cle0]$.
          $endgroup$
          – Rahul
          10 hours ago








        • 1




          $begingroup$
          I personally find Iverson brackets less cluttered than indicator functions, so I definitely recommend this notation.
          $endgroup$
          – J. M. is not a mathematician
          5 hours ago






        • 2




          $begingroup$
          Surely this is a unary operator, which works much like for example ! in the C programming language: Input is an arbitrary expression, the result is either 0 or 1 depending on the expression.
          $endgroup$
          – pipe
          2 hours ago
















        20












        20








        20





        $begingroup$

        In Concrete Mathematics by Graham, Knuth and Patashnik, the authors use the "Iverson bracket" notation: Square brackets around a statement represent $1$ if the statement is true and $0$ otherwise. Using this notation, you could write
        $$
        a = b + 2 - [c gt 0].
        $$






        share|cite|improve this answer











        $endgroup$



        In Concrete Mathematics by Graham, Knuth and Patashnik, the authors use the "Iverson bracket" notation: Square brackets around a statement represent $1$ if the statement is true and $0$ otherwise. Using this notation, you could write
        $$
        a = b + 2 - [c gt 0].
        $$







        share|cite|improve this answer














        share|cite|improve this answer



        share|cite|improve this answer








        edited 10 hours ago

























        answered 11 hours ago









        FredHFredH

        672311




        672311








        • 5




          $begingroup$
          aka en.wikipedia.org/wiki/Iverson_bracket
          $endgroup$
          – qwr
          10 hours ago










        • $begingroup$
          @qwr Thank you! I did not recall the name.
          $endgroup$
          – FredH
          10 hours ago






        • 5




          $begingroup$
          I would find it clearer to write $a = b + 1[c>0] + 2[cle0]$.
          $endgroup$
          – Rahul
          10 hours ago








        • 1




          $begingroup$
          I personally find Iverson brackets less cluttered than indicator functions, so I definitely recommend this notation.
          $endgroup$
          – J. M. is not a mathematician
          5 hours ago






        • 2




          $begingroup$
          Surely this is a unary operator, which works much like for example ! in the C programming language: Input is an arbitrary expression, the result is either 0 or 1 depending on the expression.
          $endgroup$
          – pipe
          2 hours ago
















        • 5




          $begingroup$
          aka en.wikipedia.org/wiki/Iverson_bracket
          $endgroup$
          – qwr
          10 hours ago










        • $begingroup$
          @qwr Thank you! I did not recall the name.
          $endgroup$
          – FredH
          10 hours ago






        • 5




          $begingroup$
          I would find it clearer to write $a = b + 1[c>0] + 2[cle0]$.
          $endgroup$
          – Rahul
          10 hours ago








        • 1




          $begingroup$
          I personally find Iverson brackets less cluttered than indicator functions, so I definitely recommend this notation.
          $endgroup$
          – J. M. is not a mathematician
          5 hours ago






        • 2




          $begingroup$
          Surely this is a unary operator, which works much like for example ! in the C programming language: Input is an arbitrary expression, the result is either 0 or 1 depending on the expression.
          $endgroup$
          – pipe
          2 hours ago










        5




        5




        $begingroup$
        aka en.wikipedia.org/wiki/Iverson_bracket
        $endgroup$
        – qwr
        10 hours ago




        $begingroup$
        aka en.wikipedia.org/wiki/Iverson_bracket
        $endgroup$
        – qwr
        10 hours ago












        $begingroup$
        @qwr Thank you! I did not recall the name.
        $endgroup$
        – FredH
        10 hours ago




        $begingroup$
        @qwr Thank you! I did not recall the name.
        $endgroup$
        – FredH
        10 hours ago




        5




        5




        $begingroup$
        I would find it clearer to write $a = b + 1[c>0] + 2[cle0]$.
        $endgroup$
        – Rahul
        10 hours ago






        $begingroup$
        I would find it clearer to write $a = b + 1[c>0] + 2[cle0]$.
        $endgroup$
        – Rahul
        10 hours ago






        1




        1




        $begingroup$
        I personally find Iverson brackets less cluttered than indicator functions, so I definitely recommend this notation.
        $endgroup$
        – J. M. is not a mathematician
        5 hours ago




        $begingroup$
        I personally find Iverson brackets less cluttered than indicator functions, so I definitely recommend this notation.
        $endgroup$
        – J. M. is not a mathematician
        5 hours ago




        2




        2




        $begingroup$
        Surely this is a unary operator, which works much like for example ! in the C programming language: Input is an arbitrary expression, the result is either 0 or 1 depending on the expression.
        $endgroup$
        – pipe
        2 hours ago






        $begingroup$
        Surely this is a unary operator, which works much like for example ! in the C programming language: Input is an arbitrary expression, the result is either 0 or 1 depending on the expression.
        $endgroup$
        – pipe
        2 hours ago













        19












        $begingroup$

        Using the indicator function notation:$$a=b+1+mathbb{1}_{(-infty, 0]}(c)$$






        share|cite|improve this answer











        $endgroup$













        • $begingroup$
          Indicator is definitely the way to go, since the conditional can define an arbitrary set.
          $endgroup$
          – eyeballfrog
          11 hours ago










        • $begingroup$
          Thank you, that is very elegant. I will definitely try out all of the answers as I often use this in various scenarios.
          $endgroup$
          – dataphile
          11 hours ago






        • 2




          $begingroup$
          I often use - and have seen others use - $mathbb{1}$ ("blackboard bold") to denote the indicator function to distinguish it from the number $1$
          $endgroup$
          – Christopher
          3 hours ago












        • $begingroup$
          The indicator function isn’t a ternary operator, it only has two operands.
          $endgroup$
          – Konrad Rudolph
          2 hours ago


















        19












        $begingroup$

        Using the indicator function notation:$$a=b+1+mathbb{1}_{(-infty, 0]}(c)$$






        share|cite|improve this answer











        $endgroup$













        • $begingroup$
          Indicator is definitely the way to go, since the conditional can define an arbitrary set.
          $endgroup$
          – eyeballfrog
          11 hours ago










        • $begingroup$
          Thank you, that is very elegant. I will definitely try out all of the answers as I often use this in various scenarios.
          $endgroup$
          – dataphile
          11 hours ago






        • 2




          $begingroup$
          I often use - and have seen others use - $mathbb{1}$ ("blackboard bold") to denote the indicator function to distinguish it from the number $1$
          $endgroup$
          – Christopher
          3 hours ago












        • $begingroup$
          The indicator function isn’t a ternary operator, it only has two operands.
          $endgroup$
          – Konrad Rudolph
          2 hours ago
















        19












        19








        19





        $begingroup$

        Using the indicator function notation:$$a=b+1+mathbb{1}_{(-infty, 0]}(c)$$






        share|cite|improve this answer











        $endgroup$



        Using the indicator function notation:$$a=b+1+mathbb{1}_{(-infty, 0]}(c)$$







        share|cite|improve this answer














        share|cite|improve this answer



        share|cite|improve this answer








        edited 3 hours ago

























        answered 11 hours ago









        Siong Thye GohSiong Thye Goh

        102k1467119




        102k1467119












        • $begingroup$
          Indicator is definitely the way to go, since the conditional can define an arbitrary set.
          $endgroup$
          – eyeballfrog
          11 hours ago










        • $begingroup$
          Thank you, that is very elegant. I will definitely try out all of the answers as I often use this in various scenarios.
          $endgroup$
          – dataphile
          11 hours ago






        • 2




          $begingroup$
          I often use - and have seen others use - $mathbb{1}$ ("blackboard bold") to denote the indicator function to distinguish it from the number $1$
          $endgroup$
          – Christopher
          3 hours ago












        • $begingroup$
          The indicator function isn’t a ternary operator, it only has two operands.
          $endgroup$
          – Konrad Rudolph
          2 hours ago




















        • $begingroup$
          Indicator is definitely the way to go, since the conditional can define an arbitrary set.
          $endgroup$
          – eyeballfrog
          11 hours ago










        • $begingroup$
          Thank you, that is very elegant. I will definitely try out all of the answers as I often use this in various scenarios.
          $endgroup$
          – dataphile
          11 hours ago






        • 2




          $begingroup$
          I often use - and have seen others use - $mathbb{1}$ ("blackboard bold") to denote the indicator function to distinguish it from the number $1$
          $endgroup$
          – Christopher
          3 hours ago












        • $begingroup$
          The indicator function isn’t a ternary operator, it only has two operands.
          $endgroup$
          – Konrad Rudolph
          2 hours ago


















        $begingroup$
        Indicator is definitely the way to go, since the conditional can define an arbitrary set.
        $endgroup$
        – eyeballfrog
        11 hours ago




        $begingroup$
        Indicator is definitely the way to go, since the conditional can define an arbitrary set.
        $endgroup$
        – eyeballfrog
        11 hours ago












        $begingroup$
        Thank you, that is very elegant. I will definitely try out all of the answers as I often use this in various scenarios.
        $endgroup$
        – dataphile
        11 hours ago




        $begingroup$
        Thank you, that is very elegant. I will definitely try out all of the answers as I often use this in various scenarios.
        $endgroup$
        – dataphile
        11 hours ago




        2




        2




        $begingroup$
        I often use - and have seen others use - $mathbb{1}$ ("blackboard bold") to denote the indicator function to distinguish it from the number $1$
        $endgroup$
        – Christopher
        3 hours ago






        $begingroup$
        I often use - and have seen others use - $mathbb{1}$ ("blackboard bold") to denote the indicator function to distinguish it from the number $1$
        $endgroup$
        – Christopher
        3 hours ago














        $begingroup$
        The indicator function isn’t a ternary operator, it only has two operands.
        $endgroup$
        – Konrad Rudolph
        2 hours ago






        $begingroup$
        The indicator function isn’t a ternary operator, it only has two operands.
        $endgroup$
        – Konrad Rudolph
        2 hours ago













        7












        $begingroup$

        In math, equations are written in piecewise form by having a curly brace enclose multiple lines; each one with a condition excepting the last which has "otherwise".



        There are a few custom operators that also occasionally make an appearance. E.g. the Heavyside function mentioned by Alex, the Dirac function, and the cyclical operator $delta_{ijk}$ - all of which can be used to emulate conditional behaviour.






        share|cite|improve this answer









        $endgroup$


















          7












          $begingroup$

          In math, equations are written in piecewise form by having a curly brace enclose multiple lines; each one with a condition excepting the last which has "otherwise".



          There are a few custom operators that also occasionally make an appearance. E.g. the Heavyside function mentioned by Alex, the Dirac function, and the cyclical operator $delta_{ijk}$ - all of which can be used to emulate conditional behaviour.






          share|cite|improve this answer









          $endgroup$
















            7












            7








            7





            $begingroup$

            In math, equations are written in piecewise form by having a curly brace enclose multiple lines; each one with a condition excepting the last which has "otherwise".



            There are a few custom operators that also occasionally make an appearance. E.g. the Heavyside function mentioned by Alex, the Dirac function, and the cyclical operator $delta_{ijk}$ - all of which can be used to emulate conditional behaviour.






            share|cite|improve this answer









            $endgroup$



            In math, equations are written in piecewise form by having a curly brace enclose multiple lines; each one with a condition excepting the last which has "otherwise".



            There are a few custom operators that also occasionally make an appearance. E.g. the Heavyside function mentioned by Alex, the Dirac function, and the cyclical operator $delta_{ijk}$ - all of which can be used to emulate conditional behaviour.







            share|cite|improve this answer












            share|cite|improve this answer



            share|cite|improve this answer










            answered 11 hours ago









            Paul ChildsPaul Childs

            3547




            3547























                3












                $begingroup$

                One should realize that operators are just a fancy way of using functions.
                So a ternary operator is a function of 3 variables that is notated in a different way. Is that useful? The answer is mostly not. Also realize that any mathematician is allowed to introduce any notation he feels is illustrative.



                Let's review why we use binary operators at all like in a+b*c . Because parameters and results are of the same type, it makes sense to leave out parentheses and introduce complicated priority rules. Imagine that a b c are numbers and we have a normal + and a peculiar * that results in dragons. Now the expression doesn't make sense (assumming a high priority *), because there is no way to add numbers and dragons. Thusly most ternary operators results in a mess.



                With a proper notation there are examples of ternary operations. For example, there is a special notation for "sum for i from a to b of expression". This takes two boundaries (numbers) and a function from a number of that type that results in another number. (Mathematician, read "element of an addition group" for number.)
                The notation for integration is similarly ternary.

                So in short ternary operators exist, and you can define your own. They are in general accompagnied with a special notation, or they are not helpful.



                Now back to the special case you mention.
                Because truth values are implied in math, an expression like "if a then b else c" makes sense if a represens a truth value like (7<12). The above expression is understood in every mathematical context. However in a context where truth values are not considered a set, (if .. then .. else ..) would not be considered an operator/function, but a textual explanation. A general accepted notation could be useful in math, but I'm not aware there is one. That is probably, because like in the above, informal notations are readily understood.






                share|cite|improve this answer









                $endgroup$


















                  3












                  $begingroup$

                  One should realize that operators are just a fancy way of using functions.
                  So a ternary operator is a function of 3 variables that is notated in a different way. Is that useful? The answer is mostly not. Also realize that any mathematician is allowed to introduce any notation he feels is illustrative.



                  Let's review why we use binary operators at all like in a+b*c . Because parameters and results are of the same type, it makes sense to leave out parentheses and introduce complicated priority rules. Imagine that a b c are numbers and we have a normal + and a peculiar * that results in dragons. Now the expression doesn't make sense (assumming a high priority *), because there is no way to add numbers and dragons. Thusly most ternary operators results in a mess.



                  With a proper notation there are examples of ternary operations. For example, there is a special notation for "sum for i from a to b of expression". This takes two boundaries (numbers) and a function from a number of that type that results in another number. (Mathematician, read "element of an addition group" for number.)
                  The notation for integration is similarly ternary.

                  So in short ternary operators exist, and you can define your own. They are in general accompagnied with a special notation, or they are not helpful.



                  Now back to the special case you mention.
                  Because truth values are implied in math, an expression like "if a then b else c" makes sense if a represens a truth value like (7<12). The above expression is understood in every mathematical context. However in a context where truth values are not considered a set, (if .. then .. else ..) would not be considered an operator/function, but a textual explanation. A general accepted notation could be useful in math, but I'm not aware there is one. That is probably, because like in the above, informal notations are readily understood.






                  share|cite|improve this answer









                  $endgroup$
















                    3












                    3








                    3





                    $begingroup$

                    One should realize that operators are just a fancy way of using functions.
                    So a ternary operator is a function of 3 variables that is notated in a different way. Is that useful? The answer is mostly not. Also realize that any mathematician is allowed to introduce any notation he feels is illustrative.



                    Let's review why we use binary operators at all like in a+b*c . Because parameters and results are of the same type, it makes sense to leave out parentheses and introduce complicated priority rules. Imagine that a b c are numbers and we have a normal + and a peculiar * that results in dragons. Now the expression doesn't make sense (assumming a high priority *), because there is no way to add numbers and dragons. Thusly most ternary operators results in a mess.



                    With a proper notation there are examples of ternary operations. For example, there is a special notation for "sum for i from a to b of expression". This takes two boundaries (numbers) and a function from a number of that type that results in another number. (Mathematician, read "element of an addition group" for number.)
                    The notation for integration is similarly ternary.

                    So in short ternary operators exist, and you can define your own. They are in general accompagnied with a special notation, or they are not helpful.



                    Now back to the special case you mention.
                    Because truth values are implied in math, an expression like "if a then b else c" makes sense if a represens a truth value like (7<12). The above expression is understood in every mathematical context. However in a context where truth values are not considered a set, (if .. then .. else ..) would not be considered an operator/function, but a textual explanation. A general accepted notation could be useful in math, but I'm not aware there is one. That is probably, because like in the above, informal notations are readily understood.






                    share|cite|improve this answer









                    $endgroup$



                    One should realize that operators are just a fancy way of using functions.
                    So a ternary operator is a function of 3 variables that is notated in a different way. Is that useful? The answer is mostly not. Also realize that any mathematician is allowed to introduce any notation he feels is illustrative.



                    Let's review why we use binary operators at all like in a+b*c . Because parameters and results are of the same type, it makes sense to leave out parentheses and introduce complicated priority rules. Imagine that a b c are numbers and we have a normal + and a peculiar * that results in dragons. Now the expression doesn't make sense (assumming a high priority *), because there is no way to add numbers and dragons. Thusly most ternary operators results in a mess.



                    With a proper notation there are examples of ternary operations. For example, there is a special notation for "sum for i from a to b of expression". This takes two boundaries (numbers) and a function from a number of that type that results in another number. (Mathematician, read "element of an addition group" for number.)
                    The notation for integration is similarly ternary.

                    So in short ternary operators exist, and you can define your own. They are in general accompagnied with a special notation, or they are not helpful.



                    Now back to the special case you mention.
                    Because truth values are implied in math, an expression like "if a then b else c" makes sense if a represens a truth value like (7<12). The above expression is understood in every mathematical context. However in a context where truth values are not considered a set, (if .. then .. else ..) would not be considered an operator/function, but a textual explanation. A general accepted notation could be useful in math, but I'm not aware there is one. That is probably, because like in the above, informal notations are readily understood.







                    share|cite|improve this answer












                    share|cite|improve this answer



                    share|cite|improve this answer










                    answered 7 hours ago









                    Albert van der HorstAlbert van der Horst

                    18115




                    18115























                        0












                        $begingroup$

                        There are several types of triple product on vectors — though those are usually notated with a combination of binary operators, not a single ternary one.



                        (And they're not ternary conditional operators, which is what the question may be intending.)






                        share|cite|improve this answer








                        New contributor




                        gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                        Check out our Code of Conduct.






                        $endgroup$


















                          0












                          $begingroup$

                          There are several types of triple product on vectors — though those are usually notated with a combination of binary operators, not a single ternary one.



                          (And they're not ternary conditional operators, which is what the question may be intending.)






                          share|cite|improve this answer








                          New contributor




                          gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.






                          $endgroup$
















                            0












                            0








                            0





                            $begingroup$

                            There are several types of triple product on vectors — though those are usually notated with a combination of binary operators, not a single ternary one.



                            (And they're not ternary conditional operators, which is what the question may be intending.)






                            share|cite|improve this answer








                            New contributor




                            gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                            Check out our Code of Conduct.






                            $endgroup$



                            There are several types of triple product on vectors — though those are usually notated with a combination of binary operators, not a single ternary one.



                            (And they're not ternary conditional operators, which is what the question may be intending.)







                            share|cite|improve this answer








                            New contributor




                            gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                            Check out our Code of Conduct.









                            share|cite|improve this answer



                            share|cite|improve this answer






                            New contributor




                            gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                            Check out our Code of Conduct.









                            answered 2 hours ago









                            giddsgidds

                            1011




                            1011




                            New contributor




                            gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                            Check out our Code of Conduct.





                            New contributor





                            gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                            Check out our Code of Conduct.






                            gidds is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                            Check out our Code of Conduct.























                                0












                                $begingroup$

                                There are many good answers that give notation for, “if this condition holds, then 1, else 0.” This corresponds to an even simpler expression in C;(x>1) is equivalent to (x>1 ? 1 : 0).



                                It’s worth noting that the ternary operator is more general than that. If the arguments are elements of a ring, you could express c ? a : b with (using Iverson-bracket notation) $(a-b) cdot [c] + b$, but not otherwise. (And compilers frequently use this trick, in a Boolean ring, to compile conditionals without needing to execute a branch instruction.) In a C program, evaluating the expressions $a$ or $b$ might have side-effects, such as deleting a file or printing a message to the screen. In a mathematical function, this isn’t something you would worry about, and a programming language where this is impossible is called functional.



                                Ross Millikan gave the most standard notation, a cases block. The closest equivalent in mathematical computer science is the if-then-else function of Lambda Calculus.






                                share|cite|improve this answer











                                $endgroup$













                                • $begingroup$
                                  "in C;(x>1) is equivalent to (x>1 ? 1 : 0)" Not exactly. Rather, C considers any nonzero value as equivalent from a truthiness perspective. So there is no difference between an integer expression taking the value of -1, 1, 42 or INT_MAX when that expression is treated as a boolean rvalue. In C, the one special integer value, when treated as a boolean, is 0, representing false. That said, if someone actually used (x>1) as a non-boolean expression and I noticed it, I would likely at least briefly try to find some heavy physical object that could be applied at high speed to their keyboard.
                                  $endgroup$
                                  – a CVn
                                  1 hour ago










                                • $begingroup$
                                  @aCVn The C11 standard states, “Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.” Similarly for equality and inequality, “Each of the operators yields 1 if the specified relation is true and 0 if it is false.”
                                  $endgroup$
                                  – Davislor
                                  51 mins ago












                                • $begingroup$
                                  @aCVn What you wrote is true, but the relational operators in C will only return the values 1 or 0.
                                  $endgroup$
                                  – Davislor
                                  38 mins ago
















                                0












                                $begingroup$

                                There are many good answers that give notation for, “if this condition holds, then 1, else 0.” This corresponds to an even simpler expression in C;(x>1) is equivalent to (x>1 ? 1 : 0).



                                It’s worth noting that the ternary operator is more general than that. If the arguments are elements of a ring, you could express c ? a : b with (using Iverson-bracket notation) $(a-b) cdot [c] + b$, but not otherwise. (And compilers frequently use this trick, in a Boolean ring, to compile conditionals without needing to execute a branch instruction.) In a C program, evaluating the expressions $a$ or $b$ might have side-effects, such as deleting a file or printing a message to the screen. In a mathematical function, this isn’t something you would worry about, and a programming language where this is impossible is called functional.



                                Ross Millikan gave the most standard notation, a cases block. The closest equivalent in mathematical computer science is the if-then-else function of Lambda Calculus.






                                share|cite|improve this answer











                                $endgroup$













                                • $begingroup$
                                  "in C;(x>1) is equivalent to (x>1 ? 1 : 0)" Not exactly. Rather, C considers any nonzero value as equivalent from a truthiness perspective. So there is no difference between an integer expression taking the value of -1, 1, 42 or INT_MAX when that expression is treated as a boolean rvalue. In C, the one special integer value, when treated as a boolean, is 0, representing false. That said, if someone actually used (x>1) as a non-boolean expression and I noticed it, I would likely at least briefly try to find some heavy physical object that could be applied at high speed to their keyboard.
                                  $endgroup$
                                  – a CVn
                                  1 hour ago










                                • $begingroup$
                                  @aCVn The C11 standard states, “Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.” Similarly for equality and inequality, “Each of the operators yields 1 if the specified relation is true and 0 if it is false.”
                                  $endgroup$
                                  – Davislor
                                  51 mins ago












                                • $begingroup$
                                  @aCVn What you wrote is true, but the relational operators in C will only return the values 1 or 0.
                                  $endgroup$
                                  – Davislor
                                  38 mins ago














                                0












                                0








                                0





                                $begingroup$

                                There are many good answers that give notation for, “if this condition holds, then 1, else 0.” This corresponds to an even simpler expression in C;(x>1) is equivalent to (x>1 ? 1 : 0).



                                It’s worth noting that the ternary operator is more general than that. If the arguments are elements of a ring, you could express c ? a : b with (using Iverson-bracket notation) $(a-b) cdot [c] + b$, but not otherwise. (And compilers frequently use this trick, in a Boolean ring, to compile conditionals without needing to execute a branch instruction.) In a C program, evaluating the expressions $a$ or $b$ might have side-effects, such as deleting a file or printing a message to the screen. In a mathematical function, this isn’t something you would worry about, and a programming language where this is impossible is called functional.



                                Ross Millikan gave the most standard notation, a cases block. The closest equivalent in mathematical computer science is the if-then-else function of Lambda Calculus.






                                share|cite|improve this answer











                                $endgroup$



                                There are many good answers that give notation for, “if this condition holds, then 1, else 0.” This corresponds to an even simpler expression in C;(x>1) is equivalent to (x>1 ? 1 : 0).



                                It’s worth noting that the ternary operator is more general than that. If the arguments are elements of a ring, you could express c ? a : b with (using Iverson-bracket notation) $(a-b) cdot [c] + b$, but not otherwise. (And compilers frequently use this trick, in a Boolean ring, to compile conditionals without needing to execute a branch instruction.) In a C program, evaluating the expressions $a$ or $b$ might have side-effects, such as deleting a file or printing a message to the screen. In a mathematical function, this isn’t something you would worry about, and a programming language where this is impossible is called functional.



                                Ross Millikan gave the most standard notation, a cases block. The closest equivalent in mathematical computer science is the if-then-else function of Lambda Calculus.







                                share|cite|improve this answer














                                share|cite|improve this answer



                                share|cite|improve this answer








                                edited 41 mins ago

























                                answered 4 hours ago









                                DavislorDavislor

                                2,350715




                                2,350715












                                • $begingroup$
                                  "in C;(x>1) is equivalent to (x>1 ? 1 : 0)" Not exactly. Rather, C considers any nonzero value as equivalent from a truthiness perspective. So there is no difference between an integer expression taking the value of -1, 1, 42 or INT_MAX when that expression is treated as a boolean rvalue. In C, the one special integer value, when treated as a boolean, is 0, representing false. That said, if someone actually used (x>1) as a non-boolean expression and I noticed it, I would likely at least briefly try to find some heavy physical object that could be applied at high speed to their keyboard.
                                  $endgroup$
                                  – a CVn
                                  1 hour ago










                                • $begingroup$
                                  @aCVn The C11 standard states, “Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.” Similarly for equality and inequality, “Each of the operators yields 1 if the specified relation is true and 0 if it is false.”
                                  $endgroup$
                                  – Davislor
                                  51 mins ago












                                • $begingroup$
                                  @aCVn What you wrote is true, but the relational operators in C will only return the values 1 or 0.
                                  $endgroup$
                                  – Davislor
                                  38 mins ago


















                                • $begingroup$
                                  "in C;(x>1) is equivalent to (x>1 ? 1 : 0)" Not exactly. Rather, C considers any nonzero value as equivalent from a truthiness perspective. So there is no difference between an integer expression taking the value of -1, 1, 42 or INT_MAX when that expression is treated as a boolean rvalue. In C, the one special integer value, when treated as a boolean, is 0, representing false. That said, if someone actually used (x>1) as a non-boolean expression and I noticed it, I would likely at least briefly try to find some heavy physical object that could be applied at high speed to their keyboard.
                                  $endgroup$
                                  – a CVn
                                  1 hour ago










                                • $begingroup$
                                  @aCVn The C11 standard states, “Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.” Similarly for equality and inequality, “Each of the operators yields 1 if the specified relation is true and 0 if it is false.”
                                  $endgroup$
                                  – Davislor
                                  51 mins ago












                                • $begingroup$
                                  @aCVn What you wrote is true, but the relational operators in C will only return the values 1 or 0.
                                  $endgroup$
                                  – Davislor
                                  38 mins ago
















                                $begingroup$
                                "in C;(x>1) is equivalent to (x>1 ? 1 : 0)" Not exactly. Rather, C considers any nonzero value as equivalent from a truthiness perspective. So there is no difference between an integer expression taking the value of -1, 1, 42 or INT_MAX when that expression is treated as a boolean rvalue. In C, the one special integer value, when treated as a boolean, is 0, representing false. That said, if someone actually used (x>1) as a non-boolean expression and I noticed it, I would likely at least briefly try to find some heavy physical object that could be applied at high speed to their keyboard.
                                $endgroup$
                                – a CVn
                                1 hour ago




                                $begingroup$
                                "in C;(x>1) is equivalent to (x>1 ? 1 : 0)" Not exactly. Rather, C considers any nonzero value as equivalent from a truthiness perspective. So there is no difference between an integer expression taking the value of -1, 1, 42 or INT_MAX when that expression is treated as a boolean rvalue. In C, the one special integer value, when treated as a boolean, is 0, representing false. That said, if someone actually used (x>1) as a non-boolean expression and I noticed it, I would likely at least briefly try to find some heavy physical object that could be applied at high speed to their keyboard.
                                $endgroup$
                                – a CVn
                                1 hour ago












                                $begingroup$
                                @aCVn The C11 standard states, “Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.” Similarly for equality and inequality, “Each of the operators yields 1 if the specified relation is true and 0 if it is false.”
                                $endgroup$
                                – Davislor
                                51 mins ago






                                $begingroup$
                                @aCVn The C11 standard states, “Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.” Similarly for equality and inequality, “Each of the operators yields 1 if the specified relation is true and 0 if it is false.”
                                $endgroup$
                                – Davislor
                                51 mins ago














                                $begingroup$
                                @aCVn What you wrote is true, but the relational operators in C will only return the values 1 or 0.
                                $endgroup$
                                – Davislor
                                38 mins ago




                                $begingroup$
                                @aCVn What you wrote is true, but the relational operators in C will only return the values 1 or 0.
                                $endgroup$
                                – Davislor
                                38 mins ago


















                                draft saved

                                draft discarded




















































                                Thanks for contributing an answer to Mathematics Stack Exchange!


                                • Please be sure to answer the question. Provide details and share your research!

                                But avoid



                                • Asking for help, clarification, or responding to other answers.

                                • Making statements based on opinion; back them up with references or personal experience.


                                Use MathJax to format equations. MathJax reference.


                                To learn more, see our tips on writing great answers.




                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function () {
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3135798%2fis-there-a-math-equivalent-to-the-conditional-ternary-operator%23new-answer', 'question_page');
                                }
                                );

                                Post as a guest















                                Required, but never shown





















































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown

































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown







                                Popular posts from this blog

                                117736 Шеррод Примітки | Див. також | Посилання | Навігаційне...

                                As a Security Precaution, the user account has been locked The Next CEO of Stack OverflowMS...

                                Маріан Котлеба Зміст Життєпис | Політичні погляди |...