From: mail@... Date: 2014-11-10T22:33:43+00:00 Subject: [ruby-core:66179] [ruby-trunk - Feature #10255] Math.log: check domain of base argument Issue #10255 has been updated by gogo tanaka. Associated revision [10474](https://bugs.ruby-lang.org/issues/10474) ---------------------------------------- Feature #10255: Math.log: check domain of base argument https://bugs.ruby-lang.org/issues/10255#change-49878 * Author: gogo tanaka * Status: Open * Priority: Normal * Assignee: * Category: math * Target version: ---------------------------------------- I suppose Math.log with base 0 or 1 is undefinable or has no meaning, so I think it should be raise `Math::DomainError` It is helpful to prevent unnecessary concern or misunderstand. Yes I know there are many controversial issue about that, specially treating Math.log(0.0, 0.0), Math.log(1.0, 0.0) and Math.log(1.0, 1.0). Even if there are some reason it had better return value, I suppose `Math.log(2.0,1.0)` should not be `Infinity` and `Math.log(1.0, 0.0)` should not be `-0.0`. In terms of `raises Math::DomainError instead of returning NaN if the base is less than 0` at the (https://bugs.ruby-lang.org/issues/9797) , this PATCH make sense. But please feel free to point out my unsatisfactory points. (Actually this is first time to write c-lang thoroughly) Thank you. gogo. Before ``` # For all 0 <= n < 1 Math.log(n, 1.0) => -Infinity Math.log(1.0, 1.0) => NaN # For all n > 1 Math.log(n, 1.0) => Infinity Math.log(0.0,0.0) => NaN # For all 0 < n < 1 Math.log(n, 0.0) => 0.0 # For all n >= 1 Math.log(n, 0.0) => - 0.0 ``` After ``` # For all n >= 0. Actually for all n <- R (a real number) because of checking domain of first argument Math.log(n, 1.0) Math::DomainError: Numerical argument is out of domain - ���log��� Math.log(n, 0.0) Math::DomainError: Numerical argument is out of domain - ���log��� ``` ---Files-------------------------------- test_math.rb_ Add tests for Math.log.PATCH (1.06 KB) NEWS_ Update for Math.log.PATCH (564 Bytes) math.c_ Math.log with base 0 or 1 should raise DomainError.PATCH (502 Bytes) update_rdoc_for_Math.log.PATCH (721 Bytes) -- https://bugs.ruby-lang.org/