@@ -865,6 +865,8 @@ defmodule Complex do
865865 def ln ( :infinity ) , do: :infinity
866866 def ln ( :neg_infinity ) , do: new ( :infinity , :math . pi ( ) )
867867 def ln ( :nan ) , do: :nan
868+ def ln ( n ) when is_number ( n ) and n == 0 , do: :neg_infinity
869+ def ln ( n ) when is_number ( n ) and n < 0 , do: :nan
868870 def ln ( n ) when is_number ( n ) , do: :math . log ( n )
869871
870872 def ln ( z = % Complex { } ) do
@@ -891,6 +893,8 @@ defmodule Complex do
891893 def log10 ( :infinity ) , do: :infinity
892894 def log10 ( :neg_infinity ) , do: divide ( ln ( :neg_infinity ) , :math . log ( 10 ) )
893895 def log10 ( :nan ) , do: :nan
896+ def log10 ( n ) when is_number ( n ) and n == 0 , do: :neg_infinity
897+ def log10 ( n ) when is_number ( n ) and n < 0 , do: :nan
894898
895899 def log10 ( n ) when is_number ( n ) , do: :math . log10 ( n )
896900
@@ -918,6 +922,8 @@ defmodule Complex do
918922 def log2 ( :infinity ) , do: :infinity
919923 def log2 ( :neg_infinity ) , do: divide ( ln ( :neg_infinity ) , :math . log ( 2 ) )
920924 def log2 ( :nan ) , do: :nan
925+ def log2 ( n ) when is_number ( n ) and n == 0 , do: :neg_infinity
926+ def log2 ( n ) when is_number ( n ) and n < 0 , do: :nan
921927
922928 def log2 ( n ) when is_number ( n ) , do: :math . log2 ( n )
923929
0 commit comments