30 lines
815 B
Elixir
30 lines
815 B
Elixir
defmodule Squares do
|
|
@moduledoc """
|
|
Calculate sum of squares, square of sum, difference between two sums from 1 to a given end number.
|
|
"""
|
|
|
|
@doc """
|
|
Calculate sum of squares from 1 to a given end number.
|
|
"""
|
|
@spec sum_of_squares(pos_integer) :: pos_integer
|
|
def sum_of_squares(number) do
|
|
div(number * (number + 1) * (2 * number + 1), 6)
|
|
end
|
|
|
|
@doc """
|
|
Calculate square of sum from 1 to a given end number.
|
|
"""
|
|
@spec square_of_sum(pos_integer) :: pos_integer
|
|
def square_of_sum(number) do
|
|
div(number * (number + 1), 2) ** 2
|
|
end
|
|
|
|
@doc """
|
|
Calculate difference between sum of squares and square of sum from 1 to a given end number.
|
|
"""
|
|
@spec difference(pos_integer) :: pos_integer
|
|
def difference(number) do
|
|
abs(square_of_sum(number) - sum_of_squares(number))
|
|
end
|
|
end
|