Thanks Jose! I didn't know about Integer.gcd/2

Although *gcd* was an example, I assume that any proposal related with
Maths must be added on Integer / Float, etc modules... Is that the way to
add "number-crunch" functions?

This is what I had in my head:

defmodule Math do
def pow(base, exp), do: :math.pow(base, exp)
# All the others :math functions...
# Elixir's own functions
def gcd(a, 0), do: a
def gcd(a, b), do: gcd(b, rem(a, b))
end

 I think I got your point now...

Thank you all, as always.



El jue, 23 feb 2023 a las 20:11, José Valim (<jose.va...@dashbit.co>)
escribió:

> FWIW, Elixir already has a GCD: Integer.gcd/2
> <https://hexdocs.pm/elixir/Integer.html#gcd/2>.
>
> On Thu, Feb 23, 2023 at 6:32 PM 'Andrey Yugai' via elixir-lang-core <
> elixir-lang-core@googlegroups.com> wrote:
>
>> There's not so much elixir can do to improve erlang's :math, it's
>> already implemented
>> <https://github.com/erlang/otp/blob/master/lib/stdlib/src/math.erl>with
>> NIFs. Rewriting it in pure elixir/erlang would only degrade performance.
>>
>> Other question is why doesn't :math have more functions? BEAM wasn't
>> built for the purpose of number crunching - there's plenty info about slow
>> math in erlang. Although it had improved recently, I'd recommend to look
>> into elixir nx or similar tools. If I understand correctly, they
>> effectively bypass BEAM bytecode/NIFs shenanigans, and compile to native
>> code with vectorization and whatnot.
>>
>> If erlang would add something unholy to its stdlib, you'll be free to
>> ignore it, and keep using your righteous implementation :)
>>
>> ------- Original Message -------
>> On Thursday, February 23rd, 2023 at 22:23, Julian Somoza <
>> julian.som...@gmail.com> wrote:
>>
>> Hi, I would like to understand why or what would be the problem with
>> having our own Math module on Elixir. I know that some people think that
>> has no sense to duplicate modules that already exist in Erlang but... Where
>> is the "sovereignty"?
>>
>> If I would like to add a new math function, why do I need to ask another
>> language (Erlang) to be able to have it in Elixir. Elixir could have a Math
>> module implementing/bypassing :erlang base function, and adding extra
>> functions "over" without dependency...
>>
>> For example, if I would like to propose a GCD function for :math and the
>> community approve the de proposal, I would need to go to another community,
>> ask there, program it in erlang (learn a bit of erlang of course), wait for
>> the release, update and update the erlang version on my servers...
>>
>> On the other hand, what happen if Erlang add things to the core which we
>> don't like to have? We are always obliged to accept what comes from above?
>> Having our own Math module we could decide to not have GCD function if in
>> Elixir we think that is not necessary or just don't like to have it.
>>
>> Just sharing my thought, I hope I don't offend anyone, and wish to read
>> another point of view.
>>
>> Best,
>> Julian.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to elixir-lang-core+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elixir-lang-core/b66261a7-9f17-4c10-b2d8-0f77b0c338ben%40googlegroups.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/b66261a7-9f17-4c10-b2d8-0f77b0c338ben%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to elixir-lang-core+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elixir-lang-core/HYb5YF6P5tzJFgwRetwx29BnzhQhx6qysrldv8ST-TaQ5hGTHkFWOGuQJevlHOxgCYgJ7XQX_NkXsi0ZNMbtezuS6N7g5u3aSBpJhrmjRWo%3D%40pm.me
>> <https://groups.google.com/d/msgid/elixir-lang-core/HYb5YF6P5tzJFgwRetwx29BnzhQhx6qysrldv8ST-TaQ5hGTHkFWOGuQJevlHOxgCYgJ7XQX_NkXsi0ZNMbtezuS6N7g5u3aSBpJhrmjRWo%3D%40pm.me?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to elixir-lang-core+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4J2EAfyP_3_94tjKoNDjNJePB6Nwijea7oz9z8L9tbkjA%40mail.gmail.com
> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4J2EAfyP_3_94tjKoNDjNJePB6Nwijea7oz9z8L9tbkjA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CACFi_YMjM3_rLrj_Zk%3DuH10E8HuNoAN3hGt64M%2BX6i0jnR1PEA%40mail.gmail.com.

Reply via email to