making either of the coponents of the first #c() float avoids that bug but gets a different one:
===
(log #c(0e0 1) #c(0 -1))
#C(-0.0 -0.0)
(log #c(0 1e0) #c(0 -1))
#C(-0.0 -0.0) ===
but leaving the first #c() rational and making the second float does not avoid it.
otoh, all float gets the correct results:
===
(log #c(0.0 1.0) #c(0.0 -1.0))
#C(-1.0 0.0)
(log #c(0l0 1l0) #c(0l0 -1l0))
#C(-1.0l0 0.0l0) ===
-JimC