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.