Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/elixir/lib/calendar/iso.ex
Original file line number Diff line number Diff line change
Expand Up @@ -973,7 +973,7 @@ defmodule Calendar.ISO do

defp div_rem(int1, int2) do
div = div(int1, int2)
rem = int1 - div * int2
rem = rem(int1, int2)

if rem >= 0 do
{div, rem}
Expand Down Expand Up @@ -1692,8 +1692,8 @@ defmodule Calendar.ISO do
def offset_to_iodata(utc, std, _zone, format) do
total = utc + std
second = abs(total)
minute = second |> rem(3600) |> div(60)
hour = div(second, 3600)
minute = second |> rem(3600) |> div(60)
format_offset(total, hour, minute, format)
end

Expand Down
2 changes: 1 addition & 1 deletion lib/elixir/lib/calendar/naive_datetime.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1130,7 +1130,7 @@ defmodule NaiveDateTime do

defp div_rem(int1, int2) do
div = div(int1, int2)
rem = int1 - div * int2
rem = rem(int1, int2)

if rem >= 0 do
{div, rem}
Expand Down
6 changes: 4 additions & 2 deletions lib/elixir/lib/file/stream.ex
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,10 @@ defmodule File.Stream do
bom_offset = count_raw_bom(stream, modes)
offset = get_read_offset(modes)
size = max(size - bom_offset - offset, 0)
remainder = if rem(size, bytes) == 0, do: 0, else: 1
{:ok, div(size, bytes) + remainder}
div = div(size, bytes)
rem = rem(size, bytes)
remainder = if rem == 0, do: 0, else: 1
{:ok, div + remainder}

{:error, reason} ->
raise File.Error, reason: reason, action: "stream", path: path
Expand Down
3 changes: 2 additions & 1 deletion lib/elixir/lib/float.ex
Original file line number Diff line number Diff line change
Expand Up @@ -501,6 +501,7 @@ defmodule Float do
# on a 64-bit BEAM.
numerator = rounded_int <<< (1077 - exp)
quotient = div(numerator, decimal_scale)
remainder = rem(numerator, decimal_scale)
significand = quotient >>> 2

guard_bits = quotient &&& 3
Expand All @@ -512,7 +513,7 @@ defmodule Float do
guard_bits > 2 -> significand + 1
guard_bits < 2 -> significand
(significand &&& 1) == 1 -> significand + 1
rem(numerator, decimal_scale) != 0 -> significand + 1
remainder != 0 -> significand + 1
true -> significand
end

Expand Down
20 changes: 13 additions & 7 deletions lib/elixir/lib/integer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -204,10 +204,13 @@ defmodule Integer do
@doc since: "1.4.0"
@spec floor_div(integer, neg_integer | pos_integer) :: integer
def floor_div(dividend, divisor) do
if :erlang.xor(dividend < 0, divisor < 0) and rem(dividend, divisor) != 0 do
div(dividend, divisor) - 1
div = div(dividend, divisor)
rem = rem(dividend, divisor)

if :erlang.xor(dividend < 0, divisor < 0) and rem != 0 do
div - 1
else
div(dividend, divisor)
div
end
end

Expand All @@ -233,10 +236,13 @@ defmodule Integer do
@doc since: "1.20.0"
@spec ceil_div(integer, neg_integer | pos_integer) :: integer
def ceil_div(dividend, divisor) do
if not :erlang.xor(dividend < 0, divisor < 0) and rem(dividend, divisor) != 0 do
div(dividend, divisor) + 1
div = div(dividend, divisor)
rem = rem(dividend, divisor)

if not :erlang.xor(dividend < 0, divisor < 0) and rem != 0 do
div + 1
else
div(dividend, divisor)
div
end
end

Expand Down Expand Up @@ -557,7 +563,7 @@ defmodule Integer do
defp extended_gcd(r1, r0, s1, s0, t1, t0) do
div = div(r0, r1)

case r0 - div * r1 do
case rem(r0, r1) do
0 when r1 > 0 -> {r1, s1, t1}
0 when r1 < 0 -> {-r1, -s1, -t1}
r2 -> extended_gcd(r2, r1, s0 - div * s1, s1, t0 - div * t1, t1)
Expand Down
9 changes: 5 additions & 4 deletions lib/elixir/lib/string.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1558,14 +1558,15 @@ defmodule String do
defp build_filler(0, _source, _padding, _size, filler), do: filler

defp build_filler(count, source, [], size, filler) do
rem_filler =
rem(count, size)
|> build_filler(source, source, 0, [])
div = div(count, size)
rem = rem(count, size)

rem_filler = build_filler(rem, source, source, 0, [])

filler =
filler
|> IO.iodata_to_binary()
|> duplicate(div(count, size) + 1)
|> duplicate(div + 1)

[filler | rem_filler]
end
Expand Down