<div dir="ltr">Oh and also machine learning. Search for sign or signum and machine learning, you&#39;ll find a lot of results.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 23, 2016 at 1:26 AM, Adam Nemecek <span dir="ltr">&lt;<a href="mailto:adamnemecek@gmail.com" target="_blank">adamnemecek@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">It&#39;s not for branching based on the value, it&#39;s for calculating mathematical functions with the sign retrieved from the value. So for the same reason, no it should not be an enum. It should be the same type as the type it&#39;s called on. It&#39;s that way in Haskell as well <div><br></div><div><a href="http://hackage.haskell.org/package/base-4.9.0.0/docs/Prelude.html#v:signum" target="_blank">http://hackage.haskell.org/package/base-4.9.0.0/docs/Prelude.html#v:signum</a><br></div><div><br></div><div>This function is basically in every language </div><div><br></div><div><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign" target="_blank">https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign</a></div><div><br></div><div><a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#signum(double)" target="_blank">https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#signum(double)</a><br><div><br></div><div><a href="http://en.cppreference.com/w/cpp/numeric/math/signbit" target="_blank">http://en.cppreference.com/w/cpp/numeric/math/signbit</a><br></div></div><div><br></div><div><a href="https://golang.org/pkg/math/#Signbit" target="_blank">https://golang.org/pkg/math/#Signbit</a><br></div><div><br></div><div><a href="https://msdn.microsoft.com/en-us/library/system.math.sign(v=vs.110).aspx" target="_blank">https://msdn.microsoft.com/en-us/library/system.math.sign(v=vs.110).aspx</a><br></div><div><br></div><div>It&#39;s used a bunch e.g. in dsp but also in mathematics</div><div><br></div><div><a href="https://www.quora.com/What-are-the-real-life-applications-of-Signum-function" target="_blank">https://www.quora.com/What-are-the-real-life-applications-of-Signum-function</a><br></div><div><br></div><div>This quote somewhat summarizes it &quot;So signum shows up in many places where discontinuous jumps must be written in closed form.&quot;</div><div><br></div><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 23, 2016 at 12:29 AM, Haravikk <span dir="ltr">&lt;<a href="mailto:swift-evolution@haravikk.me" target="_blank">swift-evolution@haravikk.me</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Could you give an example of this method’s usage? Surely your value is either positive, negative or zero already, so this method doesn’t return anything more useful.</div><div><br></div><div>In other words, anywhere that I might do this:</div><div><br></div><div><font face="Monaco"><span style="white-space:pre-wrap">        </span>if myValue.sign &gt; 0 { … }</font></div><div><br></div><div>I could just as easily do:</div><div><br></div><div><font face="Monaco"><span style="white-space:pre-wrap">        </span>if myValue &gt; 0 { … }</font></div><div><br></div><div>To the same end result surely? Unless I’m missing something it seems redundant.</div><div><br></div><div>If there is a use-case for this, would it make more sense to have the return type as an enum with cases for Positive, Negative and Zero?</div><br><div><blockquote type="cite"><div><div><div>On 22 May 2016, at 08:07, Adam Nemecek via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br></div></div><div><div><div><div dir="ltr"><div>Howdy,</div><div>I think that the SignedNumberType should implement a method called sign that will return -1 for negative numbers, 0 for 0 and 1 for positive numbers. This is similar to the signum method in e.g. Java and similarly called methods in other languages.</div><div><br></div><div>The implementation is fairly straight forward</div><div><br></div><div>extension SignedNumberType {</div><div>  var sign: Self {</div><div>    if self == 0 {</div><div>      return 0</div><div>    }</div><div>    else if self &gt; 0 {</div><div>      return 1</div><div>    }</div><div>    return -1</div><div>  }</div><div>} </div><div><br></div><div>I was trying to implement is without branching by doing (x &gt; 0) - (x &lt; 0) but I couldn&#39;t get the types right so I&#39;m open to suggestions.</div><div><br></div><div><br></div></div></div></div><span>
_______________________________________________<br>swift-evolution mailing list<br><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></span></div></blockquote></div><br></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>